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

Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.

Модератор: immortal

Аватара пользователя
xor
Сообщения: 2039
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 286 раз
Поблагодарили: 629 раз

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

Сообщение xor » Чт янв 30, 2020 8:14 pm

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

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

AndreyD
Сообщения: 25
Зарегистрирован: Ср фев 20, 2019 7:16 am
Благодарил (а): 6 раз
Поблагодарили: 1 раз

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

Сообщение AndreyD » Чт янв 30, 2020 9:05 pm

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

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

Через объекты вижу историю Свойства по изменению значения, там есть и дата/время. Обрабатывать историю пока не пробовал. Вроде есть функция getHistory, а вот будет ли в выводимом массиве дата/время?
Cubieboard7 + WD Black WD5000LPLX, Debian GNU/Linux 9 (stretch)
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

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

Сообщение Chainik » Чт янв 30, 2020 9:52 pm

Конкретизация задачи -- это всегда хорошо. Чем конкретнее описание решаемого вопроса, тем проще подсказать правильные варианты решения. Так что желательно еще конкретизировать. Что именно вы хотите делать с массивом нулей и единиц, привязанных ко времени? Считать продолжительность подачи питания за сутки?
Наверняка, задача типовая и до вас тут ее неоднократно решали...
AndreyD писал(а):
Чт янв 30, 2020 9:05 pm
...
Через объекты вижу историю Свойства по изменению значения, там есть и дата/время. Обрабатывать историю пока не пробовал. Вроде есть функция getHistory, а вот будет ли в выводимом массиве дата/время?
А на этот вопрос, думаю, ответят наши корифеи.
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

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

Сообщение fandaymon » Чт янв 30, 2020 10:05 pm

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")
За это сообщение автора fandaymon поблагодарил:
AndreyD (Пт янв 31, 2020 7:21 am)
Рейтинг: 1.16%
AndreyD
Сообщения: 25
Зарегистрирован: Ср фев 20, 2019 7:16 am
Благодарил (а): 6 раз
Поблагодарили: 1 раз

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

Сообщение AndreyD » Пт янв 31, 2020 7:35 am

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

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

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

Всем участникам беседы спасибо.
Cubieboard7 + WD Black WD5000LPLX, Debian GNU/Linux 9 (stretch)
Ответить