Blinker is a server for LED projects and Blinken-houses that are driven by Blinkenlights network streams.
Blinker is based on different modules, which can be connected via streams. Several types of modules are available, for example a movie player, a network stream sender, modules to mix and separate streams.
As Blinker uses BlinkenLib to perform the low-level operations on Blinken movies and Blinken streams, BlinkenLib has to be installed first.
Go to the src
directory and type make
.
This should compile Blinker and produce a binary Blinker
in this directory.
Start Blinker using the example configuration directory using
./Blinker ../example_cfg
.
You should see a small test movie appearing on standard output
(printed there by a printer module).
Other movies are sent as MCUF streams over UDPv4, one stream
is sent to 127.0.0.1:2323
.
Every stream is identified by a name and works like a TV program. A source creates the content and uses the stream to distribute it to its receivers. A single stream can have any number of receivers, they all receive the same content. Usually, there should be only one provider of content for a single stream. If multiple parties send video frames to the stream, the frames are mixed, which is most likely not what you want.
Some modules can react to events and/or send events to other modules.
Suche events are delivered over so-called operator connections.
A module can caonnect to another module listen for incoming operator
connections.
If this connection is accepted, both modules can exchange events over
the connection until one of the modules choses to close the connection.
In the context of controlling Blinkenlights style displays over a phone
connections, events can be keys pressed on the phone or requests to play
a certain sound.
The configuration of blinker is not stored in a single file, but in a directory structure, reflecting the inner structure of Blinker's modules. This way, every module has got its own configuration directory containing single files each containing one simple setting. It the module has some internel structure, those config setting files are organized in a directory structure underneath the module's configuration directory.
The main config directory contains a directory for each module
class, e.g. players
for movie player modules.
Inside, there is an arbitrary number of subdirectories, one
for each instantance of the player module.
E.g. the players/stereoscope
directory in the example
configuration (example_cfg
directory in the top level)
contains the configuration of the movie player for Blinkenlights
stereoscope movies.
Reconfiguration can happen at runtime by just changing the configuration
directory.
Blinker will detect those changes and adapt its operation to the new
configuration without restart.
Sometimes, especially after an invalid configuration has been seen by
Blinker, changes are not automatically detected by Blinker.
In this case, it is neccessary to touch
the parent
directory containing the setting file to make Blinker aware of
the reconfiguration.
(Solving this issue is planned.)
The following module types are available for instantiation:
Blinker
Copyright 2011-2019 Stefan Schuermans <stefan@blinkenarea.org>
Copyleft GNU public license - http://www.gnu.org/copyleft/gpl.html
a blinkenarea.org project