Wb-mqtt-mbgate

Добрый день, после перехода на свежую прошивку (wb-2501 stable) перестал открываться в Вэбе Шлюз mqtt-modbus. Вывод при поиcке ошибок:

root@wirenboard-A6QLDBO7:~# systemctl --failed
  UNIT                               LOAD   ACTIVE SUB    DESCRIPTION
● NetworkManager-wait-online.service loaded failed failed Network Manager Wait Online
● wb-mqtt-mbgate.service             loaded failed failed Wiren Board MQTT to Modbus gateway
LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.
2 loaded units listed.
root@wirenboard-A6QLDBO7:~# systemctl status wb-mqtt-mbgate
● wb-mqtt-mbgate.service - Wiren Board MQTT to Modbus gateway
Loaded: loaded (/lib/systemd/system/wb-mqtt-mbgate.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2025-02-26 11:02:44 UTC; 27min ago
Process: 1788 ExecStart=/usr/bin/wb-mqtt-mbgate -c /etc/wb-mqtt-mbgate.conf (code=exited, status=6)
Main PID: 1788 (code=exited, status=6)
CPU: 163ms
Feb 26 11:02:46 wirenboard-A6QLDBO7 wb-mqtt-mbgate[1788]:   desc: Failed to validate against schema associated with property name ‘size’.
Feb 26 11:02:46 wirenboard-A6QLDBO7 wb-mqtt-mbgate[1788]: Error 177
Feb 26 11:02:46 wirenboard-A6QLDBO7 wb-mqtt-mbgate[1788]:   context: <root>[registers][inputs]
Feb 26 11:02:46 wirenboard-A6QLDBO7 wb-mqtt-mbgate[1788]:   desc: Failed to validate item #150 in array.
Feb 26 11:02:46 wirenboard-A6QLDBO7 wb-mqtt-mbgate[1788]: Error 178
Feb 26 11:02:46 wirenboard-A6QLDBO7 wb-mqtt-mbgate[1788]:   context: <root>[registers]
Feb 26 11:02:46 wirenboard-A6QLDBO7 wb-mqtt-mbgate[1788]:   desc: Failed to validate against schema associated with property name ‘inputs’.
Feb 26 11:02:46 wirenboard-A6QLDBO7 wb-mqtt-mbgate[1788]: Error 179
Feb 26 11:02:46 wirenboard-A6QLDBO7 wb-mqtt-mbgate[1788]:   context: <root>
Feb 26 11:02:46 wirenboard-A6QLDBO7 wb-mqtt-mbgate[1788]:   desc: Failed to validate against schema associated with property name ‘registers’.
root@wirenboard-A6QLDBO7:~# systemctl status NetworkManager-wait-online
● NetworkManager-wait-online.service - Network Manager Wait Online
Loaded: loaded (/lib/systemd/system/NetworkManager-wait-online.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2025-02-26 11:03:31 UTC; 27min ago
Docs: man:nm-online(1)
Process: 505 ExecStart=/usr/bin/nm-online -s -q (code=exited, status=1/FAILURE)
Main PID: 505 (code=exited, status=1/FAILURE)
CPU: 510ms
Feb 26 11:02:32 wirenboard-A6QLDBO7 systemd[1]: Starting Network Manager Wait Online…
Feb 26 11:03:31 wirenboard-A6QLDBO7 systemd[1]: NetworkManager-wait-online.service: Main process exited, code=exited, status=1/FAILURE
Feb 26 11:03:31 wirenboard-A6QLDBO7 systemd[1]: NetworkManager-wait-online.service: Failed with result ‘exit-code’.
Feb 26 11:03:31 wirenboard-A6QLDBO7 systemd[1]: Failed to start Network Manager Wait Online.

Были следующие попытки устранить ошибки:

  • /etc/wb-mqtt-mbgate.conf.default скопирован в /etc/wb-mqtt-mbgate.conf
  • /etc/wb-mqtt-mbgate.conf изменялся вручную
  • перезаливалась свежая прошивка
  • сброс при помощи команды systemctl reset-failed

Ни один из способов не привел к решению проблемы.
Ко всему прикладываю дигностический архив.

приложен диагностический архив, доступен только сотрудникам поддержки
(307,8 КБ)

Добрый день
В логах вижу многочисленные ошибки вида:

desc: Failed to validate against schema associated with property name 'size'.
desc: Failed to validate item #XX in array.

Это указывает на проблему с файлом конфигурации /etc/wb-mqtt-mbgate.conf. Скорее всего, параметры содержат некорректные значения.
Убедитесь, что:

  • Поля содержат корректные числовые значения.
  • Нет дублирующихся или пустых полей.
  • Формат соответствует документации.

Посмотреть журнал сервиса
journalctl -u wb-mqtt-mbgate --no-pager -n 50

После проверки файла было выявлено, что во многих системных топиках size: -1, вероятно это и привело к ошибкам, поскольку пустых и дублирующихся полей обнаружено не было и формат файла соответствует документации взятой из GitHub - wirenboard/wb-mqtt-serial: Wiren Board MQTT serial protocol driver
К примеру:

{
    "topic": "alarms/log",
    "address": 53120,
    "unitId": 36,
    "meta_type": "text",
    "enabled": false,
    "format": "varchar",
    "size": -1,
    "max": 0,
    "scale": 1,
    "byteswap": false,
    "wordswap": false
}

Если это действительно является местом ошибки, как мы могли бы это поправить?

Добрый день.

Какого файла?
Если речь по конфиг wb-mqtt-mbgate - то документация расположена тут.

В актуальных версиях ПО дефолтный файл расположен /usr/share/wb-mqtt-mbgate/wb-mqtt-mbgate.sample.conf

В конфиге после сброса такого не может быть. Рекомендую заменить конфиг дефолтным.