Предупреждение : в этом хранилище в настоящее время нет активного сопровождающего. По этой причине развитие устарело. Подумайте об использовании активной вилки, например, Lifx-Lan-Client.
Node.js реализация протокола LIFX. Разработано для работы с минимальной версией прошивки 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 и Emmits, когда происходят какие -либо изменения. Это может быть новое открытие света, свет, отправляющий сообщение или аналогичное. Клиент начинает обнаружение света сразу после того, как он инициализируется с помощью метода 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 | инт | 0 | Включение будет исчезло за время (в миллисекундах). |
callback | функция | нулевой | function(error) {} вызван после того, как команда достигла света или после client.resendMaxTimes Resendmaxtimes с 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 | инт | 0 | Выключение будет исчезло за время (в миллисекундах). |
callback | функция | нулевой | function(error) {} вызван после того, как команда достигла света или после client.resendMaxTimes Resendmaxtimes с 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 | инт | От 0 до 360, представляя цвет цвета в степени, который меняет цвет. | |
saturation | инт | От 0 до 100, представляя интенсивность цвета от 0% до 100%. | |
brightness | инт | От 0 до 100, представляющая яркость света от 0% до 100%. | |
kelvin | инт | 3500 | От 2500 до 9000, представляя цветовую температуру. |
duration | инт | 0 | Затухают цвет до новой стоимости с течением времени (в миллисекундах). |
callback | функция | нулевой | function(error) {} вызван после того, как команда достигла света или после client.resendMaxTimes Resendmaxtimes с 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 плохо представляет цвет света, предпочитают значения HSBK, заданные с помощью метода color .
| Вариант | Тип | По умолчанию | Описание |
|---|---|---|---|
hexString | нить | Строка HEX RGB, начиная с # | |
duration | инт | 0 | Затухают цвет до новой стоимости с течением времени (в миллисекундах). |
callback | функция | нулевой | function(error) {} вызван после того, как команда достигла света или после client.resendMaxTimes Resendmaxtimes с 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 плохо представляет цвет света, предпочитают значения HSBK, заданные с помощью метода color .
| Вариант | Тип | По умолчанию | Описание |
|---|---|---|---|
red | инт | Amout of red in от 0 до 255 | |
green | инт | Amout of Green в цвете от 0 до 255 | |
blue | инт | Amout of Blue в цвете от 0 до 255 | |
duration | инт | 0 | Затухают цвет до новой стоимости с течением времени (в миллисекундах). |
callback | функция | нулевой | function(error) {} вызван после того, как команда достигла света или после client.resendMaxTimes Resendmaxtimes с 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 | инт | От 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 of State и Spec света могут быть запрошены следующими методами:
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)Запрашивает информацию Wi -Fi от света (сигнал, TX и RX). Эта функция асинхронна.
| Вариант | Тип | По умолчанию | Описание |
|---|---|---|---|
callback | функция | function(error, data) {} |
Пример результата:
null ,
{
signal : 0.000009999999747378752 ,
tx : 16584 ,
rx : 12580
} light.getWifiVersion(callback)Запрашивает версию прошивки Wi -Fi от Light (небольшая и основная версия). Эта функция асинхронна.
| Вариант | Тип | По умолчанию | Описание |
|---|---|---|---|
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 с nonicode chars). | |
callback | функция | нулевой | function(error) {} вызван после того, как команда достигла света или после client.resendMaxTimes Resendmaxtimes с 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, метке или идентификатору.
| Вариант | Тип | По умолчанию | Описание |
|---|---|---|---|
identifier | нить | Light Label (Case Sensive) 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 Это событие брошено, когда есть новое открытие света, которое раньше не было видно во время выполнения. Это событие обеспечивается новым объектом Light. 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
} ) ;