Освещение Mi-Light (MiLight)

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Освещение Mi-Light (MiLight)

Сообщение sergejey » Чт дек 04, 2014 12:35 pm

Приветствую,

На днях удалось выбрать время и поиграться с системой управления освещением Mi-Light от наших китайских друзей.

Система представляет собой свето-диодные лампочки со встроенным приёмником (белые с регулировкой теплоты света и RGBW), пульты и Wi-Fi контроллер. Всё работает на частоте 2.7GHz (если правильно помню)

Выглядит оно примерно вот так:

Изображение

"Традиционная" схема использования: лампочка привязывается либо к пульту напрямую либо к WiFi-контроллеру с помощью мобильного приложения (им же и управляется). Есть странная особенность -- пульты от белых ламп и от RGBW ламп не совместимы, т.е. указанным на фото пультом белой лампочкой управлять нельзя. Wi-Fi контроллер поддерживает все виды ламп. Кстати, кроме ламп ещё в ассортименте имеется контроллер RGB-лент, который так же управляется либо пультом либо через WiFi-контроллер.

WiFi-контроллер (и пульт) может управлять 4-мя лампочками либо 4-мя группами ламп (т.е. есть 4 независимых канала).

По цене, если брать усреднённо, то около $20 за отдельную единицу (пульт, лампочка, wifi-контроллер) - это уже у нас в Минске, думаю на каком aliexpress дешевле будет.

Самое интересное -- после включения WiFi-контроллера в домашнюю сеть, он может легко управляться из MajorDoMo.

Ниже простой пример использования. Я не использовал все возможности контроллера, т.к. пока было время только на проверку базовых команд -- включение и выключение лампочки, но желающие по аналогии могут дополнить другими возможностями.

Итак, в классе Relays я создал новый под-класс MiLight и объект MiLamp1

Изображение

В самом классе прописал следующие дополнительные свойства:

Изображение

В методах добавил метод sendCommand и переписал методы turnOn и turnOff:

Изображение

Коды методов:
Коды методовПоказать
Код метода turnOn

Код: Выделить всё

$this->callMethod('sendCommand',array('command'=>'on')); 
Код метода turnOff

Код: Выделить всё

$this->callMethod('sendCommand',array('command'=>'off')); 
Код метода sendCommand (в комментариях оставил все возможные коды команд для дальнейшего расширения)

Код: Выделить всё

$command=$params['command'];

$host=$this->getProperty('Host');
$type=(int)$this->getProperty('LampType');
$zone=(int)$this->getProperty('Zone');
$port=8899;

$commands='';
if ($type==0 && $command=='on' && $zone==1) {
 //&H38
 $commands=chr(0x38);
}
if ($type==0 && $command=='off' && $zone==1) {
 //{&H3B
 $commands=chr(0x3B);
}

if ($commands) {
 $commands.=chr(0).chr(0x55);
 $fp = pfsockopen( "udp://".$host, $port, $errno, $errstr );
 if ($fp) {
  socket_set_timeout ($fp, 10);
  $write = fwrite( $fp, $commands);
  fclose($fp);
 } else {
  debmes("error opening socket for milight at $host");
 }
} else {
 debmes("command '$command' not set for $host / $type / $zone");
}

/*
    Friend LimitlessLED_Command_WHITE_ALLOFF As Byte() = New Byte() {&H39, &H0, &H55}
    Friend LimitlessLED_Command_WHITE_ALLON As Byte() = New Byte() {&H35, &H0, &H55}
    Friend LimitlessLED_Command_WHITE_BRIGHTNESS_UP As Byte() = New Byte() {&H3C, &H0, &H55}
    Friend LimitlessLED_Command_WHITE_BRIGHTNESS_DOWN As Byte() = New Byte() {&H34, &H0, &H55}
    Friend LimitlessLED_Command_WHITE_WARM_WHITE_INCREASE As Byte() = New Byte() {&H3E, &H0, &H55}
    Friend LimitlessLED_Command_WHITE_COOL_WHITE_INCREASE As Byte() = New Byte() {&H3F, &H0, &H55}
    Friend LimitlessLED_Command_WHITE_GROUP_1_ALL_ON As Byte() = New Byte() {&H38, &H0, &H55}
    Friend LimitlessLED_Command_WHITE_GROUP_1_ALL_OFF As Byte() = New Byte() {&H3B, &H0, &H55}
    Friend LimitlessLED_Command_WHITE_GROUP_2_ALL_ON As Byte() = New Byte() {&H3D, &H0, &H55}
    Friend LimitlessLED_Command_WHITE_GROUP_2_ALL_OFF As Byte() = New Byte() {&H33, &H0, &H55}
    Friend LimitlessLED_Command_WHITE_GROUP_3_ALL_ON As Byte() = New Byte() {&H37, &H0, &H55}
    Friend LimitlessLED_Command_WHITE_GROUP_3_ALL_OFF As Byte() = New Byte() {&H3A, &H0, &H55}
    Friend LimitlessLED_Command_WHITE_GROUP_4_ALL_ON As Byte() = New Byte() {&H32, &H0, &H55}
    Friend LimitlessLED_Command_WHITE_GROUP_4_ALL_OFF As Byte() = New Byte() {&H36, &H0, &H55}
    Friend LimitlessLED_Command_WHITE_NIGHT_MODE_ALL As Byte() = New Byte() {&H39, &H0, &H55} '100ms followed by: 0xB9
    Friend LimitlessLED_Command_WHITE_NIGHT_MODE_ALL_PRESSAndHOLD As Byte() = New Byte() {&HBB, &H0, &H55}
    Friend LimitlessLED_Command_WHITE_NIGHT_SAVER_MODE_GROUP_1 As Byte() = New Byte() {&H3B, &H0, &H55} '100ms followed by: 0xBB
    Friend LimitlessLED_Command_WHITE_NIGHT_SAVER_MODE_GROUP_1_PRESSAndHOLD As Byte() = New Byte() {&HBB, &H0, &H55}
    Friend LimitlessLED_Command_WHITE_NIGHT_SAVER_MODE_GROUP_2 As Byte() = New Byte() {&H33, &H0, &H55} '100ms followed by: 0xB3
    Friend LimitlessLED_Command_WHITE_NIGHT_SAVER_MODE_GROUP_2_PRESSAndHOLD As Byte() = New Byte() {&HB3, &H0, &H55}
    Friend LimitlessLED_Command_WHITE_NIGHT_SAVER_MODE_GROUP_3 As Byte() = New Byte() {&H3A, &H0, &H55} '100ms followed by: 0xBA
    Friend LimitlessLED_Command_WHITE_NIGHT_SAVER_MODE_GROUP_3_PRESSAndHOLD As Byte() = New Byte() {&HBA, &H0, &H55}
    Friend LimitlessLED_Command_WHITE_NIGHT_SAVER_MODE_GROUP_4 As Byte() = New Byte() {&H36, &H0, &H55} '100ms followed by: 0xB6
    Friend LimitlessLED_Command_WHITE_NIGHT_SAVER_MODE_GROUP_4_PRESSAndHOLD As Byte() = New Byte() {&HB6, &H0, &H55}
    Friend LimitlessLED_Command_WHITE_FULL_BRIGHTNESS_ALL As Byte() = New Byte() {&H35, &H0, &H55} '100ms followed by: 0xB5
    Friend LimitlessLED_Command_WHITE_FULL_BRIGHTNESS_ALL_PRESSAndHOLD As Byte() = New Byte() {&HB5, &H0, &H55}
    Friend LimitlessLED_Command_WHITE_FULL_BRIGHTNESS_GROUP_1 As Byte() = New Byte() {&H38, &H0, &H55} '100ms followed by: 0xB8
    Friend LimitlessLED_Command_WHITE_FULL_BRIGHTNESS_GROUP_1_PRESSAndHOLD As Byte() = New Byte() {&HB8, &H0, &H55}
    Friend LimitlessLED_Command_WHITE_FULL_BRIGHTNESS_GROUP_2 As Byte() = New Byte() {&H3D, &H0, &H55} '100ms followed by: 0xBD
    Friend LimitlessLED_Command_WHITE_FULL_BRIGHTNESS_GROUP_2_PRESSAndHOLD As Byte() = New Byte() {&HBD, &H0, &H55}
    Friend LimitlessLED_Command_WHITE_FULL_BRIGHTNESS_GROUP_3 As Byte() = New Byte() {&H37, &H0, &H55} '100ms followed by: 0xB7
    Friend LimitlessLED_Command_WHITE_FULL_BRIGHTNESS_GROUP_3_PRESSAndHOLD As Byte() = New Byte() {&HB7, &H0, &H55}
    Friend LimitlessLED_Command_WHITE_FULL_BRIGHTNESS_GROUP_4 As Byte() = New Byte() {&H32, &H0, &H55} '100ms followed by: 0xB2
    Friend LimitlessLED_Command_WHITE_FULL_BRIGHTNESS_GROUP_4_PRESSAndHOLD As Byte() = New Byte() {&HB2, &H0, &H55}

    Friend LimitlessLED_Command_RGB_ALLOFF As Byte() = New Byte() {&H21, &H0, &H55}
    Friend LimitlessLED_Command_RGB_ALLON As Byte() = New Byte() {&H22, &H0, &H55}
    Friend LimitlessLED_Command_RGB_BRIGHTNESS_UP As Byte() = New Byte() {&H23, &H0, &H55}
    Friend LimitlessLED_Command_RGB_BRIGHTNESS_DOWN As Byte() = New Byte() {&H24, &H0, &H55}
    Friend LimitlessLED_Command_RGB_DISCO_SPEED_FASTER As Byte() = New Byte() {&H25, &H0, &H55}
    Friend LimitlessLED_Command_RGB_DISCO_SPEED_SLOWER As Byte() = New Byte() {&H26, &H0, &H55}
    Friend LimitlessLED_Command_RGB_DISCO_MODE_NEXT As Byte() = New Byte() {&H27, &H0, &H55}
    Friend LimitlessLED_Command_RGB_DISCO_MODE_PREVIOUS As Byte() = New Byte() {&H28, &H0, &H55}
    Friend LimitlessLED_Command_RGB_SET_COLOR As Byte() = New Byte() {&H20, &H0, &H55}

    Friend LimitlessLED_Command_RGBW_ALLOFF As Byte() = New Byte() {&H41, &H0, &H55}
    Friend LimitlessLED_Command_RGBW_ALLON As Byte() = New Byte() {&H42, &H0, &H55}
    Friend LimitlessLED_Command_RGBW_DISCO_SPEED_SLOWER As Byte() = New Byte() {&H43, &H0, &H55}
    Friend LimitlessLED_Command_RGBW_DISCO_SPEED_FASTER As Byte() = New Byte() {&H44, &H0, &H55}
    Friend LimitlessLED_Command_RGBW_GROUP_1_ALL_ON As Byte() = New Byte() {&H45, &H0, &H55}
    Friend LimitlessLED_Command_RGBW_GROUP_1_ALL_OFF As Byte() = New Byte() {&H46, &H0, &H55}
    Friend LimitlessLED_Command_RGBW_GROUP_2_ALL_ON As Byte() = New Byte() {&H47, &H0, &H55}
    Friend LimitlessLED_Command_RGBW_GROUP_2_ALL_OFF As Byte() = New Byte() {&H48, &H0, &H55}
    Friend LimitlessLED_Command_RGBW_GROUP_3_ALL_ON As Byte() = New Byte() {&H49, &H0, &H55}
    Friend LimitlessLED_Command_RGBW_GROUP_3_ALL_OFF As Byte() = New Byte() {&H4A, &H0, &H55}
    Friend LimitlessLED_Command_RGBW_GROUP_4_ALL_ON As Byte() = New Byte() {&H4B, &H0, &H55}
    Friend LimitlessLED_Command_RGBW_GROUP_4_ALL_OFF As Byte() = New Byte() {&H4C, &H0, &H55}
    Friend LimitlessLED_Command_RGBW_DISCO_MODE_NEXT As Byte() = New Byte() {&H4D, &H0, &H55}
    Friend LimitlessLED_Command_RGBW_WHITE_ALL As Byte() = New Byte() {&H42, &H0, &H55} '100ms followed by: 0xC2
    Friend LimitlessLED_Command_RGBW_WHITE_ALL_PRESSAndHOLD As Byte() = New Byte() {&HC2, &H0, &H55}
    Friend LimitlessLED_Command_RGBW_WHITE_GROUP_1 As Byte() = New Byte() {&H45, &H0, &H55} '100ms followed by: 0xC5
    Friend LimitlessLED_Command_RGBW_WHITE_GROUP_1_PRESSAndHOLD As Byte() = New Byte() {&HC5, &H0, &H55}
    Friend LimitlessLED_Command_RGBW_WHITE_GROUP_2 As Byte() = New Byte() {&H47, &H0, &H55} '100ms followed by: 0xC7
    Friend LimitlessLED_Command_RGBW_WHITE_GROUP_2_PRESSAndHOLD As Byte() = New Byte() {&HC7, &H0, &H55}
    Friend LimitlessLED_Command_RGBW_WHITE_GROUP_3 As Byte() = New Byte() {&H49, &H0, &H55} '100ms followed by: 0xC9
    Friend LimitlessLED_Command_RGBW_WHITE_GROUP_3_PRESSAndHOLD As Byte() = New Byte() {&HC9, &H0, &H55}
    Friend LimitlessLED_Command_RGBW_WHITE_GROUP_4 As Byte() = New Byte() {&H4B, &H0, &H55} '100ms followed by: 0xCB
    Friend LimitlessLED_Command_RGBW_WHITE_GROUP_4_PRESSAndHOLD As Byte() = New Byte() {&HCB, &H0, &H55}
    Friend LimitlessLED_Command_RGBW_SET_BRIGHTNESS As Byte() = New Byte() {&H4E, &H0, &H55}
    Friend LimitlessLED_Command_RGBW_SET_COLOR As Byte() = New Byte() {&H40, &H0, &H55}

    Friend RGBW_Violet As Integer = &H0
    Friend RGBW_RoyalBlue As Integer = &H10
    Friend RGBW_LightSkyBlue As Integer = &H20
    Friend RGBW_Aqua As Integer = &H30
    Friend RGBW_AquaMarine As Integer = &H40
    Friend RGBW_SeaGreen As Integer = &H50
    Friend RGBW_Green As Integer = &H60
    Friend RGBW_LimeGreen As Integer = &H70
    Friend RGBW_Yellow As Integer = &H80
    Friend RGBW_Goldenrod As Integer = &H90
    Friend RGBW_Orange As Integer = &HA0
    Friend RGBW_Red As Integer = &HB0
    Friend RGBW_Pink As Integer = &HC0
    Friend RGBW_Fuchsia As Integer = &HD0
    Friend RGBW_Orchid As Integer = &HE0
    Friend RGBW_Lavender As Integer = &HF0
*/ 
Далее в объекте MiLamp1 установил данные лампочки, предварительно с помощью приложения привязанной к зоне 1 WiFi-контроллера:
Изображение

Собственно, практически всё. Напоследок добавил пункт в меню для управления:
Изображение

Который успешно заработал в интерфейсе:
Изображение

Работает очень быстро и достаточно надёжно. Расстояние не замерял, но при нахождении контроллера и лампочек в одной комнате, всё работает отлично и без сбоев. С пультом уходил довольно далеко (около 10 метров + 1 кирпичная стена) и всё ещё работало без сбоев.

Предварительные выводы: вполне себе недорогая и достаточно удобная в монтаже система для управления светом. Явный минус -- отсутствие простого способа управления через стандартный выключатель.

Спасибо за внимание :)
За это сообщение автора sergejey поблагодарили (всего 4):
Vit (Чт дек 04, 2014 10:48 pm) • Amarok (Пт дек 05, 2014 9:44 am) • krasnov (Сб дек 13, 2014 10:29 am) • Supermin (Сб янв 31, 2015 1:58 pm)
Рейтинг: 4.65%

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Освещение Mi-Light (MiLight)

Сообщение sergejey » Пн дек 15, 2014 5:43 pm

Обновил класс MiLight, выкладываю файлом для импорта.

* Поддерживаются 4-ре независимые зоны
* Работает как с "белыми" лампами, так и с RGBW
* Методы класса: включение (turnOn), выключение (turnOff), установка яркости (setLevel), установка цвета (setColor)
Вложения
MiLight.zip
(5.35 КБ) 705 скачиваний

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Jager
Сообщения: 708
Зарегистрирован: Сб авг 18, 2012 10:21 am
Благодарил (а): 26 раз
Поблагодарили: 183 раза

Re: Освещение Mi-Light (MiLight)

Сообщение Jager » Вт янв 27, 2015 6:05 pm

sergejey писал(а):Обновил класс MiLight
Сергей, вроде со всем разобрался кроме того как реализовать выбор цвета в меню.
Подскажите. Спасибо.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Освещение Mi-Light (MiLight)

Сообщение sergejey » Сб янв 31, 2015 10:27 am

Я немного подправил код для метода setColor класса MiLight:

Код: Выделить всё

$this->setProperty('status',1);
$this->setProperty('Mode','C');
if ($params['color']) {
 $this->setProperty('Color',$params['color']);
} else {
 $params['color']=$this->getProperty('Color');
}
$this->callMethod('sendCommand',array('command'=>'color','value'=>$params['color'])); 
Теперь можно чере то же поле выбора устанавливать значение свойства Color , а затем поставить вызов метода setColor, чтобы он установился.
Да, и цвет должен быть всё же формата #0f26d0 , т.е. с "#" в начале. Хотя, честно говоря, можно попробовать и без.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Jager
Сообщения: 708
Зарегистрирован: Сб авг 18, 2012 10:21 am
Благодарил (а): 26 раз
Поблагодарили: 183 раза

Re: Освещение Mi-Light (MiLight)

Сообщение Jager » Сб янв 31, 2015 12:05 pm

sergejey писал(а):Я немного подправил код для метода setColor класса MiLight
Да, и цвет должен быть всё же формата #0f26d0 , т.е. с "#" в начале. Хотя, честно говоря, можно попробовать и без.
Спасибо. Все работает и без #.
jonyzs
Сообщения: 86
Зарегистрирован: Чт фев 21, 2013 11:35 pm
Благодарил (а): 4 раза
Поблагодарили: 2 раза

Re: Освещение Mi-Light (MiLight)

Сообщение jonyzs » Вт фев 03, 2015 9:27 pm

Тоже приобрёл себе комплект mi-light http://www.aliexpress.com/store/product ... 43463.html ,подключил ленту rgbw с белым светом разобралсья как включать,покажите пример как реализовать управление цветом,было бы хорошо наглядным примером.
timurufa86
Сообщения: 65
Зарегистрирован: Вт фев 17, 2015 8:40 pm
Благодарил (а): 19 раз
Поблагодарили: 2 раза

Re: Освещение Mi-Light (MiLight)

Сообщение timurufa86 » Вт фев 17, 2015 8:47 pm

Здравствуйте Единомышленники!
Я как понял контроллер RGB лент МиЛайт не работает без wifi контроллера?
Если так то для каждой группы ламп необходимо лампы милайт + wifi контроллер если сих лампами или контроллер rgb milight и wifi контроллер
если так то как wifi контоллер подключается к мажердомо???
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Освещение Mi-Light (MiLight)

Сообщение sergejey » Вт фев 17, 2015 9:38 pm

timurufa86 писал(а):Здравствуйте Единомышленники!
Я как понял контроллер RGB лент МиЛайт не работает без wifi контроллера?
Если так то для каждой группы ламп необходимо лампы милайт + wifi контроллер если сих лампами или контроллер rgb milight и wifi контроллер
Да, именно так. Один контроллер на четыре группы ламп.
timurufa86 писал(а):если так то как wifi контоллер подключается к мажердомо???
Нужно знать IP-адрес контроллера в wifi сети и обращаться к нему используя функции, обсуждаемые в этом топике.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Rostov-na-Donu
Сообщения: 3
Зарегистрирован: Пн ноя 02, 2015 12:22 pm
Благодарил (а): 1 раз
Поблагодарили: 0

Re: Освещение Mi-Light (MiLight)

Сообщение Rostov-na-Donu » Вт ноя 03, 2015 9:27 am

Всем привет!
Хотел заставить MiLight работать как искусственный рассвет (очень актуально осенью-зимой). НО возникла проблема:
если в одном сценарии использовать вызов метода для лампочки несколько раз, после первого раза вылетает ошибка, что невозможно пере-объявить класс
(Fatal error: Cannot redeclare class Milight in C:\_majordomo\htdocs\modules\objects\objects.class.php(536) : eval()'d code on line 133)
То есть, первый вызов срабатывает, а на втором уже вываливается ошибка. Грешу на sendCommand, т.к. для всех команд используется он, и в нём прописано $milight = new Milight($host);
То есть, как я понял, это, создание нового экземпляра класса. Есть ли смысл внедрить рассвет в метод sendCommand или может, есть способ убивать этот экземпляр перед выполнением следующей итерации?

На всякий случай, мой крайний вариант кода (их было уже много).

Код: Выделить всё

// Каждые 5 секунд увеличиваем яркость с шагом 10 процентов до 50%
for ($i = 1; $i <= 5; $i++) 
{
     $name='MiLamp2';
     $obj=getObject($name);
     
    $obj->setProperty('Level',$i*10);
    $obj->callMethod('sendCommand',array('command'=>'level','value'=>$i*10));
    sleep(5);
}
 
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Освещение Mi-Light (MiLight)

Сообщение sergejey » Вт ноя 03, 2015 10:38 am

Rostov-na-Donu писал(а):Всем привет!
Хотел заставить MiLight работать как искусственный рассвет (очень актуально осенью-зимой). НО возникла проблема:
если в одном сценарии использовать вызов метода для лампочки несколько раз, после первого раза вылетает ошибка, что невозможно пере-объявить класс
(Fatal error: Cannot redeclare class Milight in C:\_majordomo\htdocs\modules\objects\objects.class.php(536) : eval()'d code on line 133)
То есть, первый вызов срабатывает, а на втором уже вываливается ошибка. Грешу на sendCommand, т.к. для всех команд используется он, и в нём прописано $milight = new Milight($host);
То есть, как я понял, это, создание нового экземпляра класса. Есть ли смысл внедрить рассвет в метод sendCommand или может, есть способ убивать этот экземпляр перед выполнением следующей итерации?
Я немного переделал sendCommand, создав файл ./lib/hardware/milight.php следующего содержания: http://c2n.me/3pLnKyT.php

и сам метод sendcommand переделал:
sendcommandПоказать

Код: Выделить всё

$this->setProperty('updated',time());
$this->setProperty('updatedTime',date('H:i'));

include_once(ROOT.'lib/hardware/milight.php');

if (is_array($params)) {
 $command=$params['command'];
 $value=$params['value'];
} else {
 $command=$params;
}

$host=$this->getProperty('Host');
$type=(int)$this->getProperty('LampType');
$zone=(int)$this->getProperty('Zone');


$milight = new Milight($host);

$commands='';

if ($type==0) {
 $milight->setWhiteActiveGroup($zone);
 if ($command=='leveldown') {
  $milight->command('whiteBrightnessDown');
 }
 if ($command=='levelup') {
  $milight->command('whiteBrightnessUp');
 }
 if ($command=='level' && $value>=90) {
  $command='levelmax';
 } 
  if ($command=='level' && $value<=90) {
  $command='levelmin';
 } 
 if ($command=='levelmax') {
  $milight->command('whiteGroup'.$zone.'BrightnessMax');
 } 
if ($command=='levelmin') {
  $milight->command('whiteGroup'.$zone.'BrightnessMin');
 }  
 if ($command=='nightmode') {
  $milight->command('whiteGroup'.$zone.'NightMode');
 }  

 if ($zone==1) {
  if ($command=='on') {
   $milight->whiteGroup1On();
  }
  if ($command=='off') {
   $milight->whiteGroup1Off(); 
  }
 }
 if ($zone==2) {
  if ($command=='on') {
   $milight->whiteGroup2On();
  }
  if ($command=='off') {
   $milight->whiteGroup2Off(); 
  }
 } 
 if ($zone==3) {
  if ($command=='on') {
   $milight->whiteGroup3On();
  }
  if ($command=='off') {
   $milight->whiteGroup3Off(); 
  }
 } 
 if ($zone==4) {
  if ($command=='on') {
   $milight->whiteGroup4On();
  }
  if ($command=='off') {
   $milight->whiteGroup4Off(); 
  }
 } 

}

if ($type==1) {
 if ($command=='disco') {
   $milight->setRgbwActiveGroup($zone);  
   $milight->rgbwSendOnToActiveGroup();
   $milight->command('rgbwDiscoMode');
 }
 if ($command=='discofaster') {
   $milight->setRgbwActiveGroup($zone);  
   $milight->rgbwSendOnToActiveGroup();
   $milight->command('rgbwDiscoFaster');
 } 
 if ($command=='discoslower') {
   $milight->setRgbwActiveGroup($zone);  
   $milight->rgbwSendOnToActiveGroup();
   $milight->command('rgbwDiscoSlower');
 } 
 
 if ($command=='level') {
  $milight->setRgbwActiveGroup($zone);
  $milight->rgbwBrightnessPercent($value);
 }
 if ($command=='color') {
  $milight->setRgbwActiveGroup($zone);
  $milight->rgbwSetColorHexString($value);
 } 
 
 if ($zone==1) {
  if ($command=='on') {
   $milight->rgbwGroup1On();
  }
  if ($command=='off') {
   $milight->rgbwGroup1Off();
  }
  if ($command=='white') {
   $milight->rgbwGroup1SetToWhite();
  }  
 }
 if ($zone==2) {
  if ($command=='on') {
   $milight->rgbwGroup2On();
  }
  if ($command=='off') {
   $milight->rgbwGroup2Off();
  }
  if ($command=='white') {
   $milight->rgbwGroup2SetToWhite();
  }    
 }
 if ($zone==3) {
  if ($command=='on') {
   $milight->rgbwGroup3On();
  }
  if ($command=='off') {
   $milight->rgbwGroup3Off();
  }
  if ($command=='white') {
   $milight->rgbwGroup3SetToWhite();
  }    
 } 
 if ($zone==4) {
  if ($command=='on') {
   $milight->rgbwGroup4On();
  }
  if ($command=='off') {
   $milight->rgbwGroup4Off();
  }
  if ($command=='white') {
   $milight->rgbwGroup4SetToWhite();
  }    
 }  
}
sleep(1); 
За это сообщение автора sergejey поблагодарил:
Rostov-na-Donu (Вт ноя 03, 2015 10:42 am)
Рейтинг: 1.16%

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Ответить