AVERTISSEMENT : Ce référentiel n'a actuellement pas de mainteneur actif. Pour cette raison, le développement est périmé. Envisagez d'utiliser une fourche active, comme Lifx-Lan-Client.
Une implémentation Node.js du protocole LIFX. Développé pour travailler avec une version minimale du micrologiciel de 2.0.
Cette bibliothèque n'est en aucun cas affiliée ou liée à Lifi Labs, Inc .. utilisez-le à vos propres risques.
$ npm install node-lifx --saveNode.js 0,12+ et io.js sont testés et pris en charge sur Mac, Linux et Windows.
Le fichier cli.js contient un exemple de travail.
La bibliothèque utilise un client pour la communication réseau. Ce client gère la communication avec toutes les lumières du réseau.
var LifxClient = require ( 'node-lifx' ) . Client ;
var client = new LifxClient ( ) ;
client . init ( ) ; L'objet Client est un événement EventEmitter et EMMITS chaque fois que des modifications se produisent. Cela peut être une nouvelle découverte de lumière, une lumière envoyant un message ou similaire. Le client démarre la découverte des lumières juste après son initialisation avec la méthode init . Si une nouvelle lumière est trouvée, le client émet un événement light-new . Cet événement contient la lumière en tant qu'objet sur lequel les méthodes peuvent être appelées alors:
var LifxClient = require ( 'node-lifx' ) . Client ;
var client = new LifxClient ( ) ;
client . on ( 'light-new' , function ( light ) {
// Change light state here
} ) ;
client . init ( ) ;Les états d'une lumière peuvent être modifiés avec différentes méthodes:
light.on([duration], [callback])Cela allume une lumière.
| Option | Taper | Défaut | Description |
|---|---|---|---|
duration | int | 0 | L'allumage sera fané au fil du temps (en millisecondes). |
callback | fonction | nul | function(error) {} appelée après que la commande a atteint la lumière ou après client.resendMaxTimes avec client.resendPacketDelay au cas où elle ne le serait pas. error est null en cas de réussite et donnée si l'envoi a échoué. |
| Remarque: L'utilisation de rappel multiplie le chargement du réseau pour cette commande par deux fois ou plus. |
Exemples d'utilisation:
light . on ( ) ; // Turns the light on instantly
light . on ( 2000 ) ; // Fading the light on over two seconds light.off([duration], [callback])Cela éteint une lumière.
| Option | Taper | Défaut | Description |
|---|---|---|---|
duration | int | 0 | L'éteinte sera fanée au fil du temps (en millisecondes). |
callback | fonction | nul | function(error) {} appelée après que la commande a atteint la lumière ou après client.resendMaxTimes avec client.resendPacketDelay au cas où elle ne le serait pas. error est null en cas de réussite et donnée si l'envoi a échoué. |
| Remarque: L'utilisation de rappel multiplie le chargement du réseau pour cette commande par deux fois ou plus. |
Exemples d'utilisation:
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])Modifie la couleur d'une lumière en une valeur de couleur HSB. Il s'agit de la méthode préférée pour changer la couleur d'une lumière.
| Option | Taper | Défaut | Description |
|---|---|---|---|
hue | int | Entre 0 et 360, représentant la teinte de couleur en degré qui change la couleur. | |
saturation | int | Entre 0 et 100, représentant l'intensité de couleur de 0% à 100%. | |
brightness | int | Entre 0 et 100, représentant la luminosité de la lumière de 0% à 100%. | |
kelvin | int | 3500 | Entre 2500 et 9000, représentant la température de couleur. |
duration | int | 0 | Basciller la couleur à la nouvelle valeur au fil du temps (en millisecondes). |
callback | fonction | nul | function(error) {} appelée après que la commande a atteint la lumière ou après client.resendMaxTimes avec client.resendPacketDelay au cas où elle ne le serait pas. error est null en cas de réussite et donnée si l'envoi a échoué. |
| Remarque: L'utilisation de rappel multiplie le chargement du réseau pour cette commande par deux fois ou plus. |
Exemples d'utilisation:
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]) Modifie la couleur d'une lumière en une valeur de couleur RVB donnée au format hexadécimal. Notez que RVB représente mal la couleur de la lumière, préfèrent les valeurs HSBK données via la méthode color .
| Option | Taper | Défaut | Description |
|---|---|---|---|
hexString | chaîne | Une chaîne Hex RVB en commençant par # | |
duration | int | 0 | Basciller la couleur à la nouvelle valeur au fil du temps (en millisecondes). |
callback | fonction | nul | function(error) {} appelée après que la commande a atteint la lumière ou après client.resendMaxTimes avec client.resendPacketDelay au cas où elle ne le serait pas. error est null en cas de réussite et donnée si l'envoi a échoué. |
| Remarque: L'utilisation de rappel multiplie le chargement du réseau pour cette commande par deux fois ou plus. |
Exemples d'utilisation:
light . colorRgbHex ( '#F00' ) ; // Set to red
light . colorRgbHex ( '#FFFF00' ) ; // Set to yellow light.colorRgb(red, green, blue, [duration], [callback]) Modifie la couleur d'une lumière en une valeur de couleur RVB. Notez que RVB représente mal la couleur de la lumière, préfèrent les valeurs HSBK données via la méthode color .
| Option | Taper | Défaut | Description |
|---|---|---|---|
red | int | Amout de couleur rouge de 0 à 255 | |
green | int | Amout de couleur verte de 0 à 255 | |
blue | int | Amout de couleur bleue de 0 à 255 | |
duration | int | 0 | Basciller la couleur à la nouvelle valeur au fil du temps (en millisecondes). |
callback | fonction | nul | function(error) {} appelée après que la commande a atteint la lumière ou après client.resendMaxTimes avec client.resendPacketDelay au cas où elle ne le serait pas. error est null en cas de réussite et donnée si l'envoi a échoué. |
| Remarque: L'utilisation de rappel multiplie le chargement du réseau pour cette commande par deux fois ou plus. |
Exemples d'utilisation:
light . colorRgb ( 255 , 0 , 0 ) ; // Set to red
light . colorRgb ( 255 , 255 , 0 ) ; // Set to yellow light.maxIR(brightness, callback)Set est la luminosité infrarouge maximale de la lumière (uniquement pour les lumières qui soutiennent la lumière infrarouge)
| Option | Taper | Défaut | Description |
|---|---|---|---|
brightness | int | Entre 0 et 100, représentant la luminosité de la lumière de 0% à 100%. | |
callback | fonction | function(error, data) {} |
Exemples d'utilisation:
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)Demande la luminosité infrarouge maximale de la lumière (uniquement pour les lumières qui soutiennent la lumière infrarouge)
| Option | Taper | Défaut | Description |
|---|---|---|---|
callback | fonction | function(error, data) {} |
Exemple de résultat:
null ,
{
brightness : 25
}Les infos de l'état et les spécifications de la lumière peuvent être demandés avec les méthodes suivantes:
light.getState(callback)Demande les informations générales d'une lumière, cela comprend la couleur, l'étiquette et l'état de puissance. Cette fonction est asynchrone.
| Option | Taper | Défaut | Description |
|---|---|---|---|
callback | fonction | function(error, data) {} |
Exemple de résultat:
null ,
{
color : { hue : 120 , saturation : 0 , brightness : 100 , kelvin : 8994 } ,
power : 0 ,
label : 'Kitchen'
} light.getPower(callback)Demande l'état de puissance actuel (activé ou désactivé). Cette fonction est asynchrone.
| Option | Taper | Défaut | Description |
|---|---|---|---|
callback | fonction | function(error, data) {} |
Exemple de résultat:
null ,
0 // off light.getFirmwareVersion(callback)Demande la version du firmware d'une lumière (version mineure et majeure). Cette fonction est asynchrone.
| Option | Taper | Défaut | Description |
|---|---|---|---|
callback | fonction | function(error, data) {} |
Exemple de résultat:
null ,
{
majorVersion : 2 ,
minorVersion : 1
} light.getHardwareVersion(callback)Demande la version matérielle d'une lumière (fournisseur, produit et version). Cette fonction est asynchrone.
| Option | Taper | Défaut | Description |
|---|---|---|---|
callback | fonction | function(error, data) {} |
Exemple de résultat:
null ,
{
vendorId : 1 ,
vendorName : 'LIFX' ,
productId : 1 ,
productName : 'Original 1000' ,
version : 6 ,
productFeatures : {
color : true ,
infrared : false ,
multizone : false
}
} light.getFirmwareInfo(callback)Demande les informations de l'unité micro-contrôleur d'une lumière (signal, TX et RX). Cette fonction est asynchrone.
| Option | Taper | Défaut | Description |
|---|---|---|---|
callback | fonction | function(error, data) {} |
Exemple de résultat:
null ,
{
signal : 0 ,
tx : 0 ,
rx : 0
} light.getWifiInfo(callback)Demande les informations WiFi d'une lumière (signal, TX et RX). Cette fonction est asynchrone.
| Option | Taper | Défaut | Description |
|---|---|---|---|
callback | fonction | function(error, data) {} |
Exemple de résultat:
null ,
{
signal : 0.000009999999747378752 ,
tx : 16584 ,
rx : 12580
} light.getWifiVersion(callback)Demande la version du firmware WiFi à partir de la lumière (version mineure et majeure). Cette fonction est asynchrone.
| Option | Taper | Défaut | Description |
|---|---|---|---|
callback | fonction | function(error, data) {} |
Exemple de résultat:
null ,
{
majorVersion : 2 ,
minorVersion : 1
} light.getAmbientLight(callback)Demande la valeur lumineuse ambiante en flux de la lumière. Cette fonction est asynchrone.
| Option | Taper | Défaut | Description |
|---|---|---|---|
callback | fonction | function(error, data) {} |
Exemple de résultat:
null ,
10Des étiquettes de lumières peuvent être demandées et définies en utilisant les méthodes suivantes:
light.getLabel(callback, [cache])Demande l'étiquette d'une lumière. Cette fonction est asynchrone.
| Option | Taper | Défaut | Description |
|---|---|---|---|
callback | fonction | function(error, data) {} | |
cache | booléen | FAUX | Utilisez la dernière valeur connue pour l'étiquette et ne demandez pas à nouveau à la lumière |
Exemple de résultat:
null ,
'Kitchen' light.setLabel(label, [callback])Définit une nouvelle étiquette pour une lumière.
| Option | Taper | Défaut | Description |
|---|---|---|---|
label | chaîne | Nouvelle étiquette avec maximum de taille 32 bits (qui est une longueur de 32 avec des caractères non unicode). | |
callback | fonction | nul | function(error) {} appelée après que la commande a atteint la lumière ou après client.resendMaxTimes avec client.resendPacketDelay au cas où elle ne le serait pas. error est null en cas de réussite et donnée si l'envoi a échoué. |
| Remarque: L'utilisation de rappel multiplie le chargement du réseau pour cette commande par deux fois ou plus. |
Exemples d'utilisation:
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)Trouvez une lumière dans la liste de toutes les lumières par IP, étiquette ou ID.
| Option | Taper | Défaut | Description |
|---|---|---|---|
identifier | chaîne | Light Label (Sensitive Client) client.light('Kitchen') , l'adresse IP client.light('192.168.2.102') ou la lumière ID client.light('0123456789012') |
Renvoie un objet léger qui peut ensuite être utilisé pour appeler des méthodes dessus. Par exemple client.light('192.168.2.102').on() .
client.lights([filter])Obtenez une liste de toutes les lumières connues
| Option | Taper | Défaut | Description |
|---|---|---|---|
filter | chaîne | nul | Filtre Liste des lumières à retourner uniquement actif ( null ou 'on' ), inactif ( 'off' ) ou tous ( '' ) |
Les événements suivants peuvent être lancés par le client.
light-new Cet événement est lancé lorsqu'il y a une nouvelle découverte lumineuse qui n'a pas été vue auparavant. Cet événement est fourni avec le nouvel objet léger. client.on('light-new', function(light) {});
light-offline Cet événement est lancé lorsqu'une lumière n'a pas été découverte depuis un certain temps. La lumière donnée ne devrait plus être accessible. client.on('light-offline', function(light) {});
light-online Cet événement est lancé lorsqu'une lumière est à nouveau découverte après avoir été hors ligne. client.on('light-online', function(light) {});
La découverte pour chaque client peut être démarrée et arrêtée lors de l'exécution en utilisant ces commandes:
client.startDiscovery()Démarre le processus de découverte.
client.stopDiscovery()Arrête le processus de découverte.
Pour l'initialisation du client, différents paramètres peuvent être fournis. Ceci est un exemple avec les options par défaut:
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
} ) ;