Re: Управление лампочками Yeelight
Добавлено: Пт дек 22, 2017 11:02 am
Задам вопрос здесь, никак не могу найти на форуме. Как объединить несколько лампочек по свойству status и bright на одну кнопку и слайдер?
Код: Выделить всё
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);
} а можно пояснить для самых маленьких? Зачем вы организовываете прослушку порта? Какую задачу вы решаете? И ещё, в посте нет никакого вложения. Вы имели ввиду блок "Код"?cahek2202 писал(а): Создал файл cycle_Yeelight_monitor.php в нем организовал прослушку порта, правда пока только для одного девайса (на каждый можно создать свой исполняемый файл). Все работает, свойства обновляет по команде с пульта. рабочий файл во вложении, заменить только IP и глобальные переменные для своего девайса.
Чтобы получить обратную связь от устройств yeelight. Например при изменении состояния люстры через mihome или блютус пульт комплектный, данные в md становятся уже неактуальными. А все устройства yeelight отправляют в порт 55443 данные об изменении состояния, которые я и читаю этим циклом. Нет, файл видимо не прикрепился, до дома доберусь - выложу.Gelezako писал(а):а можно пояснить для самых маленьких? Зачем вы организовываете прослушку порта? Какую задачу вы решаете? И ещё, в посте нет никакого вложения. Вы имели ввиду блок "Код"?cahek2202 писал(а): Создал файл cycle_Yeelight_monitor.php в нем организовал прослушку порта, правда пока только для одного девайса (на каждый можно создать свой исполняемый файл). Все работает, свойства обновляет по команде с пульта. рабочий файл во вложении, заменить только IP и глобальные переменные для своего девайса.
ясно, спасибо, буду ждать ваш атачмент, попробую на своихлампочкахcahek2202 писал(а):Чтобы получить обратную связь от устройств yeelight. Например при изменении состояния люстры через mihome или блютус пульт комплектный, данные в md становятся уже неактуальными. А все устройства yeelight отправляют в порт 55443 данные об изменении состояния, которые я и читаю этим циклом. Нет, файл видимо не прикрепился, до дома доберусь - выложу.
Наконец добрался до компа... Вот файликGelezako писал(а):ясно, спасибо, буду ждать ваш атачмент, попробую на своихлампочкахcahek2202 писал(а):Чтобы получить обратную связь от устройств yeelight. Например при изменении состояния люстры через mihome или блютус пульт комплектный, данные в md становятся уже неактуальными. А все устройства yeelight отправляют в порт 55443 данные об изменении состояния, которые я и читаю этим циклом. Нет, файл видимо не прикрепился, до дома доберусь - выложу.
Спасибо за код, вот пытаюсь понять как он работает. Вижу что у вас идёт жёсткая привязка к имени объекта "Xiaomi_hall". Если вы пробовали ставить модуль, который я оформил из готового класса от erandess, то могли заметить что я изначально включил в него шаблонный файл с циклом, который генерирует помощник создания модулей. Так же модуль динамически сам создаёт столько объектов с уникальным именем сколько он сможет найти устройств в сети. В вашем примере я так понимаю участвует только одно устройство и имя объекта жёстко зашито. Я попробовал подставить один из своих объектов, заменил IP на адрес на тот где установлен МЖД и пробую запустить цикл в ручную. Но по какой-то причине он не запускается, подскажите куда копать?cahek2202 писал(а): Наконец добрался до компа... Вот файлик
Да, на данный момент идет жесткая привязка, потому что это пока тестовая версия, сюда выложил полуфабрикат, чтобы если кто хорошо знаком с 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();
}
Хм, а почему должен быть отдельный цикл?cahek2202 писал(а):У Вас не работает потому что Вы это добавили в основной цикл Yeelight, а это должен быть отдельный цикл (см. картинку во вложении).
Попробовал комментировать код, который вы указали, но не помогло, цикл не хочет запускатьсяcahek2202 писал(а): И еще важный момент, в этом цикле ...Monitor который, не должно быть строк