Драйвер wb-mqtt-serial

From Wiren Board
(Redirected from Драйвер wb-mqtt-serial)

This is the approved revision of this page, as well as being the most recent.

Описание

Драйвер wb-mqtt-serial может одновременно опрашивать устройства, работающие по разным протоколам:
​1 — виртуальный порт для устройств с протоколом Modbus TCP,
2 — устройство работает по протоколу Modbus RTU,
3 — устройство работает по протоколу DLMS

Общая информация

wb-mqtt-serial — драйвер master-slave протоколов для устройств, подключённых:

  • к шине RS-485 — протокол Modbus RTU и других;
  • через Ethernet — протоколы Modbus TCP, Modbus over TCP и другие;
  • к разъёмам MOD1–MOD3 — при наличии модулей расширения, использующих обмен по UART.

Драйвер опрашивает serial-устройства и публикует данные в топики MQTT-брокера. Устройства и порты настраиваются через веб-интерфейс, подробнее в статье Начальное конфигурирование устройств через веб-интерфейс.

Wb-mqtt-serial использует систему JSON-шаблонов, которые описывают подключённые устройства: тип протокола, номера регистров, название параметров и контролов в веб-интерфейсе контроллера. В стандартной поставке есть шаблоны для всех устройств Wiren Board, а также некоторых сторонних устройств: счётчики электроэнергии, частотные преобразователи, холодильные контроллеры и другие.

Если ваше устройство работает по поддерживаемому драйвером протоколу, но в стандартной поставке под него нет шаблона — можете написать шаблон сами: Подключение стороннего Modbus-устройства к контроллеру Wiren Board.

Файлы и папки:

  • /etc/wb-mqtt-serial.conf — файл настроек драйвера, редактировать вручную не рекомендуем;
  • /usr/share/wb-mqtt-serial/templates — папка с предустановленными шаблонами;
  • /etc/wb-mqtt-serial.conf.d/templates — папка для пользовательских шаблонов, которые имеют приоритет над предустановленными.

Если вы добавили свой шаблон или изменили существующий, подождите 20 секунд, а потом перезагрузите страницу конфигуратора в веб-интерфейсе клавишами Ctrl+F5 или перезапустите сервис:

systemctl restart wb-mqtt-confed

О том, как получить доступ к файлам и папкам, читайте в статье Просмотр файлов контроллера с компьютера.

Полное описание драйвера, список поддерживаемых протоколов и примеры шаблонов, смотрите в репозитории на Github.

Особенности

При работе с Modbus-устройствами, драйвер оптимизирует запросы к устройствам: считывает несколько регистров подряд, не выдерживает некоторые задержки, рекомендованные стандартом.

Поэтому при написании шаблона для сторонних Modbus-устройств, нужно указать параметр guard_interval_us, который рассчитывается по формуле:

guard_interval_us = (3.5*11*10^6)/(скорость в бит/с)

Так же этот параметр можно установить через веб-интерфейс:

  • Guard interval (us) — для порта.
  • Additional delay before each writing to port (us) — для устройства.

Если при чтении регистра устройства возникла ошибка, то соответствующий контрол в веб-интерфейсе будет окрашен в красный цвет. Аналогично с устройством — если оно давно не отвечает, то все его контролы будут окрашены красным.

Управление драйвером

Обычно драйвер запускается автоматически при загрузке контроллера и перезапускается при сохранении файла конфигурации в веб-интерфейсе.

Также можно управлять драйвером в ручном режиме — это может быть полезно для поиска ошибок в конфигурационном файле или если вам нужно освободить порт для использования modbus_client.

Для выполнения команд подключитесь к контроллеру по SSH. Доступны команды:

systemctl stop wb-mqtt-serial # остановить
systemctl start wb-mqtt-serial # запустить
systemctl restart wb-mqtt-serial # перезапустить
wb-mqtt-serial -c /etc/wb-mqtt-serial.conf -d # запустить в отладочном режиме с указанием пути к конфигурационному файлу

Диагностика неполадок

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

  • Подключитесь к контроллеру, выполните команду systemctl status wb-mqtt-serial, вывод будет содержать сообщения о ошибке. В примере файл конфигурации содержит синтаксическую ошибку во второй строке на 14 позиции:
# systemctl status wb-mqtt-serial
● wb-mqtt-serial.service - MQTT Driver for serial devices
   Loaded: loaded (/lib/systemd/system/wb-mqtt-serial.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Thu 2021-01-28 15:10:51 +04; 4s ago
  Process: 23682 ExecStart=/usr/bin/wb-mqtt-serial (code=exited, status=0/SUCCESS)
 Main PID: 23682 (code=exited, status=0/SUCCESS)

Jan 28 15:10:47 wirenboard-A6XXXT2R systemd[1]: Started MQTT Driver for serial devices.
Jan 28 15:10:51 wirenboard-A6XXXT2R wb-mqtt-serial[23682]: ERROR: [serial] Failed to parse JSON /etc/wb-mqtt-serial.conf:* Line 2, Column 14
Jan 28 15:10:51 wirenboard-A6XXXT2R wb-mqtt-serial[23682]:   Syntax error: value, object or array expected.


  • Откройте веб-интерфейс контроллера, перейдите Настройки → Системный журнал в пункте Выберите сервис — wb-mqtt-serial.service и нажмите кнопку загрузить. В примере файл конфигурации содержит два дублирующих друг друга параметра:
Журнал ошибок в веб-интерфейсе

Настройки wb-mqtt-serial

Включение отладки

Флажок Включить отладочные сообщения установлен, отладка включена.

Иногда нужно включить отладочный режим драйвера. Это можно сделать из командной строки или через веб-интерфейс.

При включённой отладке размер системного журнала будет быстро расти, поэтому не забудьте отключить отладку, когда необходимость в ней отпадет.

Включение отладки через веб-интерфейс:

  1. Если вы работаете под обычным пользователем, то смените уровень доступа.
  2. Перейдите в НастройкиКонфигурационные файлыНастройка драйвера Serial-устройств.
  3. Выберите Настройки wb-mqtt-serial и установите флажок Включить отладочные сообщения.
  4. Нажмите Сохранить настройки.

Теперь в системный журнал будут записываться отправленные и принятые драйвером пакеты.

Для просмотра системного журнала в веб-интерфейсе перейдите в Настройки → Системный журнал, в пункте Выберите сервис — wb-mqtt-serial.service, нажмите Загрузить.

Для просмотра debug-вывод драйвера через консоль, выполните в консоли контроллера команду journalctl -e -p 7, где -e — отобразить последние записи, а -p 7 задает уровень сообщений, где 7 — это debug. Подробнее о параметрах утилиты, читайте в статье journalctl.

Пример вывода команды:

~# journalctl -e -p 7
Jan 29 14:27:24 wirenboard-A6ZZXT2R wb-mqtt-serial[1667]: DEBUG: [serial port driver] channel 'Urms L1' of device 'wb-modbus-0-0' <-- 224.647
Jan 29 14:27:24 wirenboard-A6ZZXT2R wb-mqtt-serial[1667]: DEBUG: [modbus] read 2 input(s) @ 5136 of device modbus:142
Jan 29 14:27:24 wirenboard-A6ZZXT2R wb-mqtt-serial[1667]: DEBUG: [port] Sleep 0 us
Jan 29 14:27:24 wirenboard-A6ZZXT2R wb-mqtt-serial[1667]: DEBUG: [port] Write: 8e 04 14 10 00 02 6a c1
Jan 29 14:27:24 wirenboard-A6ZZXT2R wb-mqtt-serial[1667]: DEBUG: [port] Sleep 10000 us
Jan 29 14:27:24 wirenboard-A6ZZXT2R wb-mqtt-serial[1667]: DEBUG: [port] ReadFrame: 16 04 02 0f 3d 09 12
Jan 29 14:27:24 wirenboard-A6ZZXT2R wb-mqtt-serial[1667]: DEBUG: [register handler] new val for input @ 3 of device modbus:22: f3d
Jan 29 14:27:24 wirenboard-A6ZZXT2R wb-mqtt-serial[1667]: DEBUG: [serial port driver] register value change: input @ 3 of device modbus:22 <- 39.01

Интервал публикации неизменившихся значений

Задан Интервал публикации неизменившихся значений 10 секунд.

По умолчанию драйвер публикует в топики MQTT-брокера только изменившиеся значения регистров serial-устройств. Эта настройка задает интервал публикации значений, даже если они не менялись.

  1. Если вы работаете под обычным пользователем, то смените уровень доступа.
  2. Перейдите в НастройкиКонфигурационные файлыНастройка драйвера Serial-устройств.
  3. Выберите Настройки wb-mqtt-serial и установите флажок Интервал публикации неизменившихся значений. Задайте значение:
    • -1 (отрицательное число) – публикация по умолчанию, при изменении значения;;
    • 0 – публикация после каждого чтения данных из устройства;
    • n (секунды) – публикация при изменении значений или через заданный интервал, если значение не менялось.
  4. Нажмите Сохранить настройки.

Полезные ссылки