Как отследить готовность wb-mqtt-serial?

Здравствуйте!
Хочу отслеживать факт готовности и/или перезапуска wb-mqtt-serial. Поиск по форуму выдал старые записи с проверкой через shell. Изменилось ли что с тех пор?

Нашёл MQTT топик /rpc/v1/wb-mqtt-serial/ports/Load - вроде от становится в “1” после запуска. Можно ли использовать его и надо ли делать задержку готовности (т.е. “1” означает ли, что все топики для modbus модулей уже созданы)?

Ну и до кучи: штатное ли поведение wb-mqtt-serial, что он после перезапуска вызывает правила со старыми значениями, например, счетчиков нажатий кнопок?

WB 7.3.1 unstable.testing, mqtt-serial 2.109.1 или 2.111.0

1 лайк

Добрый день.

Да, верно.
При перезапуске (остановке) сервис записывает в топики null а при запуске - 1

/rpc/v1/wb-mqtt-serial/port/Load (null)
/rpc/v1/wb-mqtt-serial/ports/Load (null)
/rpc/v1/wb-mqtt-serial/port/Load 1
/rpc/v1/wb-mqtt-serial/ports/Load 1

И да, Load 1 становится уже после создания топиков устройств.

Архитектурно - да.
Точнее - это не связано наприямую с правилами.
При завершении работы wb-mqtt-serial удаляет все топики своих устройств, что можно заметить в интерфейсе, устройства пропадают.
А после запуска - создает снова (значение null, пустое), затем читает из устройств актуальные значения и записывает (null->значение).
Вот как раз на изменение значения правила и срабатывают.
Если планируется именно в работе, штатно, останавливать-запускать wb-mqtt-serial то значение тех же счетчиков можно хранить в переменной.
Логика тогда примерно такая, при входе в правило проверять:
Значение null - выходим
Значение равно сохраненному - выходим.
иначе - обновляем сохраненное, выполняем правило

Как приятно видеть сразу версии.

1 лайк