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

Re: Сохранение времени событий

Добавлено: Чт янв 30, 2020 8:14 pm
xor
Chainik писал(а):
AndreyD писал(а): Чт янв 30, 2020 7:13 pm ...
А не проще не создавать Свойство со временем срабатывания, а включить историю на Свойство самого значения, там же есть дата и время? А в дальнейшем использовать функции "Работа с историей"?
Все зависит от формулировки задачи. Если нужно последнее значение, проще создать свойство. Если надо как-то обрабатывать несколько значений (например, находить среднее значение датчиков), то тогда надо использовать функции работы с историей или делать функции по обработке запросов к БД.
А в истории хранятся не все значения во времени, а лишь начало и конец значения. И как раз среднее штатное не верно будет работать)

Отправлено с моего Redmi 4X через Tapatalk


Re: Сохранение времени событий

Добавлено: Чт янв 30, 2020 9:05 pm
AndreyD
Ещё раз попробую объяснить, что я хочу сделать. Есть датчик который по внешнему событию выдает 1 или 0. Мне нужно хранить дату/время, когда сменилось значение, чтобы в дальнейшем получившийся массив (дата/время, значение) можно было обработать кодом.

Пока создал отдельный класс с одним Свойством, включил для Свойства историю. Создал объект и привязал значение датчика, он у меня по MQTT передает.

Через объекты вижу историю Свойства по изменению значения, там есть и дата/время. Обрабатывать историю пока не пробовал. Вроде есть функция getHistory, а вот будет ли в выводимом массиве дата/время?

Re: Сохранение времени событий

Добавлено: Чт янв 30, 2020 9:52 pm
Chainik
Конкретизация задачи -- это всегда хорошо. Чем конкретнее описание решаемого вопроса, тем проще подсказать правильные варианты решения. Так что желательно еще конкретизировать. Что именно вы хотите делать с массивом нулей и единиц, привязанных ко времени? Считать продолжительность подачи питания за сутки?
Наверняка, задача типовая и до вас тут ее неоднократно решали...
AndreyD писал(а): Чт янв 30, 2020 9:05 pm ...
Через объекты вижу историю Свойства по изменению значения, там есть и дата/время. Обрабатывать историю пока не пробовал. Вроде есть функция getHistory, а вот будет ли в выводимом массиве дата/время?
А на этот вопрос, думаю, ответят наши корифеи.

Re: Сохранение времени событий

Добавлено: Чт янв 30, 2020 10:05 pm
fandaymon
AndreyD писал(а): Чт янв 30, 2020 9:05 pm
Через объекты вижу историю Свойства по изменению значения, там есть и дата/время. Обрабатывать историю пока не пробовал. Вроде есть функция getHistory, а вот будет ли в выводимом массиве дата/время?
getHistory возвращает значение и время

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

SELECT VALUE, ADDED FROM $table_name WHERE VALUE_ID='" . $id . "' AND ADDED>=('" . date('Y-m-d H:i:s', $start_time) . "') AND ADDED<=('" . date('Y-m-d H:i:s', $stop_time) . "') ORDER BY ADDED")

Re: Сохранение времени событий

Добавлено: Пт янв 31, 2020 7:35 am
AndreyD
Chainik писал(а): Чт янв 30, 2020 9:52 pm Конкретизация задачи -- это всегда хорошо. Чем конкретнее описание решаемого вопроса, тем проще подсказать правильные варианты решения. Так что желательно еще конкретизировать. Что именно вы хотите делать с массивом нулей и единиц, привязанных ко времени? Считать продолжительность подачи питания за сутки?
Наверняка, задача типовая и до вас тут ее неоднократно решали...
Я больше хотел разобраться в принципе хранения значений от датчиков, в первую очередь от цифровых, для дальнейшей их обработки через код PHP в самом МД. А в дальнейшем уже использовать этот принцип для решения различных задач.

Например, если применительно к датчику наличия внешнего напряжения, вывести на сцену или в меню кнопку по которой будет открываться форма с текстовым окном и кнопками: "За день", "За неделю", "За месяц", "За год". По нажатию на одну из кнопок в текстовом поле будет выводиться: 1) сколько было всего отключений за период; 2) перечислением: Свет был отключен такого-то числа во столько-то минут на столько-то времени.

Получается хранение и дальнейшая обработка осуществима через историю свойства объекта с использованием функций Работа с историей и обработкой массива выводимого функцией getHistory. Думаю дальше разберусь.

Всем участникам беседы спасибо.