Страница 1 из 1

История значений объекта

Добавлено: Ср июн 10, 2015 10:13 am
PAV
Голову уже сломал, чувствую элементарно, но не соображу как.
КАК вывести на страницу последние (10, 20, 30) значения определенного свойства объекта? (как буковку H нажимаем в свойствах объекта).
Вот хочу колонку последних 10 значений sensorMovement1.status с указанием времени. Как?

Re: История значений объекта

Добавлено: Ср июн 10, 2015 10:21 am
sergejey
историю за 8 часов (в данном случае свойства sensorMovement4.status) можно вывести так:

Код: Выделить всё

<iframe src="/pChart/?p=sensorMovement4.status&op=log&type=8h" width="200" height="300"></iframe> 

Re: История значений объекта

Добавлено: Ср июн 10, 2015 12:09 pm
PAV
Супер, то, что надо.
А, пардон, цвет шрифта можно как-то изменить? А то черное на черном.

Re: История значений объекта

Добавлено: Пт июл 03, 2015 11:29 am
dmw
Ну можно получить историю в JSON-формате и распоряжатся массивом как душе угодно
для этого в ссылке нужно заменить &op=log на &op=timed

Re: История значений объекта

Добавлено: Пт май 19, 2017 8:22 am
directman66
Для php скриптов как получить историю?

Re: История значений объекта

Добавлено: Пт май 19, 2017 1:52 pm
directman66
Из вики

Код: Выделить всё

Функции работы с историей
getHistoryMin($varname, $start_time, $stop_time) -- Возвращает минимальное значение за период
getHistoryMax($varname, $start_time, $stop_time) -- Возвращает максимальное значение за период
getHistoryCount($varname, $start_time, $stop_time) -- Возвращает количество значений за период
getHistorySum($varname, $start_time, $stop_time) -- Возвращает сумму значений за период
getHistoryAvg($varname, $start_time, $stop_time) -- Возвращает среднее значений за период
getHistory($varname, $start_time, $stop_time) -- Возвращает массив значений истории
getHistoryValue($varname, $start_time, $stop_time) -- Возвращает среднее значений за период
varname - "объект.свойство" (строка)
start_time - Время начало выборки, включительно (метка времени Unix)
stop_time - Время конца выборки, включительно (метка времени Unix)
Если нет никаких данных функция возвращает false.
 
$data = getHistoryMin("RainGauge1.value", -3*60*60);
echo print_r($data, true)."<br/>\n";

Если минимальная температура за день меньше 5 градусов, то пора сливать воду из системы полива.
 if (getHistoryMin("tsrearyard.temp", strtotime("-1 day")) < 5)
   say("Пора сливать воду из системы полива");
Если среднесуточная температура меньше 7 градусов, то пора менять колёса на зимние.
 if (getHistoryAvg("tsrearyard.temp", strtotime("-1 day")) < 7)
   say("Пора менять колёса на зимние"); 

Самое интересное можно взять значение на определённом отрезке времени, даже если выборки попали между запросом (Берутся 2 точки до и после, из них делается интерполяция)
 if (getHistoryValue("tsrearyard.temp", strtotime("03:00")) < 0)
   say("Ночью была минусовая температура"); 


Если нет никаких данных функция возвращает false - а что делать по этому поводу решать вам. Может нужно сказать "Датчик дождя не выдавал значения за этот период"
$ret = gethistorycount("ws.isRain",strtotime("-15 minute"));
if ($ret === false) $ret = 0;
if ($ret != 0) say(' пошёл дождь...',1);
 

Re: История значений объекта

Добавлено: Пт июн 02, 2017 11:32 am
directman66
подскажите, как вывести историю между 3 и 2 часами назад?
мой код ничего не возвращает

Код: Выделить всё

$press2=getHistoryAvg('onesensor.pressure',strtotime("-2 hour") ,strtotime("-1 hour")); 

Re: История значений объекта

Добавлено: Пт июн 02, 2017 12:21 pm
nick7zmail
А чем этот способ не угодил?

Код: Выделить всё

<iframe src="/pChart/?p=sensorMovement4.status&op=log&type=8h" width="200" height="300"></iframe> 
Только для скрипта он поменяется на

Код: Выделить всё

$contetnt=file_get_contents(/pChart/?p=sensorMovement4.status&op=timed&type=8h
$json_history=json_decode($contetnt); 

Re: История значений объекта

Добавлено: Пт июн 02, 2017 12:34 pm
directman66
я полагаю запрос через http сильнее должен загружать систему нежели встроенная функция