Управление лампочками Yeelight
Модератор: immortal
-
- Сообщения: 292
- Зарегистрирован: Вт окт 17, 2017 11:29 am
- Откуда: Украина, Киев
- Благодарил (а): 15 раз
- Поблагодарили: 33 раза
Re: Управление лампочками Yeelight
Задам вопрос здесь, никак не могу найти на форуме. Как объединить несколько лампочек по свойству status и bright на одну кнопку и слайдер?
Ubuntu Server 16.04 LTS, OpenWRT 1-wire, SonOFF, MYSensors, MiHome, Yeelight, MiFlower
-
- Сообщения: 23
- Зарегистрирован: Пт окт 07, 2016 7:35 pm
- Откуда: Москва
- Благодарил (а): 0
- Поблагодарили: 1 раз
Re: Управление лампочками Yeelight
Привет! Все с наступающим Новым Годом! Нужна помощь знатоков php) в общем попытался сделать прослушку TCP порта. Результат есть, но не совсем тот, какой хотелось бы. Пока смог победить только для одного устройства. При запуске кода через скрипт все работает, свойства со светильника читает (потолочный светильник), на сценах и в меню все обновляется. Попытался добавить в cycle_Yeelight.php. Стала вываливаться такая ошибка:
что самое интересное - после удаления того что вставлял ошибка так и осталась. Может это так и было?
В общем пока нужно победить этот косяк, потом буду думать как слушать сразу несколько устройств.
Может кто побыстрей справится - вот мой рабочий код:
если есть какие косяки - буду рад выслушать, учебник по php только вчера читать начал))
З.Ы. Спустя 3 часа.
Создал файл cycle_Yeelight_monitor.php в нем организовал прослушку порта, правда пока только для одного девайса (на каждый можно создать свой исполняемый файл). Все работает, свойства обновляет по команде с пульта. рабочий файл во вложении, заменить только IP и глобальные переменные для своего девайса.
Код: Выделить всё
Closing thread: exec php -q ./scripts/cycle_Yeelight.php --params "a:0:{}">>/var/www/debmes/log_2017-12-30-cycle_Yeelight.php.txt
В общем пока нужно победить этот косяк, потом буду думать как слушать сразу несколько устройств.
Может кто побыстрей справится - вот мой рабочий код:
Код: Выделить всё
$socket=['IP'=>'192.168.1.60',
'PORT'=>55443];
$IP = $socket['IP'];
$port = $socket['PORT'];
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array("sec"=>0,"usec"=>5000000));
$result = socket_connect($socket, $IP, $port);
$read_buf = '';
$res = socket_recv($socket, $read_buf, 2048, 0);
$res=json_decode($read_buf,true);
$status=$res["params"]["power"];
$bright=$res["params"]["bright"];
$ct=$res["params"]["ct"];
$rgb=$res["params"]["rgb"];
if($status){
if($status=='on'){sg('Xiaomi_hall.status',1);}
if($status=='off'){sg('Xiaomi_hall.status',0);}
}
if($bright){
sg('Xiaomi_hall.bright',$bright);
}
if($ct){
sg('Xiaomi_hall.ct',$ct);
}
З.Ы. Спустя 3 часа.
Создал файл cycle_Yeelight_monitor.php в нем организовал прослушку порта, правда пока только для одного девайса (на каждый можно создать свой исполняемый файл). Все работает, свойства обновляет по команде с пульта. рабочий файл во вложении, заменить только IP и глобальные переменные для своего девайса.
- Gelezako
- Сообщения: 963
- Зарегистрирован: Чт июн 02, 2016 9:33 pm
- Благодарил (а): 205 раз
- Поблагодарили: 106 раз
- Контактная информация:
Re: Управление лампочками Yeelight
а можно пояснить для самых маленьких? Зачем вы организовываете прослушку порта? Какую задачу вы решаете? И ещё, в посте нет никакого вложения. Вы имели ввиду блок "Код"?cahek2202 писал(а): Создал файл cycle_Yeelight_monitor.php в нем организовал прослушку порта, правда пока только для одного девайса (на каждый можно создать свой исполняемый файл). Все работает, свойства обновляет по команде с пульта. рабочий файл во вложении, заменить только IP и глобальные переменные для своего девайса.
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
-
- Сообщения: 23
- Зарегистрирован: Пт окт 07, 2016 7:35 pm
- Откуда: Москва
- Благодарил (а): 0
- Поблагодарили: 1 раз
Re: Управление лампочками Yeelight
Чтобы получить обратную связь от устройств yeelight. Например при изменении состояния люстры через mihome или блютус пульт комплектный, данные в md становятся уже неактуальными. А все устройства yeelight отправляют в порт 55443 данные об изменении состояния, которые я и читаю этим циклом. Нет, файл видимо не прикрепился, до дома доберусь - выложу.Gelezako писал(а):а можно пояснить для самых маленьких? Зачем вы организовываете прослушку порта? Какую задачу вы решаете? И ещё, в посте нет никакого вложения. Вы имели ввиду блок "Код"?cahek2202 писал(а): Создал файл cycle_Yeelight_monitor.php в нем организовал прослушку порта, правда пока только для одного девайса (на каждый можно создать свой исполняемый файл). Все работает, свойства обновляет по команде с пульта. рабочий файл во вложении, заменить только IP и глобальные переменные для своего девайса.
Отправлено с моего MI 5 через Tapatalk
-
- Сообщения: 292
- Зарегистрирован: Вт окт 17, 2017 11:29 am
- Откуда: Украина, Киев
- Благодарил (а): 15 раз
- Поблагодарили: 33 раза
Re: Управление лампочками Yeelight
Заморочился управлением люстрой из ламп YeeLight. Если использовать конструкцию
setGlobal("Bulb_0x1.status",1);
setGlobal("Bulb_0x2.status",1);
callMethod("Bulb_0x1.on_off");
callMethod("Bulb_0x2.on_off");
то не комфортно, потому что идет плавное включение каждой лампы.
В описании управления лампами написано "Пример запроса: {"id": 1, "method": "set_power", "params": ["on", "effect", duration]}" при этом
если effect = "sudden" (внезапное) а не "smooth" (гладкое) то параметр duration игнорируется.
Изменил метод on_off, заменив smooth на sudden , но почему то не помогло. А вот уменьшение duration сработало.
Лампы включаются выключаются синхронно, во всяком случае глаз задержки не замечает.
setGlobal("Bulb_0x1.status",1);
setGlobal("Bulb_0x2.status",1);
callMethod("Bulb_0x1.on_off");
callMethod("Bulb_0x2.on_off");
то не комфортно, потому что идет плавное включение каждой лампы.
В описании управления лампами написано "Пример запроса: {"id": 1, "method": "set_power", "params": ["on", "effect", duration]}" при этом
если effect = "sudden" (внезапное) а не "smooth" (гладкое) то параметр duration игнорируется.
Изменил метод on_off, заменив smooth на sudden , но почему то не помогло. А вот уменьшение duration сработало.
Лампы включаются выключаются синхронно, во всяком случае глаз задержки не замечает.
Ubuntu Server 16.04 LTS, OpenWRT 1-wire, SonOFF, MYSensors, MiHome, Yeelight, MiFlower
- Gelezako
- Сообщения: 963
- Зарегистрирован: Чт июн 02, 2016 9:33 pm
- Благодарил (а): 205 раз
- Поблагодарили: 106 раз
- Контактная информация:
Re: Управление лампочками Yeelight
ясно, спасибо, буду ждать ваш атачмент, попробую на своихлампочкахcahek2202 писал(а):Чтобы получить обратную связь от устройств yeelight. Например при изменении состояния люстры через mihome или блютус пульт комплектный, данные в md становятся уже неактуальными. А все устройства yeelight отправляют в порт 55443 данные об изменении состояния, которые я и читаю этим циклом. Нет, файл видимо не прикрепился, до дома доберусь - выложу.
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
-
- Сообщения: 23
- Зарегистрирован: Пт окт 07, 2016 7:35 pm
- Откуда: Москва
- Благодарил (а): 0
- Поблагодарили: 1 раз
Re: Управление лампочками Yeelight
Наконец добрался до компа... Вот файликGelezako писал(а):ясно, спасибо, буду ждать ваш атачмент, попробую на своихлампочкахcahek2202 писал(а):Чтобы получить обратную связь от устройств yeelight. Например при изменении состояния люстры через mihome или блютус пульт комплектный, данные в md становятся уже неактуальными. А все устройства yeelight отправляют в порт 55443 данные об изменении состояния, которые я и читаю этим циклом. Нет, файл видимо не прикрепился, до дома доберусь - выложу.
- Вложения
-
- cycle_Yeelight_monitor_рабочий.rar
- (874 байт) 174 скачивания
- Gelezako
- Сообщения: 963
- Зарегистрирован: Чт июн 02, 2016 9:33 pm
- Благодарил (а): 205 раз
- Поблагодарили: 106 раз
- Контактная информация:
Re: Управление лампочками Yeelight
Спасибо за код, вот пытаюсь понять как он работает. Вижу что у вас идёт жёсткая привязка к имени объекта "Xiaomi_hall". Если вы пробовали ставить модуль, который я оформил из готового класса от erandess, то могли заметить что я изначально включил в него шаблонный файл с циклом, который генерирует помощник создания модулей. Так же модуль динамически сам создаёт столько объектов с уникальным именем сколько он сможет найти устройств в сети. В вашем примере я так понимаю участвует только одно устройство и имя объекта жёстко зашито. Я попробовал подставить один из своих объектов, заменил IP на адрес на тот где установлен МЖД и пробую запустить цикл в ручную. Но по какой-то причине он не запускается, подскажите куда копать?cahek2202 писал(а): Наконец добрался до компа... Вот файлик
https://github.com/Gelezako/MajorDomo-Y ... elight.php
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
-
- Сообщения: 23
- Зарегистрирован: Пт окт 07, 2016 7:35 pm
- Откуда: Москва
- Благодарил (а): 0
- Поблагодарили: 1 раз
Re: Управление лампочками Yeelight
Да, на данный момент идет жесткая привязка, потому что это пока тестовая версия, сюда выложил полуфабрикат, чтобы если кто хорошо знаком с php помог, подсказал возможно некоторые моменты, потому что я сам неделю назад впервые открыл учебник по php. С Вашим циклом я пробовал запускать, пока не вышло, решил делать поэтапно и добиться работы хотя бы с одним жестко прописанным устройством. У Вас не работает потому что Вы это добавили в основной цикл Yeelight, а это должен быть отдельный цикл (см. картинку во вложении). И еще важный момент, в этом цикле ...Monitor который, не должно быть строкGelezako писал(а):Спасибо за код, подскажите куда копать?cahek2202 писал(а): Наконец добрался до компа... Вот файлик
https://github.com/Gelezako/MajorDomo-Y ... elight.php
Код: Выделить всё
$latest_check=0;
$checkEvery=5; // poll every 5 seconds
...........................................
if ((time()-$latest_check)>$checkEvery) {
$latest_check=time();
echo date('Y-m-d H:i:s').' Polling devices...';
$Yeelight_module->processCycle();
}
- Вложения
-
- Безымянный.jpg (23.32 КБ) 5899 просмотров
- Gelezako
- Сообщения: 963
- Зарегистрирован: Чт июн 02, 2016 9:33 pm
- Благодарил (а): 205 раз
- Поблагодарили: 106 раз
- Контактная информация:
Re: Управление лампочками Yeelight
Хм, а почему должен быть отдельный цикл?cahek2202 писал(а):У Вас не работает потому что Вы это добавили в основной цикл Yeelight, а это должен быть отдельный цикл (см. картинку во вложении).
Попробовал комментировать код, который вы указали, но не помогло, цикл не хочет запускатьсяcahek2202 писал(а): И еще важный момент, в этом цикле ...Monitor который, не должно быть строк
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E