Спасибо. Все равно нужен в цикл встраиваться, хотя и более стабильный.
Так можно и всю систему под себя переписать.
Стоит ли
Модератор: immortal
Спасибо. Все равно нужен в цикл встраиваться, хотя и более стабильный.
мне хватает метода ClockChime.onNewMinute для моих целей, нужно чаще?
Вернул назад $cycles=array('ping'=>'ping');Kirch писал(а): ↑Пт дек 03, 2021 8:42 amДоброго дня.
Измучила нестабильность модуля webvars. На нем построен опрос датчиков и весь дом теперь обогревается по ним.
Вот опять цикл webvars остановлен. ЗАпустить не могу. Веб переменные обновляются по кнопке, но автоматически - нет.
В форуме проходило ,что нужно убрать правую часть $cycles=array('ping'=>'ping','webvars'=>'webvars');
Убрал. Не помогает. Сам цикл в прошлый раз заработал, теперь сам же встал и не запускается в X-Ray
Привожу текст кода в System checkState
Кто тут понимает, почему цикл не стартует и как вывести диагностику причин?
Думаю уже уйти в сторону поддерживаемых систем УД.Код: Выделить всё
$details=array(); $red_state=0; $yellow_state=0; $cycles=array('states'=>'states','main'=>'main','execs'=>'exec','scheduler'=>'scheduler'); foreach($cycles as $k=>$v) { $tm=getGlobal('ThisComputer.cycle_'.$k.'Run'); if (time()-$tm>5*60) { $red_state=1; $details[]=$v." ".LANG_GENERAL_CYCLE." ".LANG_GENERAL_STOPPED."."; } } //$cycles=array('ping'=>'ping','webvars'=>'webvars'); $cycles=array('ping'=>'ping'); foreach($cycles as $k=>$v) { $tm=getGlobal('ThisComputer.cycle_'.$k.'Run'); if (time()-$tm>10*60) { $yellow_state=1; $details[]=$v." ".LANG_GENERAL_CYCLE." ".LANG_GENERAL_STOPPED."."; } } /* $objects=array('MotionSensor1'=>'Датчик движения 1','MotionSensor2'=>'Датчик движения 2','TempSensor01'=>'Датчик температуры','HumSensor01'=>'Датчик влажности'); foreach($objects as $k=>$v) { if (!gg($k.'.alive')) { $yellow_state=1; $details[]="Не обновляется ".$v.'.'; } } */ if ((int)gg('ThisComputer.SpaceProblems')>0) { $red_state=1; $details[]="Недостаточно места на диске (".gg('ThisComputer.SpaceProblems_Details').').'; } if ($red_state) { $state='red'; $state_title=LANG_GENERAL_RED; } elseif ($yellow_state) { $state='yellow'; $state_title=LANG_GENERAL_YELLOW; } else { $state='green'; $state_title=LANG_GENERAL_GREEN; } $new_details=implode(". ",$details); if ($this->getProperty("stateDetails")!=$new_details) { $this->setProperty('stateDetails',$new_details); } if ($this->getProperty('stateColor')!=$state) { $this->setProperty('stateColor',$state); $this->setProperty('stateTitle',$state_title); if ($state!='green') { say(LANG_GENERAL_SYSTEM_STATE." ".LANG_GENERAL_CHANGED_TO." ".$state_title."."); say(implode(". ",$details),2); } else { say(LANG_GENERAL_SYSTEM_STATE." ".LANG_GENERAL_RESTORED_TO." ".$state_title,2); } $this->callMethod('stateChanged'); } /* begin injection of {SDevices} */ require(DIR_MODULES.'devices/system_checkstate.php'); /* end injection of {SDevices} */
тоже можно было выкрутиться, например, таймерами. Но, естественно, если модуль работает, то и ок
Вот спасибо тебе, добрый человек! Теперь все по фен-шую