ADVERTENCIA : Este repositorio actualmente no tiene un mantenedor activo. Por esa razón, el desarrollo es obsoleto. Considere usar un bifurcado activo, como LIFX-Lan-Client.
Una implementación de node.js del protocolo LIFX. Desarrollado para trabajar con una versión mínima de firmware de 2.0.
Esta biblioteca no está, de ninguna manera, afiliada o relacionada con Lifi Labs, Inc .. Usarla bajo su propio riesgo.
$ npm install node-lifx --saveNode.js 0.12+ e io.js se prueban y admiten en Mac, Linux y Windows.
El archivo cli.js contiene un ejemplo de trabajo.
La biblioteca utiliza un cliente para la comunicación de red. Este cliente maneja la comunicación con todas las luces en la red.
var LifxClient = require ( 'node-lifx' ) . Client ;
var client = new LifxClient ( ) ;
client . init ( ) ; El objeto Client es un EventEmister y emmite eventos cada vez que ocurren cambios. Este puede ser un nuevo descubrimiento de luz, una luz que envía un mensaje o similar. El cliente inicia el descubrimiento de las luces justo después de que se inicialice con el método init . Si se encuentra una nueva luz, el cliente emite un evento light-new . Este evento contiene la luz como un objeto en el que se pueden llamar métodos entonces:
var LifxClient = require ( 'node-lifx' ) . Client ;
var client = new LifxClient ( ) ;
client . on ( 'light-new' , function ( light ) {
// Change light state here
} ) ;
client . init ( ) ;Los estados de una luz se pueden cambiar con diferentes métodos:
light.on([duration], [callback])Esto enciende una luz.
| Opción | Tipo | Por defecto | Descripción |
|---|---|---|---|
duration | intencionalmente | 0 | Encender se desvanecerá durante el tiempo (en milisegundos). |
callback | función | nulo | function(error) {} llamado después de que el comando haya alcanzado la luz o después client.resendMaxTimes con client.resendPacketDelay en caso de que no lo haya hecho. error es null en caso de éxito y dado si el envío ha fallado. |
| Nota: El uso de la devolución de llamada multiplica la carga de red para este comando en dos o más veces. |
Ejemplos de uso:
light . on ( ) ; // Turns the light on instantly
light . on ( 2000 ) ; // Fading the light on over two seconds light.off([duration], [callback])Esto apaga una luz.
| Opción | Tipo | Por defecto | Descripción |
|---|---|---|---|
duration | intencionalmente | 0 | Apagarse se desvanecerá durante el tiempo (en milisegundos). |
callback | función | nulo | function(error) {} llamado después de que el comando haya alcanzado la luz o después client.resendMaxTimes con client.resendPacketDelay en caso de que no lo haya hecho. error es null en caso de éxito y dado si el envío ha fallado. |
| Nota: El uso de la devolución de llamada multiplica la carga de red para este comando en dos o más veces. |
Ejemplos de uso:
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])Cambia el color de una luz a un valor de color HSB. Este es el método preferido para cambiar el color de una luz.
| Opción | Tipo | Por defecto | Descripción |
|---|---|---|---|
hue | intencionalmente | Entre 0 y 360, representando el tono de color en grado que cambia el color. | |
saturation | intencionalmente | Entre 0 y 100, representando la intensidad del color del 0% al 100%. | |
brightness | intencionalmente | Entre 0 y 100, representando el brillo de la luz del 0% al 100%. | |
kelvin | intencionalmente | 3500 | Entre 2500 y 9000, representando la temperatura de color. |
duration | intencionalmente | 0 | Descande el color al nuevo valor a lo largo del tiempo (en milisegundos). |
callback | función | nulo | function(error) {} llamado después de que el comando haya alcanzado la luz o después client.resendMaxTimes con client.resendPacketDelay en caso de que no lo haya hecho. error es null en caso de éxito y dado si el envío ha fallado. |
| Nota: El uso de la devolución de llamada multiplica la carga de red para este comando en dos o más veces. |
Ejemplos de uso:
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]) Cambia el color de una luz a un valor de color RGB dado en formato hexadecimal. Tenga en cuenta que RGB representa mal el color de la luz, prefiera los valores de HSBK dados a través del método color .
| Opción | Tipo | Por defecto | Descripción |
|---|---|---|---|
hexString | cadena | Una cadena HEX RGB que comienza con # | |
duration | intencionalmente | 0 | Descande el color al nuevo valor a lo largo del tiempo (en milisegundos). |
callback | función | nulo | function(error) {} llamado después de que el comando haya alcanzado la luz o después client.resendMaxTimes con client.resendPacketDelay en caso de que no lo haya hecho. error es null en caso de éxito y dado si el envío ha fallado. |
| Nota: El uso de la devolución de llamada multiplica la carga de red para este comando en dos o más veces. |
Ejemplos de uso:
light . colorRgbHex ( '#F00' ) ; // Set to red
light . colorRgbHex ( '#FFFF00' ) ; // Set to yellow light.colorRgb(red, green, blue, [duration], [callback]) Cambia el color de una luz a un valor de color RGB. Tenga en cuenta que RGB representa mal el color de la luz, prefiera los valores de HSBK dados a través del método color .
| Opción | Tipo | Por defecto | Descripción |
|---|---|---|---|
red | intencionalmente | Unout de color rojo de 0 a 255 | |
green | intencionalmente | Unout de color verde de 0 a 255 | |
blue | intencionalmente | Unout de color azul de 0 a 255 | |
duration | intencionalmente | 0 | Descande el color al nuevo valor a lo largo del tiempo (en milisegundos). |
callback | función | nulo | function(error) {} llamado después de que el comando haya alcanzado la luz o después client.resendMaxTimes con client.resendPacketDelay en caso de que no lo haya hecho. error es null en caso de éxito y dado si el envío ha fallado. |
| Nota: El uso de la devolución de llamada multiplica la carga de red para este comando en dos o más veces. |
Ejemplos de uso:
light . colorRgb ( 255 , 0 , 0 ) ; // Set to red
light . colorRgb ( 255 , 255 , 0 ) ; // Set to yellow light.maxIR(brightness, callback)Establezca el brillo infrarrojo máximo de la luz (solo para luces que soportan la luz infrarroja)
| Opción | Tipo | Por defecto | Descripción |
|---|---|---|---|
brightness | intencionalmente | Entre 0 y 100, representando el brillo de la luz del 0% al 100%. | |
callback | función | function(error, data) {} |
Ejemplos de uso:
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)Solicita el máximo brillo infrarrojo de la luz (solo para luces que soportan la luz infrarroja)
| Opción | Tipo | Por defecto | Descripción |
|---|---|---|---|
callback | función | function(error, data) {} |
Resultado de ejemplo:
null ,
{
brightness : 25
}Las infos del estado y las especificaciones de la luz se pueden solicitar con los siguientes métodos:
light.getState(callback)Solicita información general de una luz, esto incluye color, etiqueta y estado eléctrico. Esta función es asíncrona.
| Opción | Tipo | Por defecto | Descripción |
|---|---|---|---|
callback | función | function(error, data) {} |
Resultado de ejemplo:
null ,
{
color : { hue : 120 , saturation : 0 , brightness : 100 , kelvin : 8994 } ,
power : 0 ,
label : 'Kitchen'
} light.getPower(callback)Solicita el estado de energía actual (encendido o apagado). Esta función es asíncrona.
| Opción | Tipo | Por defecto | Descripción |
|---|---|---|---|
callback | función | function(error, data) {} |
Resultado de ejemplo:
null ,
0 // off light.getFirmwareVersion(callback)Solicita la versión de firmware de una luz (versión menor y principal). Esta función es asíncrona.
| Opción | Tipo | Por defecto | Descripción |
|---|---|---|---|
callback | función | function(error, data) {} |
Resultado de ejemplo:
null ,
{
majorVersion : 2 ,
minorVersion : 1
} light.getHardwareVersion(callback)Solicita la versión de hardware de una luz (proveedor, producto y versión). Esta función es asíncrona.
| Opción | Tipo | Por defecto | Descripción |
|---|---|---|---|
callback | función | function(error, data) {} |
Resultado de ejemplo:
null ,
{
vendorId : 1 ,
vendorName : 'LIFX' ,
productId : 1 ,
productName : 'Original 1000' ,
version : 6 ,
productFeatures : {
color : true ,
infrared : false ,
multizone : false
}
} light.getFirmwareInfo(callback)Solicita información de la unidad de micro controlador de una luz (señal, TX y RX). Esta función es asíncrona.
| Opción | Tipo | Por defecto | Descripción |
|---|---|---|---|
callback | función | function(error, data) {} |
Resultado de ejemplo:
null ,
{
signal : 0 ,
tx : 0 ,
rx : 0
} light.getWifiInfo(callback)Solicita información WiFi de una luz (señal, TX y RX). Esta función es asíncrona.
| Opción | Tipo | Por defecto | Descripción |
|---|---|---|---|
callback | función | function(error, data) {} |
Resultado de ejemplo:
null ,
{
signal : 0.000009999999747378752 ,
tx : 16584 ,
rx : 12580
} light.getWifiVersion(callback)Solicita la versión de firmware WiFi de la luz (versión menor y principal). Esta función es asíncrona.
| Opción | Tipo | Por defecto | Descripción |
|---|---|---|---|
callback | función | function(error, data) {} |
Resultado de ejemplo:
null ,
{
majorVersion : 2 ,
minorVersion : 1
} light.getAmbientLight(callback)Solicita el valor de la luz ambiental en flujo desde la luz. Esta función es asíncrona.
| Opción | Tipo | Por defecto | Descripción |
|---|---|---|---|
callback | función | function(error, data) {} |
Resultado de ejemplo:
null ,
10Se pueden solicitar y establecer etiquetas de luces utilizando los siguientes métodos:
light.getLabel(callback, [cache])Solicita la etiqueta de una luz. Esta función es asíncrona.
| Opción | Tipo | Por defecto | Descripción |
|---|---|---|---|
callback | función | function(error, data) {} | |
cache | booleano | FALSO | Use el último valor conocido para la etiqueta y no vuelva a solicitar desde la luz |
Resultado de ejemplo:
null ,
'Kitchen' light.setLabel(label, [callback])Establece una nueva etiqueta para una luz.
| Opción | Tipo | Por defecto | Descripción |
|---|---|---|---|
label | cadena | Nueva etiqueta con un tamaño máximo de 32 bits (que es una longitud de 32 con caracteres no unicode). | |
callback | función | nulo | function(error) {} llamado después de que el comando haya alcanzado la luz o después client.resendMaxTimes con client.resendPacketDelay en caso de que no lo haya hecho. error es null en caso de éxito y dado si el envío ha fallado. |
| Nota: El uso de la devolución de llamada multiplica la carga de red para este comando en dos o más veces. |
Ejemplos de uso:
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)Encuentre una luz en la lista de todas las luces por IP, etiqueta o identificación.
| Opción | Tipo | Por defecto | Descripción |
|---|---|---|---|
identifier | cadena | Etiqueta de luz (Sensitive) client.light('Kitchen') , la dirección IP client.light('192.168.2.102') o el ID de luz client.light('0123456789012') |
Devuelve un objeto ligero que luego se puede usar para llamar a los métodos. Por ejemplo client.light('192.168.2.102').on() .
client.lights([filter])Obtenga una lista de todas las luces conocidas
| Opción | Tipo | Por defecto | Descripción |
|---|---|---|---|
filter | cadena | nulo | Lista de filtros de luces para devolver solo activo ( null o 'on' ), inactivo ( 'off' ) o todos ( '' ) |
El cliente puede lanzar los siguientes eventos.
light-new Este evento se lanza cuando hay un nuevo descubrimiento de luz que no se ha visto en tiempo de ejecución antes. Este evento se proporciona con el nuevo objeto de luz. client.on('light-new', function(light) {});
light-offline Este evento se lanza cuando no se ha descubierto una luz por un tiempo. Ya no se espera que la luz dada sea accesible. client.on('light-offline', function(light) {});
light-online Este evento se lanza cuando se descubre una luz nuevamente después de estar fuera de línea. client.on('light-online', function(light) {});
El descubrimiento para cada cliente se puede iniciar y detenerse en tiempo de ejecución usando estos comandos:
client.startDiscovery()Comienza el proceso de descubrimiento.
client.stopDiscovery()Detiene el proceso de descubrimiento.
Para la inicialización del cliente se pueden proporcionar diferentes configuraciones. Este es un ejemplo con las opciones predeterminadas:
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
} ) ;