A thin Node.js API wrapper of the Lifx HTTP protocol.
This library is not, in any way, affiliated or related to Lifi Labs, Inc.. Use at your own risk.
$ npm install lifx-http-api --save
Node.js 4.2.6+ is tested and supported on Mac, Linux and Windows.
A bearer token is mandatory to use the API. A new token can be obtain in the Lifx Cloud Settings.
The thin API wrapper uses a client for network communication. This client handles all requests against the Lifx API.
var lifx = require('lifx-http-api'),
client;
client = new lifx({
bearerToken: '<your api token>'
});
The Client
object provides promises by the great Q library. You can either use callbacks or promises.
// Using callbacks
client.listLights('all', function(err, data) {
if(err) {
console.error(err);
return;
}
console.log(data)
});
// Using promises
client.listLights('all').then(console.log, console.error);
Gets lights belonging to the authenticated account. Filter the lights using selectors.
Option | Type | Default | Description |
---|---|---|---|
selector |
string | Selector for the light bulb you want to get. See the Selector section to get more information. | |
cb |
function | null | function(err, data) {} Callback function which will be called when the HTTP request to the API was processed. |
Usage example:
// Using callbacks
client.listLights('all', function(err, data) {
if(err) {
console.error(err);
return;
}
console.log(data)
});
// Using promises
client.listLights('all').then(console.log, console.error);
Sets the state of the lights within the selector.
Option | Type | Default | Description |
---|---|---|---|
selector |
string | Selector for the light bulb you want to get. See the Selector section to get more information. | |
settings |
object | {} |
State configuration object. See the official documentation for further information. |
cb |
function | null | function(err, data) {} Callback function which will be called when the HTTP request to the API was processed. |
Usage example:
// Using callbacks
client.setState('all', {
power: 'on',
color: 'blue saturation:0.5',
brightness: 0.5,
duration: 5
}, function(err, data) {
if(err) {
console.error(err);
return;
}
console.log(data)
});
// Using promises
client.setState('all', {
power: 'on',
color: 'blue saturation:0.5',
brightness: 0.5,
duration: 5
}).then(console.log, console.error);
This endpoint allows you to set different states on multiple selectors in a single request.
Option | Type | Default | Description |
---|---|---|---|
settings |
Mixed | {} |
Multiple State configuration object. See the official documentation for further information. |
cb |
function | null | function(err, data) {} Callback function which will be called when the HTTP request to the API was processed. |
Usage example:
// Using callbacks
client.setState('all', {
"states": [ {
"selector": "all",
"power": "on"
}, {
"selector": "group:test",
"brightness": 0.5
} ],
"defaults": {
"duration": 5.0
}
}, function (err, data) {
if (err) {
console.error(err);
return;
}
console.log(data)
});
Turn off lights if they are on, or turn them on if they are off. Physically powered off lights are ignored.
Option | Type | Default | Description |
---|---|---|---|
selector |
string | all |
Selector for the light bulb you want to get. See the Selector section to get more information. |
duration |
int | 0 | Turning on or off will be faded over the time (in seconds). |
cb |
function | null | function(err, data) {} Callback function which will be called when the HTTP request to the API was processed. |
Usage example:
// Using callbacks
client.togglePower('all', 1.5, function (err, data) {
if (err) {
console.error(err);
return;
}
console.log(data)
});
Performs a breathe effect by slowly fading between the given colors. Use the parameters to tweak the effect.
Option | Type | Default | Description |
---|---|---|---|
selector |
string | all |
Selector for the light bulb you want to get. See the Selector section to get more information. |
settings |
Object | {} |
Breathe effect object, see the official documentation for all available parameter. |
cb |
function | null | function(err, data) {} Callback function which will be called when the HTTP request to the API was processed. |
Usage example:
// Using callbacks
client.breathe('all', {
color: '#006633',
from_color: '#00AF33',
period: 1,
cycles: 10,
persist: true,
power_on: true,
peak: 0.8
}, function (err, data) {
if (err) {
console.error(err);
return;
}
console.log(data)
});
Performs a pulse effect by quickly flashing between the given colors. Use the parameters to tweak the effect.
Option | Type | Default | Description |
---|---|---|---|
selector |
string | all |
Selector for the light bulb you want to get. See the Selector section to get more information. |
settings |
Object | {} |
Pulse effect object, see the official documentation for all available parameter. |
cb |
function | null | function(err, data) {} Callback function which will be called when the HTTP request to the API was processed. |
Usage example:
// Using callbacks
client.pulse('all', {
color: '#006633',
from_color: '#00AF33',
period: 1,
cycles: 10,
persist: true,
power_on: true,
peak: 0.8
}, function (err, data) {
if (err) {
console.error(err);
return;
}
console.log(data)
});
Make the light(s) cycle to the next or previous state in a list of states.
Option | Type | Default | Description |
---|---|---|---|
selector |
string | all |
Selector for the light bulb you want to get. See the Selector section to get more information. |
settings |
Object | {} |
Cycle states object, see the official documentation for all available parameter. |
cb |
function | null | function(err, data) {} Callback function which will be called when the HTTP request to the API was processed. |
Usage example:
// Using callbacks
client.cycle('all', {
"states": [{
"brightness": 1.0
}, {
"brightness": 0.5
}, {
"brightness": 0.1
}, {
"power": "off"
}],
"defaults": {
"power": "on", // all states default to on
"saturation": 0, // every state is white
"duration": 2.0 // all transitions will be applied over 2 seconds
}
}, function (err, data) {
if (err) {
console.error(err);
return;
}
console.log(data)
});
Lists all the scenes available in the users account.
Option | Type | Default | Description |
---|---|---|---|
cb |
function | null | function(err, data) {} Callback function which will be called when the HTTP request to the API was processed. |
Usage example:
// Using callbacks
client.listScene(function(err, data) {
if(err) {
console.error(err);
return;
}
console.log(data)
});
// Using promises
client.listScenes().then(console.log, console.error);
Activates a scene from the users account.
Option | Type | Default | Description |
---|---|---|---|
selector |
string | all |
Scene selector. See the Selector section to get more information. |
duration |
int | 0 | Fades to the scene (in seconds). |
cb |
function | null | function(err, data) {} Callback function which will be called when the HTTP request to the API was processed. |
Usage example:
// Using callbacks
client.activateScene('scene_id:d073d501cf2c', 1.2, function (err, data) {
if (err) {
console.error(err);
return;
}
console.log(data)
});
This method lets you validate a user's color string and return the hue, saturation, brightness and kelvin values that the API will interpret as.
Option | Type | Default | Description |
---|---|---|---|
color |
string | Color string you'd like to validate. See the Color section to get more information. | |
cb |
function | null | function(err, data) {} Callback function which will be called when the HTTP request to the API was processed. |
Usage example:
// Using callbacks
client.validateColor('#0198E1', function (err, data) {
if (err) {
console.error(err);
return;
}
console.log(data)
});
Returns the api version.
Usage example:
client.getVersion(); // outputs "v1"
Sets the api version. Returns true
if the version was set sucessfully, otherwise false
.
Option | Type | Default | Description |
---|---|---|---|
version |
string | API version which will be used by the Client object. |
Usage example:
client.setVersion('v2beta');
Returns the api url.
Usage example:
client.getUrl(); // outputs "https://lifx.com/api/"
Sets the api url. Returns true
if the url was set sucessfully, otherwise false
.
Option | Type | Default | Description |
---|---|---|---|
url |
string | API url which will be used by the Client object. |
Usage example:
client.setUrl('https://my-lifx-api-url.com');
Returns the full Lifx api endpoint
Usage example:
client.getApiUrl(); // outputs "https://lifx.com/api/v1"
Returns the bearer authentication token.
Usage example:
client.getBearerToken(); // outputs "<your-token>"
Sets the bearer authentication token. Returns true
if the token was set sucessfully, otherwise false
.
Option | Type | Default | Description |
---|---|---|---|
token |
string | Bearer authentication token which will be used by the Client object. |
Usage example:
client.setBearerToken('<your-token>');
Sends a request to the Lifx API.
Option | Type | Default | Description |
---|---|---|---|
settings |
Object | {} |
request configuration settings. See the offical documentation for further information. |
cb |
function | null | function(err, data) {} Callback function which will be called when the HTTP request to the API was processed. |
Usage example:
client.send({
url: 'lights/all/state',
body: {
power: 'on',
color: 'blue saturation:0.5',
brightness: 0.5,
duration: 5
},
method: 'PUT'
}, function(err, data) {
if (err) console.error(err);
else console.log(data);
})
The Client
object can be configured at initialization:
var lifx = require('lifx-http-api'),
client;
client = new lifx({
bearerToken: '<your api token>', // Authentication token
version: 'v2beta', // API version
url: 'https://api.lifx.com' // API endpoint
});