警告:该存储库目前没有主动维护器。因此,发展是陈旧的。考虑使用活跃的叉子,例如LIFX-LAN-CLIENT。
LIFX协议的Node.js实现。开发为使用2.0的最低固件版本。
该库在任何方面都不是与Lifi Labs,Inc.的关联或相关的。
$ npm install node-lifx --saveNode.js 0.12+和IO.JS在Mac,Linux和Windows上进行了测试和支持。
文件cli.js包含一个工作示例。
该库将客户端用于网络通信。该客户处理网络中所有灯的通信。
var LifxClient = require ( 'node-lifx' ) . Client ;
var client = new LifxClient ( ) ;
client . init ( ) ; Client对象是eventemitter,只要发生任何更改,就会启动事件。这可以是新的灯光发现,发出消息或类似的灯光。客户使用init方法初始化灯后开始发现灯光。如果找到新的灯,客户将燃烧一个light-new事件。此事件包含光作为对象,然后可以调用方法:
var LifxClient = require ( 'node-lifx' ) . Client ;
var client = new LifxClient ( ) ;
client . on ( 'light-new' , function ( light ) {
// Change light state here
} ) ;
client . init ( ) ;光的状态可以通过不同的方法更改:
light.on([duration], [callback])这打开了灯。
| 选项 | 类型 | 默认 | 描述 |
|---|---|---|---|
duration | int | 0 | 随着时间的流逝(以毫秒为单位),打开将褪色。 |
callback | 功能 | 无效的 | function(error) {}命令已到达灯光或client.resendMaxTimes with client.resendPacketDelay ,以防万一。 error是成功的情况,如果发送失败,则给出了null 。 |
| 注意:使用回调将该命令的网络加载乘以两次或更多次。 |
用法示例:
light . on ( ) ; // Turns the light on instantly
light . on ( 2000 ) ; // Fading the light on over two seconds light.off([duration], [callback])这打出了灯。
| 选项 | 类型 | 默认 | 描述 |
|---|---|---|---|
duration | int | 0 | 随着时间的流逝(以毫秒为单位),关闭将褪色。 |
callback | 功能 | 无效的 | function(error) {}命令已到达灯光或client.resendMaxTimes with client.resendPacketDelay ,以防万一。 error是成功的情况,如果发送失败,则给出了null 。 |
| 注意:使用回调将该命令的网络加载乘以两次或更多次。 |
用法示例:
light . off ( ) ; // Turns the light off instantly
light . off ( 2000 ) ; // Fading the light off over two seconds light.color(hue, saturation, brightness, [kelvin], [duration], [callback])将光的颜色更改为HSB颜色值。这是改变光的颜色的首选方法。
| 选项 | 类型 | 默认 | 描述 |
|---|---|---|---|
hue | int | 在0到360之间,代表改变颜色的颜色色调。 | |
saturation | int | 在0到100之间,代表0%至100%的颜色强度。 | |
brightness | int | 在0到100之间,代表0%至100%的光亮度。 | |
kelvin | int | 3500 | 在2500到9000之间,代表着色温度。 |
duration | int | 0 | 随着时间的推移(以毫秒为单位)淡化新值的颜色。 |
callback | 功能 | 无效的 | function(error) {}命令已到达灯光或client.resendMaxTimes with client.resendPacketDelay ,以防万一。 error是成功的情况,如果发送失败,则给出了null 。 |
| 注意:使用回调将该命令的网络加载乘以两次或更多次。 |
用法示例:
light . color ( 0 , 100 , 50 ) ; // Set to red at 50% brightness
light . color ( 50 , 50 , 80 , 3500 , 2000 ) ; // Set to a light green at 80% brightness over next two seconds light.colorRgbHex(hexString, [duration], [callback])将光的颜色更改为以十六进制格式给出的RGB颜色值。请注意,RGB代表光的颜色,更喜欢通过color方法给出的HSBK值。
| 选项 | 类型 | 默认 | 描述 |
|---|---|---|---|
hexString | 细绳 | 一个从#开始的HEX RGB字符串 | |
duration | int | 0 | 随着时间的推移(以毫秒为单位)淡化新值的颜色。 |
callback | 功能 | 无效的 | function(error) {}命令已到达灯光或client.resendMaxTimes with client.resendPacketDelay ,以防万一。 error是成功的情况,如果发送失败,则给出了null 。 |
| 注意:使用回调将该命令的网络加载乘以两次或更多次。 |
用法示例:
light . colorRgbHex ( '#F00' ) ; // Set to red
light . colorRgbHex ( '#FFFF00' ) ; // Set to yellow light.colorRgb(red, green, blue, [duration], [callback])将光的颜色更改为RGB颜色值。请注意,RGB代表光的颜色,更喜欢通过color方法给出的HSBK值。
| 选项 | 类型 | 默认 | 描述 |
|---|---|---|---|
red | int | 从0到255的红色颜色 | |
green | int | 绿色的颜色从0到255 | |
blue | int | 从0到255的蓝色蓝色 | |
duration | int | 0 | 随着时间的推移(以毫秒为单位)淡化新值的颜色。 |
callback | 功能 | 无效的 | function(error) {}命令已到达灯光或client.resendMaxTimes with client.resendPacketDelay ,以防万一。 error是成功的情况,如果发送失败,则给出了null 。 |
| 注意:使用回调将该命令的网络加载乘以两次或更多次。 |
用法示例:
light . colorRgb ( 255 , 0 , 0 ) ; // Set to red
light . colorRgb ( 255 , 255 , 0 ) ; // Set to yellow light.maxIR(brightness, callback)SET是灯光的最大红外亮度(仅用于支持红外光线的灯)
| 选项 | 类型 | 默认 | 描述 |
|---|---|---|---|
brightness | int | 在0到100之间,代表0%至100%的光亮度。 | |
callback | 功能 | function(error, data) {} |
用法示例:
light . maxIR ( 0 ) ; // Set's a maximum infrared brightness of 0
light . maxIR ( 25 ) ; // Set's a maximum infrared brightness of 25 light.getMaxIR(callback)请求灯的最大红外亮度(仅用于支持红外光线的灯)
| 选项 | 类型 | 默认 | 描述 |
|---|---|---|---|
callback | 功能 | function(error, data) {} |
示例结果:
null ,
{
brightness : 25
}可以使用以下方法请求状态的信息和光的规格:
light.getState(callback)从光线请求一般信息,其中包括颜色,标签和功率状态。此函数是异步的。
| 选项 | 类型 | 默认 | 描述 |
|---|---|---|---|
callback | 功能 | function(error, data) {} |
示例结果:
null ,
{
color : { hue : 120 , saturation : 0 , brightness : 100 , kelvin : 8994 } ,
power : 0 ,
label : 'Kitchen'
} light.getPower(callback)请求当前的功率状态(开或关)。此函数是异步的。
| 选项 | 类型 | 默认 | 描述 |
|---|---|---|---|
callback | 功能 | function(error, data) {} |
示例结果:
null ,
0 // off light.getFirmwareVersion(callback)从光线(次要版本和主要版本)请求固件版本。此函数是异步的。
| 选项 | 类型 | 默认 | 描述 |
|---|---|---|---|
callback | 功能 | function(error, data) {} |
示例结果:
null ,
{
majorVersion : 2 ,
minorVersion : 1
} light.getHardwareVersion(callback)从Light(供应商,产品和版本)请求硬件版本。此函数是异步的。
| 选项 | 类型 | 默认 | 描述 |
|---|---|---|---|
callback | 功能 | function(error, data) {} |
示例结果:
null ,
{
vendorId : 1 ,
vendorName : 'LIFX' ,
productId : 1 ,
productName : 'Original 1000' ,
version : 6 ,
productFeatures : {
color : true ,
infrared : false ,
multizone : false
}
} light.getFirmwareInfo(callback)从灯光的微控制器单元(信号,TX和RX)请求信息。此函数是异步的。
| 选项 | 类型 | 默认 | 描述 |
|---|---|---|---|
callback | 功能 | function(error, data) {} |
示例结果:
null ,
{
signal : 0 ,
tx : 0 ,
rx : 0
} light.getWifiInfo(callback)从光线(信号,TX和RX)请求WiFi信息。此函数是异步的。
| 选项 | 类型 | 默认 | 描述 |
|---|---|---|---|
callback | 功能 | function(error, data) {} |
示例结果:
null ,
{
signal : 0.000009999999747378752 ,
tx : 16584 ,
rx : 12580
} light.getWifiVersion(callback)从Light(次要版本和主要版本)请求WiFi固件版本。此函数是异步的。
| 选项 | 类型 | 默认 | 描述 |
|---|---|---|---|
callback | 功能 | function(error, data) {} |
示例结果:
null ,
{
majorVersion : 2 ,
minorVersion : 1
} light.getAmbientLight(callback)从光线中请求周围的光值。此函数是异步的。
| 选项 | 类型 | 默认 | 描述 |
|---|---|---|---|
callback | 功能 | function(error, data) {} |
示例结果:
null ,
10可以使用以下方法请求并设置灯标签:
light.getLabel(callback, [cache])请求灯标签。此函数是异步的。
| 选项 | 类型 | 默认 | 描述 |
|---|---|---|---|
callback | 功能 | function(error, data) {} | |
cache | 布尔 | 错误的 | 使用标签的最后已知值,并且不再从光线上请求 |
示例结果:
null ,
'Kitchen' light.setLabel(label, [callback])为灯设置了一个新标签。
| 选项 | 类型 | 默认 | 描述 |
|---|---|---|---|
label | 细绳 | 最大32位尺寸的新标签(该标签的长度为32,具有非Unicode Chars)。 | |
callback | 功能 | 无效的 | function(error) {}命令已到达灯光或client.resendMaxTimes with client.resendPacketDelay ,以防万一。 error是成功的情况,如果发送失败,则给出了null 。 |
| 注意:使用回调将该命令的网络加载乘以两次或更多次。 |
用法示例:
light . setLabel ( 'Bedroom Light' ) ;
light . setLabel ( 'Kitchen Light 4' , function ( err ) {
if ( err ) { throw err ; }
console . log ( 'New light label has been set' ) ;
} ) ;client.light(identifier)通过IP,标签或ID在所有灯光上找到列表中的灯。
| 选项 | 类型 | 默认 | 描述 |
|---|---|---|---|
identifier | 细绳 | Light Label(case敏感) client.light('Kitchen') ,IP地址client.light('192.168.2.102')或Light ID client.light('0123456789012') |
返回一个轻对象,然后可以用来调用其上的方法。例如client.light('192.168.2.102').on() 。
client.lights([filter])获取所有已知灯的清单
| 选项 | 类型 | 默认 | 描述 |
|---|---|---|---|
filter | 细绳 | 无效的 | 仅返回活动( null或'on' ),无活动( 'off' )或全部( '' )的滤波器列表 |
客户可能会抛出以下事件。
light-new当有一个新的灯光发现在运行时没有看到时,就会抛出此事件。此事件带有新的轻对象。 client.on('light-new', function(light) {});
light-offline当一段时间没有发现灯光时,就会抛出此事件。预计给出的光已不再是可达到的。 client.on('light-offline', function(light) {});
light-online当离线后再次发现灯光时,就会抛出此事件。 client.on('light-online', function(light) {});
可以使用以下命令在运行时启动和停止每个客户的发现:
client.startDiscovery()开始发现过程。
client.stopDiscovery()停止发现过程。
对于客户的初始化,可以提供不同的设置。这是一个默认选项的示例:
var LifxClient = require ( 'node-lifx' ) . Client ;
var client = new LifxClient ( ) ;
// ...
client . init ( {
lightOfflineTolerance : 3 , // A light is offline if not seen for the given amount of discoveries
messageHandlerTimeout : 45000 , // in ms, if not answer in time an error is provided to get methods
startDiscovery : true , // start discovery after initialization
resendPacketDelay : 150 , // delay between packages if light did not receive a packet (for setting methods with callback)
resendMaxTimes : 3 , // resend packages x times if light did not receive a packet (for setting methods with callback)
debug : false , // logs all messages in console if turned on
address : '0.0.0.0' , // the IPv4 address to bind the udp connection to
broadcast : '255.255.255.255' , // set's the IPv4 broadcast address which is addressed to discover bulbs
lights : [ ] // Can be used provide a list of known light IPv4 ip addresses if broadcast packets in network are not allowed
// For example: ['192.168.0.112', '192.168.0.114'], this will then be addressed directly
} ) ;