Добрый день! Столкнулся с несколькими вопросами и странностями работы входов А1-А4. Я подключил к этим входам датчики с выходом типа “сухой контакт” и получил несколько странностей:
Данные в топики /devices/wb-gpio/controls/A{1…4}_IN отправляются только при изменении состояния датчика. Как можно сделать так, чтобы данные отправлялись постоянно, скажем, раз в секунду? Мне это требуется для корректной интеграции с внешней системой мониторинга.
Если я открываю историю значений цифрового входа (/#/history/wb-gpio/A1_IN/-/-) то среди значений я вижу не только 0 и 1, но и 0,5 и даже 0,3333333. Как так получается, что дискретный вход в истории отображает какую-то дичь?
Если по этому же входу открыть историю значений напряжения (/#/history/wb-adc/A1/-/-), то я не вижу там падений напряжения до околонулевых значений, минимальное значение там 8В, хотя в цифровом графике есть значения с 0. Как так получается?
Думаю, что это можно сделать с помощью правил. Целевой топик должен быть доступен на запись, то есть в топик входа писать нельзя. Для этого можно создать виртуальное устройство. Например, можно сделать так:
В историю пишутся усредненные данные. Можете попробовать изменить настройки на странице Configs → MQTT History Configuration: уменьшить параметры Minimum time interval between two data points (s) и Minimum time interval between two data points with the same value (s).
Вот похожая тема: Почему такая странная разница между графиком в истории и полученными данными
Попробуйте запитать ваш сухой контакт от выхода 5 V out на контроллере (справа от разъема входов).
Да, это очень логично, так как зачем вполнять бессмыссленные действия? Ничего не изменяется - ничего не публикуется.
Если нужно для каких-то целей - напишите виртуальное утройство, в его топик можно публиковать по таймеру с какой удобно частотой. Как в примере выше.
Какая версия wb-mqtt-db?
В свежих для бинарных значений усредененные не создаются.
Спасибо за предложенные решения!
Решил на уровне node-red, который и так используется на контроллере и модуля интеграции нод-реда с вайренбордом, просто настроил опрос с нужным мне интервалом через get. Как я понимаю, данные там берутся из mqtt, но меня это вполне устраивает.