так, выловил глючек, пока не до конца разобрался что и как, возможно связано с тем, что модуль работает и с евелинком и в лан режиме, и на момент обнаружения были запущены оба цикла, но модуль обновляет статусы у привязанного объекта дважды... и есть из за этого у меня глючек...
смысл такой, есть у меня пару выключателей которые должны работать как переключатель, может быть одновременно включен только один канал (но не интерлок как в евелинке, включение канала возможно только если все каналы выключены, а именно как переключатель - включаем како либо канал, остальные гаснут)... для этого есть вот такие скрипты (на примере двух выключателей):
Первый зовется SW_Bathroom в его statusUpdated:
Код: Выделить всё
if ($this->getProperty('status') == 1) rs('Light_Switch', array('event' => 'Bathroom'));
Второй зовется SW_Bathroom_Nightlamp в его statusUpdated:
Код: Выделить всё
if ($this->getProperty('status') == 1) rs('Light_Switch', array('event' => 'Bathroom_Nightlamp'));
Ну и сам скрипт Light_Switch:
Код: Выделить всё
$event_src = $params['event'];
$event = $event_src;
if ($event == 'Bathroom_Nightlamp') {
if (gg('SW_Bathroom.status') == 1) sg('SW_Bathroom.status',0);
debmes('LightSwitch, last event: '.$event);
}
if ($event == 'Bathroom') {
if (gg('SW_Bathroom_Nightlamp.status') == 1) sg('SW_Bathroom_Nightlamp.status',0);
debmes('LightSwitch, last event: '.$event);
}
Tак вот, евенты в лог летят дважды!!!
Прошу не тыкать носом в явно лишние проверки, все в целях отладки и отлова
Как мне кажется надо для девайса в LAN mode игнорировать его изменения летящие от ewelink и все будет окей.... а сейчас получается, щелкнули выкелючателем по лан или физичеески... статус поменялся... но девайс подключен к инету, он отправил свое состояние в облако, и эти изменения благополучно пприлетели в модуль теперь уже со стороны цикла работающего с евелинком и модуль честно выставил уже стоящие статусы еще раз
