Re: [Модуль] Веб-переменные (webvars)
Добавлено: Чт янв 28, 2021 7:13 am
Если в коде webvars есть ошибка, то цикл останавливается. Поэтому после изменения кода надо поглядывать за состоянием цикла.
Код: Выделить всё
$objname = 'Sensor_temp05.Value'; // тут пояснения что за датчик
// Получаем данные от сенсора
$value = $params['VALUE'];
//DebMes('текущее:'.$value ); // для целей отладки
// восстанавливаем точку
if ($value > 1000 and $value < 9000 ) {$value = $value/100;}
// Фильтруем данные
if ($value > 100 || $value < -60 || $value == 80) {
//DebMes('Ошибка значения '.$value); // для целей отладки
return;}
$predvalue = getGlobal($objname);
//DebMes('предыдущее:'.$predvalue ); // для целей отладки
if ( ($predvalue < $value * 1.01) and ( $predvalue > $value * 0.99)) {
// DebMes('Повтор значения '.$value.' предыдущее:'.$predvalue ); // для целей отладки
return;}
// Выполняем округление с точностью до одного знака
$value = round($value, 1);
// Сохраняем обработанное значение в свойство объекта
setGlobal($objname, $value);
Код: Выделить всё
<div class="title">Значение1</div>
<div class="title">Значение2</div>
<div class="title">Значение3</div>
Код: Выделить всё
<div class="title">(.+?)<\/div>
Код: Выделить всё
$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} */
не по теме, но всё-равно скажу)Kirch писал(а): ↑Пт дек 03, 2021 8:42 amДоброго дня.
Измучила нестабильность модуля webvars. На нем построен опрос датчиков и весь дом теперь обогревается по ним.
Вот опять цикл webvars остановлен. ЗАпустить не могу. Веб переменные обновляются по кнопке, но автоматически - нет.
...
Думаю уже уйти в сторону поддерживаемых систем УД.
Код: Выделить всё
$cmdUrl = 'http://192.168.1.7:8888';
$state = file_get_contents($cmdUrl);
if($state){
preg_match('|<b>Report from My UPS</b> - (.*)</br>|', $state, $matches);
sg('ippon.measurTime',$matches[1]);
preg_match('|I?P Voltage = (.*) |', $state, $matches);
sg('ippon.inVoltage',$matches[1]);
... и т.д.