
Сообщение от
megadocent
Так я написал об этом.
Период опроса 5 секунд. Я переменную по сигналу взвожу и держу 10 секунд. Если связь без сбоев - облако считывает его и на графике видно моменты, когда событие наступало и сколько держалось. Красиво, удобно, понятно.
Но если потеря пакетов будет, или роутер перезагрузится или еще что-то, если перерыв связи дольше 10 секунд - облако увидит что было 0 и сейчас 0, событие пропущено будет.
О факте события хочется знать и желательно, во сколько оно было. Но события чаще всего штатные и могут быть несколько раз в сутки, квитировать каждое событие (выставлением флага в ПР и ручным сбросом, записывая переменную) утомительно и не хочется. Достаточно возможности посмотреть журнал, если понадобится. Но хочется, если понадобиться, точно знать - было или нет событие в выбранный промежуток времени.
Я пока пришел к следующему решению, но мне кажется оно сложным и некрасивым каким-то, может можно проще. Потому пришел посоветоваться, может я переусложняю.
1) Переменная удерживается минимум 10 секунд, при периоде опроса 5 секунд она должна считаться, потом можно посмотреть график, во сколько было, сколько длилось. При штатной работе всё красиво, захотел - посмотрел график одной переменной, другой, видно когда наступали события, сколько длились.
2) Пропадание связи с устройством - событие редкое и, вроде как, нештатное. Поэтому по нему облако генерирует уведомление. То есть о том, что облако могло пропустить событие я вроде как знаю.
3) На такой случай локально нужно вести журнал, во сколько наступало и какое событие. При пропадании связи - я топаю ножками к устройству и смотрю локально. Ведь при пропадании связи всё равно, скорее всего, придется топать ножками и разбираться, что случилось, так что такой подход устраивает.
4) Но если связь пропадала и появилась (проблемы у провайдера/перезагрузка роутера/другое), то хочется знать, надо ли все же топать ножками к устройству и смотреть локально, или ничего в это время не было, сейчас всё работает и топать не нужно. Вот тут бы пригодилось какой-то признак, что событие было считано облаком. Но такого признака нет, как я понимаю.
5) Пока писал, появилась мысль. Можно параллельно вести счетчик событий. Наступление события - увеличение значения на 1. Если связь пропадала и появилась, то можно сравнить значения в облаке на момент пропадания и момент появления связи. Будет видно, были ли события между опросами и даже сколько их было. И понять, надо ли топать к журналу локальному и смотреть что было и во сколько.
p.s. Весной смотрел ваши выпуски с лайфхаками, но уже подзабыл. На выходных сейчас как раз будет время, еще раз просмотрю. Спасибо, что делаете их.