Страница 1 из 2
Сохранение времени событий
Добавлено: Ср янв 29, 2020 8:59 pm
AndreyD
Подскажите, где почитать или в какую сторону смотреть. Может отдельный модуль есть. Нужно сохранять время какого-нибудь события для отдельного устройства, например, когда срабатывал датчик движения. Чтобы можно было просматривать получившийся лог и "выдергивать" оттуда значения.
Re: Сохранение времени событий
Добавлено: Ср янв 29, 2020 9:21 pm
Chainik
AndreyD писал(а): ↑Ср янв 29, 2020 8:59 pm
Подскажите, где почитать или в какую сторону смотреть. Может отдельный модуль есть. Нужно сохранять время какого-нибудь события для отдельного устройства, например, когда срабатывал датчик движения. Чтобы можно было просматривать получившийся лог и "выдергивать" оттуда значения.
Можете в код, который запускается при срабатывании датчика движения записать, к примеру:
Код: Выделить всё
//запишем время срабатывания датчика в формате «HH:MM»
setGlobal('MotionSensor01.updatedTimeHHMM', gg('ThisComputer.timeNow'));
Для лога вам удобнее будет использовать время в формате timestamp. Тогда можете записать:
Код: Выделить всё
//запишем время срабатывания датчика в формате timestamp
setGlobal('MotionSensor01.updatedTime', time());
Естественно, чтобы получался лог и можно было "выдергивать", у Объект.Свойства со временем срабатывания необходимо включить историю.
Re: Сохранение времени событий
Добавлено: Ср янв 29, 2020 9:32 pm
AndreyD
Chainik писал(а): ↑Ср янв 29, 2020 9:21 pm
Естественно, чтобы получался лог и можно было "выдергивать", у Объект.Свойства со временем срабатывания необходимо включить историю.
В истории будут храниться только значения при изменении Свойства или все с какой-то периодичностью? Если второе, то это какая-то избыточность.
Re: Сохранение времени событий
Добавлено: Ср янв 29, 2020 10:24 pm
Chainik
AndreyD писал(а): ↑Ср янв 29, 2020 9:32 pm
В истории будут храниться только значения при изменении Свойства или все с какой-то периодичностью? Если второе, то это какая-то избыточность.
А это как вы организуете. В случает, допустим, с температурными датчиками можно поступать и так и так (как удобнее пользователю).
Но у вас же датчик движения. Тут каждое срабатывание по сути новое значимое событие. Соответственно, у него свое время.
Но можете сочинить и какой-нибудь алгоритм касательно правил записи новых значений. Например, если последняя запись события о срабатывании датчика движения была менее 20 минут назад, новое время срабатывания не пишем.
Re: Сохранение времени событий
Добавлено: Чт янв 30, 2020 2:26 am
fandaymon
Chainik писал(а): ↑Ср янв 29, 2020 9:21 pm
AndreyD писал(а): ↑Ср янв 29, 2020 8:59 pm
Подскажите, где почитать или в какую сторону смотреть. Может отдельный модуль есть. Нужно сохранять время какого-нибудь события для отдельного устройства, например, когда срабатывал датчик движения. Чтобы можно было просматривать получившийся лог и "выдергивать" оттуда значения.
Можете в код, который запускается при срабатывании датчика движения записать, к примеру:
Код: Выделить всё
//запишем время срабатывания датчика в формате «HH:MM»
setGlobal('MotionSensor01.updatedTimeHHMM', gg('ThisComputer.timeNow'));
Для лога вам удобнее будет использовать время в формате timestamp. Тогда можете записать:
Код: Выделить всё
//запишем время срабатывания датчика в формате timestamp
setGlobal('MotionSensor01.updatedTime', time());
Естественно, чтобы получался лог и можно было "выдергивать", у Объект.Свойства со временем срабатывания необходимо включить историю.
Я может быть скажу какую-нибудь глупость, но датчик движения и так хранит историю своего срабатывания, без лишних телодвижений. Если зайти в историю свойства status, то там видны единички в моменты, когда датчик движения срабатывал

- move.jpg (82.37 КБ) 3878 просмотров
Re: Сохранение времени событий
Добавлено: Чт янв 30, 2020 6:13 am
AndreyD
Я так понимаю речь о Простых устройствах, в них я ещё не разбирался, пока делал только через создание своих объектов.
У меня стоит самодельный датчик наличия напряжения в сети, а сама система на ИБП. Вот хочу логировать, когда внешнее питание отключалось, а когда включалось.
Да и сдатчиками движения тоже понадобиться.
То есть лучше ничего самому не городить, а идти через Простые устройства?
Re: Сохранение времени событий
Добавлено: Чт янв 30, 2020 6:32 am
Logrus
к примеру у меня история в ПУ у статуса и валуе отключена, а некоторые вещи логируются через дебмеш в свои файлы или у части пишутся в ивенты, а еще появился logAction.
вариантов множество - зависят от конкретной задачи.
Re: Сохранение времени событий
Добавлено: Чт янв 30, 2020 4:50 pm
AndreyD
Logrus писал(а): ↑Чт янв 30, 2020 6:32 am
к примеру у меня история в ПУ у статуса и валуе отключена, а некоторые вещи логируются через дебмеш в свои файлы или у части пишутся в ивенты, а еще появился logAction.
вариантов множество - зависят от конкретной задачи.
logAction это модуль? Что-то не могу его найти.
Обновил систему, нашёл. )
Re: Сохранение времени событий
Добавлено: Чт янв 30, 2020 7:13 pm
AndreyD
Chainik писал(а): ↑Ср янв 29, 2020 9:21 pm
Можете в код, который запускается при срабатывании датчика движения записать, к примеру:
Код: Выделить всё
//запишем время срабатывания датчика в формате «HH:MM»
setGlobal('MotionSensor01.updatedTimeHHMM', gg('ThisComputer.timeNow'));
Для лога вам удобнее будет использовать время в формате timestamp. Тогда можете записать:
Код: Выделить всё
//запишем время срабатывания датчика в формате timestamp
setGlobal('MotionSensor01.updatedTime', time());
Естественно, чтобы получался лог и можно было "выдергивать", у Объект.Свойства со временем срабатывания необходимо включить историю.
А не проще не создавать Свойство со временем срабатывания, а включить историю на Свойство самого значения, там же есть дата и время? А в дальнейшем использовать функции "Работа с историей"?
Re: Сохранение времени событий
Добавлено: Чт янв 30, 2020 7:42 pm
Chainik
AndreyD писал(а): ↑Чт янв 30, 2020 7:13 pm
...
А не проще не создавать Свойство со временем срабатывания, а включить историю на Свойство самого значения, там же есть дата и время? А в дальнейшем использовать функции "Работа с историей"?
Все зависит от формулировки задачи. Если нужно последнее значение, проще создать свойство. Если надо как-то обрабатывать несколько значений (например, находить среднее значение датчиков), то тогда надо использовать функции работы с историей или делать функции по обработке запросов к БД.