Итак, есть контроллер WB 8.5, ПО версии 2504, WB-MCB8 прошивка 1.6.8.
Берем MQTT Explorer, подключаемся и смотрим, скажем, на Input 1 Single Press Counter.
Изначально он равен, скажем, 2. В MQTT Explorer 2, в списке устройств 2.2.
Сбрасываем питание с модуля, но не контроллера.
Ждем и видим, что модуль и его топики переходят в ошибку.
Включаем питание.
Ждем, устройство возвращается обратно. В списке устройств значение топика остается 2, в MQTT Explorer тоже 2.
Нажимаем и отпускаем кнопочку.
Счетчик обновляется в 1 и в списке устройств и в MQTT Explorer. WB Rules реагирует на изменение значения.
Непонятный момент: Input 1 counter при этом не сбрасывается, а прирастает на 1.
Вопрос: следует ли из этого, что 0 мы получаем только при переполнении счетчика. Из предыдущей темы этого не следует, но эксперимент не соответствует предыдущей теме.
Очень хочется избежать ложных срабатываний, но городить ненужный огород в коде не слишком хочется.
Все как в старой шутке про «хороший инженер должен быть внимательным и не брезгливым»
Перепроверил. Input 1 Counter действительно не сбрасывается. Но вот Input 1 Single Press Counter сбрасывается по первому короткому нажатию. При этом Input 1 Long Press Counter живет отдельной жизнью и сбрасывается по первому длинному нажатию. Это я посмотрел по топикам MQTT в GUI.
Кратко подводя итоги:
Просто Counter живет в EEPROM и переходит через 0 только по переполнению.
Типы нажатий сбрасываются после потери питания, но 0 никогда не присылается, вместо этого приходит сразу 1.
Было бы неплохо добавить инструкцию по обработке всего этого куда-нибудь на страничку про правила и, возможно, ссылки туда со страниц устройств.
Не только, может быть сброшен и записью в регистр.
Нет, как раз в нем после сброса питания - 0. Можно убедиться прочитав его, именно значение регистра.
“1” - публикуется потому что если на модуле нет регистров настроенных на периодический опрос - то событием является только инкремент счетчика.
Соответственно я бы рекомендовал в любом случае ориентироваться на событие “отсутствие связи”.
Не совсем. Остался вот какой вопрос: только что смотрел в конфигурацию MCM8. Там сказано, что опрос Input 1 Single Press Counter происходит “In order”. После восстановления питания его значение становится равным 0. Почему тогда оно не публикуется, а вместо этого присылается сразу 1?