И так что я пробовал:
менял код предложенный Сергеем
что изменилось? - практически ни чего автообновление выключателя не работает!
добавлял в код Алерты - окошко выскакивает по одному из выключателей и он меняет состояние на выключенное через несколько секунд после включения или просто обновления менюшки
при этом свет горит! именно это наблюдается только при включенном свете.
также пришлось повозиться с кодом метода
statusChanged наиболее правильно себя ведет такой:
Код: Выделить всё
$status = $this->getProperty('status');
// определение настройки по проговариванию
$saylights = gg('Sets.saylights');
$saylights = $saylights - 1;
// тот код который приводит к "нотисам" т.к. в свойство(раздел) ключа 1-wire - [b]sensed.B[/b] писать нельзя!
if ($status != 1) {
$status = 0;
$this->setProperty('status',$status);
}
else {
$status = 1;
$this->setProperty('status',$status);
}
// узнаем прежнее состояние
$statusOld = $this->getProperty('statusOld');
// далее выполнять всё если состояние реально изменилось от прошлого
if ($statusOld<>$status) {
$this->setProperty('updatedTimestamp',time());
$this->setProperty('alive',1);
$ot=$this->object_title;
// проверка заданно ли время жизни для ключа
$alive_timeout=(int)$this->getProperty('aliveTimeOut');
if (!$alive_timeout) {
$alive_timeout=8*60*60; // если не было заданно, то берем 8 часов
}
if ($status) {
say("Свет. ".$ot." включен",$saylights);
$this->setProperty('statusText', "включено");
}
else {
say("Свет. ".$ot." выключен",$saylights);
$this->setProperty('statusText', "выключено");
}
clearTimeOut($ot."_alive");
setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout);
}
// записываем текущее значение как старое
$this->setProperty('statusOld',$status);
И тут у меня появились предположения (возможно я не прав, "я только учусь"):
Т.к. я уже говорил, что сеть моих ключей 1-wire не стабильна - они то появляются, то пропадают (но через просмотр непосредственно по HTTP порт 2121) при каждом считывании,
возможно, каким-то образом, МДМ, при считывании значений с 1-wire иногда (в некоторые циклы) не видит конкретного ключа 1-wire и тогда присваивает подключенному свойству
значение ""(пустая строка), а это совпадает со значением в состоянии "0" в этом ключе 1-wire
но при этом в "X-Ray" опять-же не видно таких "прыжков" в значении свойства!!!
В общем моих мозгов не хватает... но чувствую, что всему виной именно значение ""(пустая строка или Null) приходящее с 1-wire
"копать" наверно надо в модуле чтения данных из сети 1-wire
возможно кстати и проблема у
fiberline связанна тоже с приходящим(получаемым) "пустым" значением!
В общем без помощи Сергея, тут не обойтись!