警告:このリポジトリには現在、アクティブなメンテナーがありません。そのため、開発は古くなっています。 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 client.resendPacketDelay後に呼び出されます。 error成功した場合にnullであり、送信が失敗した場合に与えられます。 |
| 注:Callbackを使用すると、このコマンドのネットワークロードを2回以上増やします。 |
使用例:
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 client.resendPacketDelay後に呼び出されます。 error成功した場合にnullであり、送信が失敗した場合に与えられます。 |
| 注:Callbackを使用すると、このコマンドのネットワークロードを2回以上増やします。 |
使用例:
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 client.resendPacketDelay後に呼び出されます。 error成功した場合にnullであり、送信が失敗した場合に与えられます。 |
| 注:Callbackを使用すると、このコマンドのネットワークロードを2回以上増やします。 |
使用例:
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]) Lightの色を16進形式で与えられたRGB色の値に変更します。 RGBは光の色を貧弱に表し、 color法を介して与えられたHSBK値を好むことに注意してください。
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
hexString | 弦 | #から始まる16進RGB文字列 | |
duration | int | 0 | (ミリ秒単位で)時間の経過とともに色を新しい値にフェードします。 |
callback | 関数 | ヌル | function(error) {}コマンドがライトに到達した後、またはclient.resendMaxTimes client.resendPacketDelay後に呼び出されます。 error成功した場合にnullであり、送信が失敗した場合に与えられます。 |
| 注:Callbackを使用すると、このコマンドのネットワークロードを2回以上増やします。 |
使用例:
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 client.resendPacketDelay後に呼び出されます。 error成功した場合にnullであり、送信が失敗した場合に与えられます。 |
| 注:Callbackを使用すると、このコマンドのネットワークロードを2回以上増やします。 |
使用例:
light . colorRgb ( 255 , 0 , 0 ) ; // Set to red
light . colorRgb ( 255 , 255 , 0 ) ; // Set to yellow light.maxIR(brightness, callback)光の最大赤外線明るさをセットします(赤外線をサポートするライトのみ)
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
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
}状態のinfosとライトの仕様は、次の方法で要求できます。
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)ライト(ベンダー、製品、バージョン)からハードウェアバージョンをリクエストします。この関数は非同期です。
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
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)Light(Signal、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です)。 | |
callback | 関数 | ヌル | function(error) {}コマンドがライトに到達した後、またはclient.resendMaxTimes client.resendPacketDelay後に呼び出されます。 error成功した場合にnullであり、送信が失敗した場合に与えられます。 |
| 注:Callbackを使用すると、このコマンドのネットワークロードを2回以上増やします。 |
使用例:
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 | 弦 | ライトラベル(ケースセンシティブ) client.light('Kitchen') 、IPアドレスclient.light('192.168.2.102')またはライト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
} ) ;