Wb-mqtt-serial driver: различия между версиями

Материал из Wiren Board
м
 
(не показаны 102 промежуточные версии 6 участников)
Строка 1: Строка 1:
<languages/>
{{DISPLAYTITLE: Драйвер wb-mqtt-serial}}
<translate>
== Описание ==
<!--T:1-->
[[Image: wb-mqtt-serial a few protocols.png |500px|thumb|right| Драйвер wb-mqtt-serial может одновременно опрашивать устройства, работающие по разным протоколам: <br> ​1 — виртуальный порт для устройств с протоколом Modbus TCP,<br> 2  — устройство работает по протоколу Modbus RTU,<br> 3 — устройство работает по протоколу DLMS]]
'''Внимание!''' Драйвер ''wb-mqtt-serial'' ранее назывался ''wb-homa-modbus'', конфигурационный файл <code>/etc/wb-mqtt-serial.conf</code> ранее назывался <code>/etc/wb-homa-modbus.conf</code>. Учитывайте это, если используете устаревшие прошивки.
=== Общая информация ===
''wb-mqtt-serial'' — драйвер master-slave протоколов для устройств, подключённых:
* к шине RS-485 — протокол Modbus RTU и других;
* через Ethernet — протоколы Modbus TCP, Modbus over TCP и другие;
* к разъёмам MOD1–MOD3 — при наличии модулей расширения, использующих обмен по UART.


Драйвер опрашивает serial-устройства и публикует данные в топики [[MQTT|MQTT]]-брокера. Устройства и порты настраиваются через веб-интерфейс, подробнее в статье [[RS-485:Configuration via Web Interface | Начальное конфигурирование устройств через веб-интерфейс]].


<!--T:2-->
Wb-mqtt-serial использует систему JSON-шаблонов, которые описывают подключённые устройства: тип протокола, номера регистров, название параметров и контролов в веб-интерфейсе контроллера. В стандартной поставке есть шаблоны для всех устройств Wiren Board, а также некоторых сторонних устройств: счётчики электроэнергии, частотные преобразователи, холодильные контроллеры и другие.
'''Драйвер wb-mqtt-serial''' отвечает за работу с подключёнными по [[Special:MyLanguage/RS-485|RS-485]] устройствами в Wiren Board. Он обеспечивает работу с подключёнными устройствами через систему [[Special:MyLanguage/MQTT|MQTT]]-сообщений. В этой статье даётся упрощённое описание драйвера, полное смотрите [https://github.com/contactless/wb-mqtt-serial в описании драйвера на нашем Github].


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


==Поддерживаемые устройства== <!--T:3-->
Файлы и папки:
* <code>/etc/wb-mqtt-serial.conf</code> — файл настроек драйвера, редактировать вручную не рекомендуем;
* <code>/usr/share/wb-mqtt-serial/templates</code> — папка с предустановленными шаблонами;
* <code>/etc/wb-mqtt-serial.conf.d/templates</code> — папка для пользовательских шаблонов, которые имеют приоритет над предустановленными.


<!--T:4-->
Если вы добавили свой шаблон или изменили существующий, подождите 20 секунд, а потом перезагрузите страницу конфигуратора в веб-интерфейсе клавишами <kbd>Ctrl</kbd>+<kbd>F5</kbd> или перезапустите сервис: <syntaxhighlight lang="bash>systemctl restart wb-mqtt-confed</syntaxhighlight>
В настоящее время поддерживается работа с [[Special:MyLanguage/Периферийные устройства с интерфейсом RS-485 серии WB-xxxx | устройствами с интерфейсом Modbus нашего производства]], счётчиками Меркурий и Милур, а также с некоторыми другими устройствами, в том числе работающими по протоколу Modbus. Полный список протестированных устройств: [[Special:MyLanguage/Поддерживаемые устройства#Подключаемые по RS-485|Поддерживаемые устройства#Подключаемые по RS-485]].


=== Поддержка устройств различных протоколов на одной шине === <!--T:5-->
О том, как получить доступ к файлам и папкам, читайте в статье [[View controller files from your computer|Просмотр файлов контроллера с компьютера]].


<!--T:6-->
Полное описание драйвера, список поддерживаемых протоколов и примеры шаблонов, смотрите '''[https://github.com/contactless/wb-mqtt-serial в репозитории на Github]'''.
Использовать устройства с разными протоколами на одной шине возможно, но необходимо учитывать особенности конкретных протоколов.


<!--T:7-->
=== Особенности ===
Например, фреймы устройств Uniel начинаются с байта 0xff, устройств ИВТМ - с байта 0x24 ('$'), в случае же протоколов Modbus, Меркурий 230 и Милур первым байтом фрейма является идентификатор slave, поэтому при совмещении подобных устройств следует внимательно подходить к выбору slave id - у устройств Милур, например, slave id по умолчанию равен 0xff, что приводит к конфликту с устройствами Uniel. Устройства Милур требуют дополнительных задержек при опросе (заданы в шаблоне) и при использовании на одной шине с другими устройствами могут снизить скорость опроса. Некоторые устройства, поддерживающие дополнительные протоколы, могут оказаться несовместимыми с теми или иными протоколами на той же шине, например, было замечено, что устройства с поддержкой протокола A-BUS производства "Разумный дом" не могут работать на одной шине с устройствами Uniel. Работа устройств ИВТМ на одной шине с устройствами, работающими по другим протоколам, не проверялась. Проверенная рабочая комбинация: Modbus + Milur (slave_id != 0xff) + Uniel на одной шине.
При работе с Modbus-устройствами, драйвер оптимизирует запросы к устройствам: считывает несколько регистров подряд, не выдерживает некоторые задержки, рекомендованные стандартом.


Поэтому при написании шаблона для сторонних Modbus-устройств, нужно указать параметр ''guard_interval_us'', который рассчитывается по формуле:
<syntaxhighlight lang="js">
guard_interval_us = (3.5*11*10^6)/(скорость в бит/с)
</syntaxhighlight>
Так же этот параметр можно установить через веб-интерфейс:
* Guard interval (us) — для порта.
* Additional delay before each writing to port (us) — для устройства.


=== Доработка драйвера для поддержки новых устройств === <!--T:8-->
Если при чтении регистра устройства возникла ошибка, то соответствующий контрол в веб-интерфейсе  будет окрашен в красный цвет. Аналогично с устройством — если оно давно не отвечает, то все его контролы будут окрашены красным.


<!--T:9-->
== Управление драйвером ==
В качестве отправной точки смотрите статью [[Драйвер wb-mqtt-serial:Примеры написания шаблонов/en|Драйвер wb-mqtt-serial:Примеры написания шаблонов]], для дальнейшей поддержки [mailto:info@contactless.ru свяжитесь с нами].


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


==Конфигурирование и запуск драйвера== <!--T:10-->
Также можно управлять драйвером в ручном режиме — это может быть полезно для поиска ошибок в конфигурационном файле или если вам нужно освободить порт для использования [[modbus-client | modbus_client]].


<!--T:11-->
Для выполнения команд подключитесь к контроллеру по [[SSH]]. Доступны команды:
Конфигурация драйвера задаётся в файле <code>/etc/wb-mqtt-serial.conf</code>. Если такой файл создан, драйвер запускается при загрузке контроллера автоматически. Также драйвером можно управлять в ручном режиме из консоли:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
service wb-mqtt-serial stop #остановить драйвер
systemctl stop wb-mqtt-serial # остановить
service wb-mqtt-serial start #запустить драйвер
systemctl start wb-mqtt-serial # запустить
service wb-mqtt-serial restart #перезапустить драйвер
systemctl restart wb-mqtt-serial # перезапустить
wb-mqtt-serial -c /etc/wb-mqtt-serial.conf -d #запустить драйвер в принудительном отладочном режиме с указанием пути к конфигурационному файлу
wb-mqtt-serial -c /etc/wb-mqtt-serial.conf -d # запустить в отладочном режиме с указанием пути к конфигурационному файлу
</syntaxhighlight>
</syntaxhighlight>


== Диагностика неполадок ==
Если возникли проблемы с запуском драйвера, например, новое устройство не появилось, то можно узнать причину: выполните команду <code>systemctl status wb-mqtt-serial</code> и в последних двух строчках ответа будет подсказка.


== Конфигурационный файл драйвера == <!--T:12-->
В примере файл конфигурации содержит синтаксическую ошибку во второй строке на 14 позиции:
<syntaxhighlight lang="console">
# 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)


<!--T:13-->
Jan 28 15:10:47 wirenboard-A6XXXT2R systemd[1]: Started MQTT Driver for serial devices.
Для работы драйвера нужно отредактировать файл <code>/etc/wb-mqtt-serial.conf</code>. Обычный пользователь может воспользоваться способом [[RS-485:Настройка через веб-интерфейс|RS-485:Настройка через веб-интерфейс]], который тоже приводит к правильному заполнению файла конфигурации. Однако отредактировать файл можно и вручную, для этого:
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
#Ознакомьтесь с инструкцией [[Special:MyLanguage/Просмотр файлов контроллера с компьютера|Просмотр файлов контроллера с компьютера]]
Jan 28 15:10:51 wirenboard-A6XXXT2R wb-mqtt-serial[23682]:  Syntax error: value, object or array expected.
#Файл <code>/etc/wb-mqtt-serial.conf</code> имеет структуру ''порты (ports) -> устройства (devices)'': в файле есть описания физических портов контроллера, а внутри них - список устройств, которые подключены к этому порту.
#:Для каждого порта указываются настройки (скорость, чётность и т.п.), а также протокол (Modbus, RTU, etc.)
#:Для каждого устройства обязательно указывается его уникальный адрес на шине - ''slave_id''. Также можно указать другие необязательные параметры - смотрите полное описание формата [https://github.com/contactless/wb-homa-drivers/tree/master/wb-mqtt-serial в описании драйвера на нашем Github].
#Впишите конфигурацию для портов и подключённых устройств в файл, используя примеры ниже.
#Перезагрузите устройство ИЛИ выполните из консоли команду
#: <syntaxhighlight lang="bash">
service wb-mqtt-serial restart
</syntaxhighlight>
</syntaxhighlight>
#:Она перезапустит драйвер, и подключённое устройство появится в веб-интерфейсе.
#Если устройство не появилось, выполните команду <syntaxhighlight lang="bash">tail /var/log/messages</syntaxhighlight> или откройте файл <code>/var/log/messages</code> и промотайте его до конца. Если там будет строчка такого типа:
#:<code>May  6 17:50:58 wirenboard user.notice modbus: FATAL: Error parsing config file: Failed to parse JSON: * Line <b>15</b>, Column 17</code>
#:- ищите ошибку в 15-й строке конфигурационного файла.


Проверить только шаблоны, в том числе и не подключённые в файле конфигурации, можно командой:
<syntaxhighlight lang="console">
# wb-mqtt-serial -g
<3>ERROR: [serial config] Failed to parse /usr/share/wb-mqtt-serial/templates/config-bac-6000-series.json
Failed to parse JSON /usr/share/wb-mqtt-serial/templates/config-bac-6000-series.json:* Line 12, Column 5
  Missing ',' or '}' in object declaration
</syntaxhighlight>


===Пример конфигурации для [[Special:MyLanguage/WB-MRM2 Реле 2х канальное | модуля реле WB-MRM2]], подключённого к изолированному порту (RS-485-ISO) Wiren Board 4=== <!--T:14-->
Проверить файл конфигурации и шаблоны на ошибки:
<syntaxhighlight lang="console">
# wb-mqtt-serial -j
<3>ERROR: [serial config] Failed to parse /usr/share/wb-mqtt-serial/templates/config-wb-mdm3.json
Failed to parse JSON /usr/share/wb-mqtt-serial/templates/config-wb-mdm3.json:* Line 8, Column 9
  Missing ',' or '}' in object declaration


<!--T:15-->
<3>ERROR: [serial] Can't find template for 'WB-MDM3'
<syntaxhighlight lang="javascript">{
</syntaxhighlight>
    "ports": [
        {
            "path" : "/dev/ttyNSC0",  //псевдофайл, соответствующий порту
            "baud_rate": 9600, //скорость порта, 9600 почти для всех устройств, но проверьте документацию к ним
            "parity": "N", //четность
            "data_bits": 8, //битов данных в посылке
            "stop_bits": 2, //количество стоп-битов. Чётность, количество битов и стоп-битов тоже редко меняются
            "poll_interval": 10, //интервал опроса устройств на порту в миллисекундах
            "devices" : [
                {
                    "device_type" : "WB-MRM2", //тип устройства, распознаваемый драйвером
                    "slave_id": 25 //адрес устройства
                }
            ]
        }
    ]
}</syntaxhighlight>


<!--T:16-->
При необходимости, можно добавить путь к файлу, который нужно проверить:
Полный список поддерживаемых типов устройств см. в статье [[Special:MyLanguage/Поддерживаемые устройства|Поддерживаемые устройства]], а также [https://github.com/contactless/wb-homa-drivers/blob/master/wb-homa-modbus/README.md#%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%BE%D0%B2-device_type здесь].
<syntaxhighlight lang="bash">
wb-mqtt-serial -c /etc/wb-mqtt-serial.conf -j
</syntaxhighlight>


== Включение отладки==
[[Файл:Serial Web config.png|400px|thumb|right|Веб-интерфейс. Флажок ''Enable debug logging'' установлен, отладка включена]]
Иногда нужно включить отладочный режим драйвера. Это можно сделать из [[#Управление драйвером | командной строки]] или через веб-интерфейс.


=== Пример конфигурационного файла для нескольких подключённых устройств === <!--T:17-->
{{note|info| При включённой отладке размер системного журнала будет быстро расти, поэтому не забудьте отключить отладку, когда необходимость в ней отпадет.}}


<!--T:18-->
Включение отладки через [[Wiren Board Web Interface|веб-интерфейс]]:
<syntaxhighlight lang="javascript">
# Зайдите в веб-интерфейс контроллера
# Если вы работаете под обычным пользователем, то смените [[RS-485:Configuration via Web Interface#Смена уровня доступа к веб-интерфейсу| уровень доступа]]
# Перейдите '''Settings''' → '''Configs''' → '''Serial Device Driver Configuration'''
# Установите флажок '''Enable debug logging'''
# Нажмите на кнопку '''Save''', чтобы сохранить настройки.


<!--T:19-->
Теперь в системный журнал будут записываться отправленные и принятые драйвером пакеты.
// Configuration options
 
{
Чтобы посмотреть debug-вывод драйвера, выполните в консоли контроллера команду <code>journalctl -e -p 7</code>, где <code>-e</code> — отобразить последние записи, а <code>-p 7</code> задает уровень сообщений, где 7 — это debug. Подробнее о параметрах утилиты, читайте в статье [[journalctl]].
    "debug": false,
 
    "ports": [
Пример вывода команды:
        {
<syntaxhighlight lang="bash">
            "path" : "/dev/ttyNSC1",
~# journalctl -e -p 7
            "baud_rate": 9600,
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
            "parity": "N",
Jan 29 14:27:24 wirenboard-A6ZZXT2R wb-mqtt-serial[1667]: DEBUG: [modbus] read 2 input(s) @ 5136 of device modbus:142
            "data_bits": 8,
Jan 29 14:27:24 wirenboard-A6ZZXT2R wb-mqtt-serial[1667]: DEBUG: [port] Sleep 0 us
            "stop_bits": 2,
Jan 29 14:27:24 wirenboard-A6ZZXT2R wb-mqtt-serial[1667]: DEBUG: [port] Write: 8e 04 14 10 00 02 6a c1
            "poll_interval": 0,
Jan 29 14:27:24 wirenboard-A6ZZXT2R wb-mqtt-serial[1667]: DEBUG: [port] Sleep 10000 us
            "enabled": true,
Jan 29 14:27:24 wirenboard-A6ZZXT2R wb-mqtt-serial[1667]: DEBUG: [port] ReadFrame: 16 04 02 0f 3d 09 12
            "devices" : [
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
                    "name": "DRB88",
                    "id": "drb88",
                    "enabled": true,
                    "slave_id": "0x23",
    "device_type" : "DRB88"
                },
                {
                    "slave_id": "0x26",
    "device_type" : "MSU24"
                },
                {
                    "slave_id": "0x31",
    "device_type" : "MSU34"
                },
                {
                    "slave_id": "0x04",
    "device_type" : "LC-103"
                },
{
    "device_type" : "DDL24",
    "slave_id" : "0x20"
},
                {
                  "enabled": true,
                  "slave_id": "0x06",
    "device_type" : "WB-MRM2"
              },
      {
                "slave_id" : 16,
"device_type" : "WB-MRGB"
      }
            ]
        },
{
    "path" : "/dev/ttyNSC0",
    "type": "uniel",
    "poll_interval": 10,
    "enabled": true,
    "devices" : [
{
    "device_type" : "UCH-M141RC",
    "slave_id": 1
}
    ]
}
    ]
}
</syntaxhighlight>
</syntaxhighlight>
</translate>
 
== Полезные ссылки ==
* [[Connecting_Third_Party_Devices_to_Wiren_Board | Как подключить стороннее Modbus-устройство]]
* [https://github.com/contactless/wb-mqtt-serial Описание wb-mqtt-serial на Github]
* [[Modbus|Описание протокола Modbus]]
* [[Fast_Modbus| Описание расширения Быстрый Modbus]]
* [[RS-485|Описание шины RS-485]]

Текущая версия на 11:49, 5 октября 2023

Описание

Драйвер 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 # запустить в отладочном режиме с указанием пути к конфигурационному файлу

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

Если возникли проблемы с запуском драйвера, например, новое устройство не появилось, то можно узнать причину: выполните команду 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 -g
<3>ERROR: [serial config] Failed to parse /usr/share/wb-mqtt-serial/templates/config-bac-6000-series.json
Failed to parse JSON /usr/share/wb-mqtt-serial/templates/config-bac-6000-series.json:* Line 12, Column 5
  Missing ',' or '}' in object declaration

Проверить файл конфигурации и шаблоны на ошибки:

# wb-mqtt-serial -j
<3>ERROR: [serial config] Failed to parse /usr/share/wb-mqtt-serial/templates/config-wb-mdm3.json
Failed to parse JSON /usr/share/wb-mqtt-serial/templates/config-wb-mdm3.json:* Line 8, Column 9
  Missing ',' or '}' in object declaration

<3>ERROR: [serial] Can't find template for 'WB-MDM3'

При необходимости, можно добавить путь к файлу, который нужно проверить:

wb-mqtt-serial -c /etc/wb-mqtt-serial.conf -j

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

Веб-интерфейс. Флажок Enable debug logging установлен, отладка включена

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

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

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

  1. Зайдите в веб-интерфейс контроллера
  2. Если вы работаете под обычным пользователем, то смените уровень доступа
  3. Перейдите SettingsConfigsSerial Device Driver Configuration
  4. Установите флажок Enable debug logging
  5. Нажмите на кнопку Save, чтобы сохранить настройки.

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

Чтобы посмотреть 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

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