警告:該存儲庫目前沒有主動維護器。因此,發展是陳舊的。考慮使用活躍的叉子,例如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
} ) ;