wb_editors
131
правка
(Убрал старый текст, и поменял ссылку на ssh) |
|||
(не показаны 32 промежуточные версии 5 участников) | |||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE: Драйвер wb-mqtt-serial}} | {{DISPLAYTITLE: Драйвер wb-mqtt-serial}} | ||
== Описание == | |||
[[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]] | [[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'' — драйвер master-slave протоколов для устройств, подключённых: | |||
* к шине RS-485 — протокол Modbus RTU и других; | |||
* через Ethernet — протоколы Modbus TCP, Modbus over TCP и другие; | |||
* к разъёмам MOD1–MOD3 — при наличии модулей расширения, использующих обмен по UART. | |||
Драйвер опрашивает serial-устройства и публикует данные в топики [[MQTT|MQTT]]-брокера. Устройства и порты настраиваются через веб-интерфейс, подробнее в статье [[RS-485:Configuration via Web Interface | Начальное конфигурирование устройств через веб-интерфейс]]. | |||
Wb-mqtt-serial использует систему JSON-шаблонов, которые описывают подключённые устройства: тип протокола, номера регистров, название параметров и контролов в веб-интерфейсе контроллера. В стандартной поставке есть шаблоны для всех устройств Wiren Board, а также некоторых сторонних устройств: счётчики электроэнергии, частотные преобразователи, холодильные контроллеры и другие. | |||
Если ваше устройство работает по | Если ваше устройство работает по поддерживаемому драйвером протоколу, но в стандартной поставке под него нет шаблона — можете написать шаблон сами: [[Connecting_Third_Party_Devices_to_Wiren_Board | Подключение стороннего Modbus-устройства к контроллеру Wiren Board]]. | ||
Файлы и папки: | Файлы и папки: | ||
* <code>/etc/wb-mqtt-serial.conf</code> — файл настроек драйвера, | * <code>/etc/wb-mqtt-serial.conf</code> — файл настроек драйвера, редактировать вручную не рекомендуем; | ||
* <code>/usr/share/wb-mqtt-serial/templates</code> — папка с предустановленными шаблонами | * <code>/usr/share/wb-mqtt-serial/templates</code> — папка с предустановленными шаблонами; | ||
* <code>/etc/wb-mqtt-serial.conf.d/templates</code> — папка для пользовательских шаблонов, которые имеют приоритет | * <code>/etc/wb-mqtt-serial.conf.d/templates</code> — папка для пользовательских шаблонов, которые имеют приоритет над предустановленными. | ||
Если вы добавили свой шаблон или изменили существующий, подождите 20 секунд, а потом перезагрузите страницу конфигуратора в веб-интерфейсе клавишами <kbd>Ctrl</kbd>+<kbd>F5</kbd> или перезапустите сервис: <syntaxhighlight lang="bash>systemctl restart wb-mqtt-confed</syntaxhighlight> | |||
О том, как получить доступ к файлам и папкам, читайте в статье [[View controller files from your computer|Просмотр файлов контроллера с компьютера]]. | О том, как получить доступ к файлам и папкам, читайте в статье [[View controller files from your computer|Просмотр файлов контроллера с компьютера]]. | ||
Полное описание драйвера, список поддерживаемых протоколов и примеры шаблонов, смотрите '''[https://github.com/contactless/wb-mqtt-serial в репозитории на Github]'''. | Полное описание драйвера, список поддерживаемых протоколов и примеры шаблонов, смотрите '''[https://github.com/contactless/wb-mqtt-serial в репозитории на Github]'''. | ||
=== Особенности === | |||
При работе с 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) — для устройства. | |||
Если при чтении регистра устройства возникла ошибка, то соответствующий контрол в веб-интерфейсе будет окрашен в красный цвет. Аналогично с устройством — если оно давно не отвечает, то все его контролы будут окрашены красным. | |||
== Управление драйвером == | == Управление драйвером == | ||
Строка 29: | Строка 50: | ||
systemctl restart wb-mqtt-serial # перезапустить | 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> | {{SupportedSinceRelease | ||
| release = wb-2407 | |||
В примере файл конфигурации содержит синтаксическую ошибку во второй строке на 14 позиции: | |content= | ||
Если возникли проблемы с запуском драйвера, например, новое устройство не появилось, то можно узнать причину в журнале wb-mqtt-serial двумя способами: | |||
* [[SSH | Подключитесь к контроллеру]], выполните команду <code>systemctl status wb-mqtt-serial</code>, вывод будет содержать сообщения о ошибке. В примере файл конфигурации содержит синтаксическую ошибку во второй строке на 14 позиции: | |||
<syntaxhighlight lang="console"> | <syntaxhighlight lang="console"> | ||
# systemctl status wb-mqtt-serial | # systemctl status wb-mqtt-serial | ||
Строка 48: | Строка 70: | ||
Jan 28 15:10:51 wirenboard-A6XXXT2R wb-mqtt-serial[23682]: Syntax error: value, object or array expected. | Jan 28 15:10:51 wirenboard-A6XXXT2R wb-mqtt-serial[23682]: Syntax error: value, object or array expected. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* Откройте в [[Wiren_Board_Web_Interface|веб-интерфейс контроллера]], перейдите '''Настройки → Системный журнал''' в пункте '''Выберите сервис — wb-mqtt-serial.service''' и нажмите кнопку '''загрузить'''. В примере файл конфигурации содержит два дублирующих друг друга параметра: | |||
[[Файл:Wb-mqtt-serial error.png|600px|thumb|centre| Журнал ошибок в веб-интерфейсе]] | |||
}} | |||
== Включение отладки== | == Включение отладки== | ||
Строка 56: | Строка 83: | ||
Включение отладки через [[Wiren Board Web Interface|веб-интерфейс]]: | Включение отладки через [[Wiren Board Web Interface|веб-интерфейс]]: | ||
# Зайдите в веб-интерфейс контроллера | # Зайдите в веб-интерфейс контроллера | ||
# Если вы работаете под обычным пользователем, то смените [[RS-485:Configuration via Web Interface#Смена уровня доступа к веб-интерфейсу| уровень доступа]] | # Если вы работаете под обычным пользователем, то смените [[RS-485:Configuration via Web Interface#Смена уровня доступа к веб-интерфейсу| уровень доступа]] | ||
# Перейдите '''Settings''' → '''Configs''' → '''Serial Device Driver Configuration''' | # Перейдите '''Settings''' → '''Configs''' → '''Serial Device Driver Configuration''' | ||
# Установите флажок '''Enable debug logging''' | # Установите флажок '''Enable debug logging''' | ||
Строка 78: | Строка 105: | ||
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 | 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 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Полезные ссылки == | |||
* [[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]] |