LIFX control node for Node-RED
This node depends on lifxjs library version 0.2.1, which should be compatible with the latest versions of LIFX firmware (1.5 was tested).
If you use older versions of firmware (probably before 1.2), use version 0.2.x of this package or v0.2 branch.
You can install latest release from npm. In your Node-RED directory run:
npm install node-red-contrib-lifx
Alternatively you can clone repository into
nodes/ directory and install npm dependencies manually:
cd path/to/node-red/ cd nodes git clone https://github.com/jnv/node-red-contrib-lifx cd node-red-contrib-lifx npm install
Once you restart Node-RED server, there should be a lifx node available in the nodes palette under output category.
On every received message node sends commands to all LIFX light bulbs.
Initial configuration can be set through node's configuration options, including
debug mode for underlying lifxjs library, which dumps network communication. Node will send initial configuration to light bulbs each time the graph is deployed.
Both initial configuration and message works with the following parameters, which are passed to lifxjs library:
on(bool) – whether the light should be on, or off;
hue(uint16) – primary color of light;
saturation(uint16) – “how much of color” to use, generally
0x0000for white and
0xFFFFfor full color;
luminance(uint16) – light intensity;
whiteColor(uint16) – color temperature (?);
fadeTime(uint32) – how quickly the new state should be changed,
0causes an immediate change, maximum is
Numbers can be passed as strings too.
Node expects a message with the following structure:
payload:on: truehue: 0xCC15// etc…
msg.payload is an object with none, some, or all parameters. Input parameters are stored and merged with previously passed parameters (or defaults) and then sent to light bulbs.
Therefore you can change only one parameter in the payload and the rest will be remembered and resent.
On received message node sends a payload with its current stored state. E.g.:
payload:on: truehue: '0xCC15'saturation: '0xFFFF'luminance: '0x8000'whiteColor: ''fadeTime: '0x0513'
- Expose more LIFX functions as standalone nodes (e.g. waveform, relative and absolute dim)
- Allow targeting of individual bulbs instead of the whole mesh (i.e. through configuration node?)
- Connection sharing for multiple nodes (especially on close; there'll probably have to be a global connection singleton)