A (Hopefully) Better NodeJS API Wrapper For LIFX Lightbulbs.
This software is not an official LIFX product and I am not related to LIFX in any way shape or form. Do not blame me if something breaks.
Make sure to checkout the documentation for the official API at https://api.developer.lifx.com/docs/.
NOTE: I still have not implemented the full API yet, but I'm working on it.
const lifx = require('lifx-zero');
lifx.setToken('cf7348414176e9539b0678ab8c77b2d3c27a8a062c00094b325ce054dIAMFAKE');
//List all of your lights in JSON
var list = lifx.list();
list.then(function(data){
console.log(data);
})Using GIT
git clone https://github.com/matdombrock/lifx-zero.gitUsing NPM
# stable
npm install lifx-zero
# latest
npm install @mdombrock/lifx-zeroTo get started, just require the API wrapper and set your Auth Token.
From GIT
const lifx = require('./lifxWrapper');
lifx.setToken('cf7348414176e9539b0678ab8c77b2d3c27a8a062c00094b325ce054dIAMFAKE');From NPM
const lifx = require('api-red');
lifx.setToken('cf7348414176e9539b0678ab8c77b2d3c27a8a062c00094b325ce054dIAMFAKE');setToken(<token:string>);- Token [Required] - The token you created at https://cloud.lifx.com/settings.
Example
lifx.setToken('cf7348414176e9539b0678ab8c77b2d3c27a8a062c00094b325ce054dIAMFAKE');list(<selector:string>);- Selector [Optional] - The selector you want to use (https://api.developer.lifx.com/docs/selectors). Defaults to "all".
Example
//List All Lights
var list = lifx.list();
list.then(function(data){
console.log(data);
})
//List A Specific Light
var specific = lifx.list("Overhead");
specific.then(function(data){
console.log(data);
})Example Object
{
id: 'd0FAKE2cFAKE',
uuid: '0230f455-FAKE-492c-af6d-de7a922fFAKE',
label: 'Overhead',
connected: true,
power: 'on',
color: { hue: 0, saturation: 1, kelvin: 3500 },
brightness: 0.49999237048905165,
effect: 'OFF',
group: { id: '0ccdFAKE2c07c5af81da4b58b523FAKE', name: 'Mats Office' },
location: { id: '9f0f6bFAKE29ad81bfFAKEa2a69dFAKE', name: 'Home' },
product: {
name: 'LIFX A19',
identifier: 'lifx_a19',
company: 'LIFX',
capabilities: [Object]
},
last_seen: '2019-06-18T12:46:47Z',
seconds_since_seen: 2
}togglePower(<selector:string>);- Selector [Optional] - The selector you want to use (https://api.developer.lifx.com/docs/selectors). Defaults to "all". Example
lifx.togglePower();state(<state:object>, <selector:string>);- State [Required] - A JSON object representing the new state (https://api.developer.lifx.com/docs/set-state).
- Selector [Optional] - The selector you want to use (https://api.developer.lifx.com/docs/selectors). Defaults to "all". Example
var newState = {
"power": "on",
"color": "blue saturation:0.5",
"brightness": 0.5,
"duration": 5,
}
lifx.state(newState);breatheEffect(<data:object>, <selector:string>);- Data [Required] - A JSON object representing the breath effect you want to set (https://api.developer.lifx.com/docs/breathe-effect).
- Selector [Optional] - The selector you want to use (https://api.developer.lifx.com/docs/selectors). Defaults to "all". Example
var newBreath = {
"color": "blue",
"period": 1,
"cycles": 1,
"persist": false,
"power_on": true,
"peak": 0.4
}
lifx.breatheEffect(newBreath);This wrapper uses "promises". Here is an example of how to return the response from the light to your main app.
const lifx = require('lifx-zero');
lifx.setToken('cf7348414176e9539b0678ab8c77b2d3c27a8a062c00094b325ce054dIAMFAKE');
//setup the promise
var newColor = lifx.state.color();
//follow through with the promise
newColor.then(function(data){
console.log(data);
})I have created an NPM script for "Interactive Mode". This loads the wrapper module and sets your key.
To enter "Interactive Mode" run:
FROM GITHUB
npm run interactiveFROM NPM
cd node_modules/lifx-zero
npm run interactiveNOTE: Make sure you create a .env file set the token value or this will not work. See .env.example. If you installed this module through NPM, you will need to create the .env file inside of the ./node_modules/lifx-zero subdirectory.