Я ожидаю, что все устройства, со всеми своими параметрами будут обновлять соответствующие топики… Но это не происходит, наблюдаю с помощью MQTT Explorer. На скрине видно, что некоторые устройства “спамят” много данных, а некоторые вообще не обновляются.
Возможно я неправильно что-то делаю?
P.S. регулярное обновление мне нужно для отрисовки графиков, если в выбранном диапазоне не будет данных, то и графика не будет.
Ну как не воспроизводится… смотрю прямо на монитор и вижу что воспроизводится… Давайте ещё раз, возьмём, например, Opentherm модуль. Мне нужно что бы топик с давлением обновлялся каждые 60 сек., независимо, изменилось значение или нет.
Изменяя обсуждаемый параметр в UI, я не вижу что топик обновляется, запись в него не происходит. Обновление топиков отслеживаю MQTT Explorer, он подсвечивает их.
Если прочитанное (успешно прочитанное, это важно) значение из устройства не меняется - оно не будет публиковаться. В контроллере событийный механизм, нет никакой нужды публиковать те же (неизменные) значения в топики.
Если значение не может быть прочитано - драйвер публикует в топик meta/error.
Поясните тогда, за что отвечает параметр на скрине?
И про нет нужды публиковать - это вы зря так. Возможно для “лабаоратори” и нет смысла, а вот для пользователя есть. Мне нужно, чтобы все параметры всех устройств опрашивались и публиковались минимум раз в 60 сек. Независимо, изменилось значение или нет. Этого возможно добиться?
// Задаёт интервал в секундах, в течение которого неизменяющиеся значения не будут публиковаться в MQTT.
// По истечении интервала (но не чаще периода чтения канала) полученное значение будет опубликовано, даже если оно не изменилось.
// Минимальный интервал - 5 секунд.
// Если установлено отрицательное значение, то значения будут публиковаться только при изменении. Это поведение по умолчанию.
То есть, если опрашивается - публикуется. Если не опрашивается - то не публикуется.
Хорошо, получается, что часть параметров опрашивается с одной периодичностью, часть с другой? Например, температура отопления у меня регулярно обновлятся, а давление - нет.
Давайте конкретно, по шагам, что на ваш взгляд я должен сделать для решения своей задачи? Напомню, мне нужно раз в минуту получать актуальное значение давления в котле.
Если с OT-модулем сложно, то давайте упростим. Есть модуль WB-MR6CU, как раз в минуту обновлять данные в топике, если каналы не меняют свое состояние? Топик перезаписывается при изменении вкл/выкл - тут все четко. Но вот далее ничего не происходит, значения переписываются только при изменении.
Ещё коллеги отметили, что это не работает с регистрами, для которых настроены события быстрого модбаса. То есть для некоторых регистров WB-MR6CU.
Я запишу ваше пожелание по такой функции.
Конкретно сейчас это значение должно опрашиваться по обычному модбасу, тогда оно будет публиковаться с заданным интервалом, но не чаще периода опроса канала.
Можно в данном случае, например, опрашивать нужные регистры WB-MR6CU по обычному модбасу.
А можете, пожалуйста, подробнее рассказать про свою задачу? Почему вам надо такие графики? С помощью чего вы их отрисоввываете?
Есть скользящее окно, если в нем отсутствует признак, то срабатывает тревога:
MQTT -> Telegraf -> Prom -> Grafana
График, это просто визуализация, чтобы было проще рассуждать.
Использовать всякие last_over_time некорректно, так что нужны живые опросы, “я тут”, “у меня так-то”.
Вот что подумалось… значит поле Интервал публикации неизменившихся значений не работает… ну или работет, но не для всех, как вам угодно будет. Наверное, это следует отразить в техничке и на экране…
Я рассчитывал на опцию, которую привел в начале. Она логична. Опрашивать отдельным образом,- ну, такое себе… Костыль, на мой взгляд… Система странная получается, нужно опрашивать одно и то же устройство по разному… Пока не знаю как к этому отнестись… выглядит как ерунда полная…
Вы дали новые вводные, подумаю как вообще можно это использовать…