WARNUNG : Dieses Repository hat derzeit keinen aktiven Betreuer. Aus diesem Grund ist die Entwicklung veraltet. Erwägen Sie, eine aktive Gabel wie Lifx-Lan-Client zu verwenden.
Eine Node.js -Implementierung des LIFX -Protokolls. Entwickelt, um mit einer minimalen Firmware -Version von 2.0 zu arbeiten.
Diese Bibliothek ist in keiner Weise mit Lifi Labs, Inc. verbunden oder bezieht sich auf eigenes Risiko.
$ npm install node-lifx --saveNode.js 0.12+ und io.js werden auf Mac, Linux und Windows getestet und unterstützt.
Die Datei cli.js enthält ein funktionierendes Beispiel.
Die Bibliothek verwendet einen Client für die Netzwerkkommunikation. Dieser Kunde kümmert sich um die Kommunikation mit allen Lichtern im Netzwerk.
var LifxClient = require ( 'node-lifx' ) . Client ;
var client = new LifxClient ( ) ;
client . init ( ) ; Das Client -Objekt ist ein EventEmitter- und Emfit -Ereignisse, wenn Änderungen eintreten. Dies kann eine neue Lichtentdeckung sein, ein Licht, das eine Nachricht oder ähnliches sendet. Der Kunde beginnt mit der Entdeckung von Lichtern gleich nach der Initialisierung mit der init -Methode. Wenn ein neues Licht gefunden wird, emittiert der Kunde eine light-new Veranstaltung. Dieses Ereignis enthält das Licht als Objekt, auf dem Methoden aufgerufen werden können: dann:
var LifxClient = require ( 'node-lifx' ) . Client ;
var client = new LifxClient ( ) ;
client . on ( 'light-new' , function ( light ) {
// Change light state here
} ) ;
client . init ( ) ;Die Zustände eines Lichts können mit verschiedenen Methoden verändert werden:
light.on([duration], [callback])Dies macht ein Licht an.
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
duration | int | 0 | Das Einschalten wird im Laufe der Zeit (in Millisekunden) verblasst. |
callback | Funktion | NULL | function(error) {} aufgerufen nach dem Befehl das Licht oder nach client.resendMaxTimes mit client.resendPacketDelay , falls dies nicht der Fall ist. error ist im Erfolg des Erfolgs null und angegeben, ob das Senden fehlgeschlagen ist. |
| HINWEIS: Verwenden von Callback -Multiplikationen für diesen Befehl für diesen Befehl zwei oder mehrmals. |
Verwendungsbeispiele:
light . on ( ) ; // Turns the light on instantly
light . on ( 2000 ) ; // Fading the light on over two seconds light.off([duration], [callback])Dies schaltet ein Licht aus.
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
duration | int | 0 | Das Ausschalten wird im Laufe der Zeit (in Millisekunden) verblasst. |
callback | Funktion | NULL | function(error) {} aufgerufen nach dem Befehl das Licht oder nach client.resendMaxTimes mit client.resendPacketDelay , falls dies nicht der Fall ist. error ist im Erfolg des Erfolgs null und angegeben, ob das Senden fehlgeschlagen ist. |
| HINWEIS: Verwenden von Callback -Multiplikationen für diesen Befehl für diesen Befehl zwei oder mehrmals. |
Verwendungsbeispiele:
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])Ändert die Farbe eines Lichts in einen HSB -Farbwert. Dies ist die bevorzugte Methode, um die Farbe eines Lichts zu ändern.
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
hue | int | Zwischen 0 und 360, die den Farbfarbton in Grad darstellen, der die Farbe verändert. | |
saturation | int | Zwischen 0 und 100, darunter die Farbintensität von 0% bis 100%. | |
brightness | int | Zwischen 0 und 100, darunter die helle Helligkeit von 0% bis 100%. | |
kelvin | int | 3500 | Zwischen 2500 und 9000, darunter die Farbtemperatur. |
duration | int | 0 | Verblassen Sie die Farbe im Laufe der Zeit (in Millisekunden) zum neuen Wert. |
callback | Funktion | NULL | function(error) {} aufgerufen nach dem Befehl das Licht oder nach client.resendMaxTimes mit client.resendPacketDelay , falls dies nicht der Fall ist. error ist im Erfolg des Erfolgs null und angegeben, ob das Senden fehlgeschlagen ist. |
| HINWEIS: Verwenden von Callback -Multiplikationen für diesen Befehl für diesen Befehl zwei oder mehrmals. |
Verwendungsbeispiele:
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]) Ändert die Farbe eines Lichts in einen im HEX -Format angegebenen RGB -Farbwert. Beachten Sie, dass RGB die Farbe des Lichts nur schlecht darstellt, und bevorzugen die über die color angegebenen HSBK -Werte.
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
hexString | Saite | Eine Hex -RGB -Zeichenfolge, die mit # beginnt | |
duration | int | 0 | Verblassen Sie die Farbe im Laufe der Zeit (in Millisekunden) zum neuen Wert. |
callback | Funktion | NULL | function(error) {} aufgerufen nach dem Befehl das Licht oder nach client.resendMaxTimes mit client.resendPacketDelay , falls dies nicht der Fall ist. error ist im Erfolg des Erfolgs null und angegeben, ob das Senden fehlgeschlagen ist. |
| HINWEIS: Verwenden von Callback -Multiplikationen für diesen Befehl für diesen Befehl zwei oder mehrmals. |
Verwendungsbeispiele:
light . colorRgbHex ( '#F00' ) ; // Set to red
light . colorRgbHex ( '#FFFF00' ) ; // Set to yellow light.colorRgb(red, green, blue, [duration], [callback]) Ändert die Farbe eines Lichts in einen RGB -Farbwert. Beachten Sie, dass RGB die Farbe des Lichts nur schlecht darstellt, und bevorzugen die über die color angegebenen HSBK -Werte.
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
red | int | Rot in Farbe von 0 bis 255 | |
green | int | Grüne farbig von 0 bis 255 | |
blue | int | AMOUT von Blue in Farbe von 0 bis 255 | |
duration | int | 0 | Verblassen Sie die Farbe im Laufe der Zeit (in Millisekunden) zum neuen Wert. |
callback | Funktion | NULL | function(error) {} aufgerufen nach dem Befehl das Licht oder nach client.resendMaxTimes mit client.resendPacketDelay , falls dies nicht der Fall ist. error ist im Erfolg des Erfolgs null und angegeben, ob das Senden fehlgeschlagen ist. |
| HINWEIS: Verwenden von Callback -Multiplikationen für diesen Befehl für diesen Befehl zwei oder mehrmals. |
Verwendungsbeispiele:
light . colorRgb ( 255 , 0 , 0 ) ; // Set to red
light . colorRgb ( 255 , 255 , 0 ) ; // Set to yellow light.maxIR(brightness, callback)Set ist die maximale Infrarothelligkeit des Lichts (nur für Lichter, die Infrarotlicht unterstützen)
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
brightness | int | Zwischen 0 und 100, darunter die helle Helligkeit von 0% bis 100%. | |
callback | Funktion | function(error, data) {} |
Verwendungsbeispiele:
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)Fordert die maximale Infrarothelligkeit des Lichts an (nur für Lichter, die Infrarotlicht stützen)
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
callback | Funktion | function(error, data) {} |
Beispielergebnis:
null ,
{
brightness : 25
}Infos des Staates und der Spezifikation des Lichts können mit den folgenden Methoden angefordert werden:
light.getState(callback)Anfragen allgemeiner Informationen von einem Licht. Dazu gehören Farb-, Etikett- und Leistungsstatus. Diese Funktion ist asynchron.
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
callback | Funktion | function(error, data) {} |
Beispielergebnis:
null ,
{
color : { hue : 120 , saturation : 0 , brightness : 100 , kelvin : 8994 } ,
power : 0 ,
label : 'Kitchen'
} light.getPower(callback)Fordert den aktuellen Leistungsstatus (ein- oder ausgeschaltet) an. Diese Funktion ist asynchron.
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
callback | Funktion | function(error, data) {} |
Beispielergebnis:
null ,
0 // off light.getFirmwareVersion(callback)Fordert die Firmware -Version von einer leichten (Minor- und Major -Version) an. Diese Funktion ist asynchron.
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
callback | Funktion | function(error, data) {} |
Beispielergebnis:
null ,
{
majorVersion : 2 ,
minorVersion : 1
} light.getHardwareVersion(callback)Fordert die Hardwareversion von einem Licht (Anbieter, Produkt und Version) an. Diese Funktion ist asynchron.
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
callback | Funktion | function(error, data) {} |
Beispielergebnis:
null ,
{
vendorId : 1 ,
vendorName : 'LIFX' ,
productId : 1 ,
productName : 'Original 1000' ,
version : 6 ,
productFeatures : {
color : true ,
infrared : false ,
multizone : false
}
} light.getFirmwareInfo(callback)Fordern Sie Informationen aus der Micro -Controller -Einheit eines Lichts (Signal, TX und RX) an. Diese Funktion ist asynchron.
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
callback | Funktion | function(error, data) {} |
Beispielergebnis:
null ,
{
signal : 0 ,
tx : 0 ,
rx : 0
} light.getWifiInfo(callback)Fordert WLAN -Informationen von einem Licht (Signal, TX und RX) an. Diese Funktion ist asynchron.
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
callback | Funktion | function(error, data) {} |
Beispielergebnis:
null ,
{
signal : 0.000009999999747378752 ,
tx : 16584 ,
rx : 12580
} light.getWifiVersion(callback)Fordert die WiFi -Firmware -Version von der Licht (Minor- und Major -Version) an. Diese Funktion ist asynchron.
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
callback | Funktion | function(error, data) {} |
Beispielergebnis:
null ,
{
majorVersion : 2 ,
minorVersion : 1
} light.getAmbientLight(callback)Fordert den Umgebungslichtwert im Fluss aus dem Licht an. Diese Funktion ist asynchron.
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
callback | Funktion | function(error, data) {} |
Beispielergebnis:
null ,
10Lichterbezeichnungen können angefordert und mit den folgenden Methoden festgelegt werden:
light.getLabel(callback, [cache])Fordert das Etikett eines Lichts an. Diese Funktion ist asynchron.
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
callback | Funktion | function(error, data) {} | |
cache | boolean | FALSCH | Verwenden Sie den letzten bekannten Wert für das Etikett und fordern Sie nicht erneut vom Licht an |
Beispielergebnis:
null ,
'Kitchen' light.setLabel(label, [callback])Legt ein neues Etikett für ein Licht fest.
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
label | Saite | Neues Etikett mit 32 -Bit -Größe Maximum (was eine Länge von 32 mit Nicht -Unicode -Zeichen entspricht). | |
callback | Funktion | NULL | function(error) {} aufgerufen nach dem Befehl das Licht oder nach client.resendMaxTimes mit client.resendPacketDelay , falls dies nicht der Fall ist. error ist im Erfolg des Erfolgs null und angegeben, ob das Senden fehlgeschlagen ist. |
| HINWEIS: Verwenden von Callback -Multiplikationen für diesen Befehl für diesen Befehl zwei oder mehrmals. |
Verwendungsbeispiele:
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)Finden Sie ein Licht in der Liste ALLE Lichter per IP, Etikett oder ID.
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
identifier | Saite | Light Label (Case Sensitive) client.light('Kitchen') , der IP -Adresse client.light('192.168.2.102') oder der Light ID client.light('0123456789012') |
Gibt ein Lichtobjekt zurück, mit dem dann Methoden darauf aufgerufen werden können. Zum Beispiel client.light('192.168.2.102').on() .
client.lights([filter])Holen Sie sich eine Liste aller bekannten Lichter
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
filter | Saite | NULL | Filterliste der Lichter, um nur aktiv ( null oder 'on' ), inaktiv ( 'off' ) oder alles ( '' ) zurückzukehren |
Die folgenden Ereignisse können vom Kunden geworfen werden.
light-new Dieses Ereignis wird geworfen, wenn es eine neue Lichtentdeckung gibt, die zur Laufzeit noch nicht gesehen wurde. Dieses Ereignis ist mit dem neuen Lichtobjekt ausgestattet. client.on('light-new', function(light) {});
light-offline Dieses Ereignis wird geworfen, wenn seit einiger Zeit kein Licht mehr entdeckt wurde. Es wird nicht mehr erwartet, dass das angegebene Licht erreichbar ist. client.on('light-offline', function(light) {});
light-online Dieses Ereignis wird geworfen, wenn nach Offline ein Licht wieder entdeckt wird. client.on('light-online', function(light) {});
Die Entdeckung für jeden Client kann mit diesen Befehlen zur Laufzeit gestartet und gestoppt werden:
client.startDiscovery()Startet den Entdeckungsprozess.
client.stopDiscovery()Stoppt den Entdeckungsprozess.
Für die Initialisierung des Clients kann verschiedene Einstellungen bereitgestellt werden. Dies ist ein Beispiel für die Standardoptionen:
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
} ) ;