|
|
(не показано 189 промежуточных версий 9 участников) |
Строка 1: |
Строка 1: |
| '''Внимание!''' В этой статье даётся упрощённое и, возможно, устаревшее описание драйвера, работающего с устройствами Modbus и Uniel и передающего сообщения в MQTT. Полное актуальное описание смотрите на https://github.com/contactless/wb-homa-drivers/#wb-homa-modbus | | {{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]] |
| | === Общая информация === |
| | ''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 | Начальное конфигурирование устройств через веб-интерфейс]]. |
| В настоящее время поддерживается работа с устройствами протоколов Modbus RTU и Uniel, подключаемыми через RS-485.
| |
|
| |
|
| Конфигурация драйвера задаётся в файле /etc/wb-homa-modbus.conf. Если такой файл создан, драйвер запускается при загрузке контроллера автоматически. Также драйвером можно управлять в ручном режиме из консоли:
| | Wb-mqtt-serial использует систему JSON-шаблонов, которые описывают подключённые устройства: тип протокола, номера регистров, название параметров и контролов в веб-интерфейсе контроллера. В стандартной поставке есть шаблоны для всех устройств Wiren Board, а также некоторых сторонних устройств: счётчики электроэнергии, частотные преобразователи, холодильные контроллеры и другие. |
| <syntaxhighlight lang="bash">
| |
| service wb-homa-modbus stop #остановить драйвер
| |
| service wb-homa-modbus start #запустить драйвер
| |
| wb-homa-modbus -c /etc/wb-homa-modbus.conf -d #запустить драйвер в принудительном отладочном режиме
| |
| </syntaxhighlight>
| |
| === Конфигурационный файл ===
| |
| Для работы драйвера нужно создать файл <code>/etc/wb-homa-modbus.conf</code>. Для этого:
| |
| #Зайдите в консоль устройства через [[Debug UART]] или по [[SSH]]
| |
| #Создайте файл конфигурации, скопировав файл-образец:
| |
| #:<syntaxhighlight lang="bash">
| |
| cp /etc/wb-homa-modbus.conf.sample /etc/wb-homa-modbus.conf #скопировать файл-образец в файл настроек
| |
| </syntaxhighlight>
| |
| #Откройте созданный файл для редактирования:
| |
| #: <syntaxhighlight lang="bash">
| |
| mcedit /etc/wb-homa-modbus.conf #открыть файл в псевдографическом редакторе
| |
| </syntaxhighlight>
| |
| #Файл имеет структуру ''порты (ports) -> устройства (devices)''.
| |
| <syntaxhighlight lang="javascript">{
| |
| "debug": false,
| |
| "ports": [
| |
| {
| |
| "path" : "/dev/ttyNSC0",
| |
| "baud_rate": 9600,
| |
| "parity": "N",
| |
| "data_bits": 8,
| |
| "stop_bits": 2,
| |
| "poll_interval": 10,
| |
| "enabled": true,
| |
| "devices" : [
| |
| {
| |
| "device_type" : "WB-MRM2",
| |
| "slave_id": 25,
| |
| "enabled": true
| |
| }
| |
| ]
| |
| }
| |
| ]
| |
| }</syntaxhighlight>
| |
| # Привет
| |
|
| |
|
| | Если ваше устройство работает по поддерживаемому драйвером протоколу, но в стандартной поставке под него нет шаблона — можете написать шаблон сами: [[Connecting_Third_Party_Devices_to_Wiren_Board | Подключение стороннего Modbus-устройства к контроллеру Wiren Board]]. |
|
| |
|
| | Файлы и папки: |
| | * <code>/etc/wb-mqtt-serial.conf</code> — файл настроек драйвера, редактировать вручную не рекомендуем; |
| | * <code>/usr/share/wb-mqtt-serial/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|Просмотр файлов контроллера с компьютера]]. |
|
| |
|
| | Полное описание драйвера, список поддерживаемых протоколов и примеры шаблонов, смотрите '''[https://github.com/contactless/wb-mqtt-serial в репозитории на Github]'''. |
|
| |
|
| | === Особенности === |
| | При работе с Modbus-устройствами, драйвер оптимизирует запросы к устройствам: считывает несколько регистров подряд, не выдерживает некоторые задержки, рекомендованные стандартом. |
|
| |
|
| В файле есть описания физических портов контроллера, с которыми работает драйвер.
| | Поэтому при написании шаблона для сторонних Modbus-устройств, нужно указать параметр ''guard_interval_us'', который рассчитывается по формуле: |
| Для каждого порта указываются настройки (скорость, чётность и т.п.), а также протокол.
| | <syntaxhighlight lang="js"> |
| | | guard_interval_us = (3.5*11*10^6)/(скорость в бит/с) |
| Для каждого порта определён также список устройств, которые подключены к этому порту.
| |
| Для каждого устройства обязательно указывается его уникальный идентификатор на шине (подробнее про это можно прочитать в статье [[RS-485]]) - slave_id.
| |
| Кроме этого, для устройства можно задать его id в системе [[MQTT]], название устройства, а также описание каналов и регистров. Полное описание формата см. в [https://github.com/contactless/wb-homa-drivers/#wb-homa-modbus подробной документации].
| |
| | |
| Для многих устройств уже существуют шаблоны, которые позволяют подключать эти устройства простым способом. Минимальное описание одного устройства, таким образом, имеет вид:
| |
| | |
| <syntaxhighlight lang="javascript"> | |
| {
| |
| "slave_id": "0x06",
| |
| "device_type" : "WB-MRM2"
| |
| }
| |
| </syntaxhighlight> | | </syntaxhighlight> |
| | Так же этот параметр можно установить через веб-интерфейс: |
| | * Guard interval (us) — для порта. |
| | * Additional delay before each writing to port (us) — для устройства. |
|
| |
|
| Здесь <code>slave_id</code> - идентификатор устройства на шине, а <code> device_type </code> - тип устройства.
| | Если при чтении регистра устройства возникла ошибка, то соответствующий контрол в веб-интерфейсе будет окрашен в красный цвет. Аналогично с устройством — если оно давно не отвечает, то все его контролы будут окрашены красным. |
| Поддерживаемые типы устройств: [https://github.com/contactless/wb-homa-drivers/blob/master/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 список в документации].
| |
|
| |
|
| | == Управление драйвером == |
|
| |
|
| | Обычно драйвер запускается автоматически при загрузке контроллера и перезапускается при сохранении файла конфигурации в веб-интерфейсе. |
|
| |
|
| Пример конфигурационного файла <code> /etc/wb-homa-modbus.conf </code> :
| | Также можно управлять драйвером в ручном режиме — это может быть полезно для поиска ошибок в конфигурационном файле или если вам нужно освободить порт для использования [[modbus-client | modbus_client]]. |
| | |
| <syntaxhighlight lang="javascript">
| |
| | |
| // Configuration options
| |
| {
| |
| "debug": false,
| |
| "ports": [
| |
| {
| |
| "path" : "/dev/ttyNSC1",
| |
| "baud_rate": 9600,
| |
| "parity": "N",
| |
| "data_bits": 8,
| |
| "stop_bits": 2,
| |
| "poll_interval": 0,
| |
| "enabled": true,
| |
| "devices" : [
| |
| {
| |
| "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
| |
| }
| |
| ]
| |
| }
| |
| ]
| |
| }
| |
|
| |
|
| | Для выполнения команд подключитесь к контроллеру по [[SSH]]. Доступны команды: |
| | <syntaxhighlight lang="bash"> |
| | 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 # запустить в отладочном режиме с указанием пути к конфигурационному файлу |
| </syntaxhighlight> | | </syntaxhighlight> |
|
| |
|
| == Подключение устройств == | | == Диагностика неполадок == |
| | Если возникли проблемы с запуском драйвера, например, новое устройство не появилось, то можно узнать причину: выполните команду <code>systemctl status wb-mqtt-serial</code> и в последних двух строчках ответа будет подсказка. |
|
| |
|
| В секции приведены подробные описания устройств, а также примеры конфигурационных файлов для разных вариантов использования. | | В примере файл конфигурации содержит синтаксическую ошибку во второй строке на 14 позиции: |
| По-умолчанию можно пользоваться простым описанием устройств с помощью шаблонов device_type, как указано выше.
| | <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) |
|
| |
|
| | 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. |
| | </syntaxhighlight> |
|
| |
|
| | Проверить только шаблоны, в том числе и не подключённые в файле конфигурации, можно командой: |
| | <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> |
|
| |
|
| | Проверить файл конфигурации и шаблоны на ошибки: |
| | <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 |
|
| |
|
| ====MSU34+TLP, MSU24 и MSU21 и подобные устройства====
| | <3>ERROR: [serial] Can't find template for 'WB-MDM3' |
| | </syntaxhighlight> |
|
| |
|
| Сайт производителя - http://www.razumdom.ru/
| | При необходимости, можно добавить путь к файлу, который нужно проверить: |
| | <syntaxhighlight lang="bash"> |
| | wb-mqtt-serial -c /etc/wb-mqtt-serial.conf -j |
| | </syntaxhighlight> |
|
| |
|
| Документация:
| | == Включение отладки== |
| | [[Файл:Serial Web config.png|400px|thumb|right|Веб-интерфейс. Флажок ''Enable debug logging'' установлен, отладка включена]] |
| | Иногда нужно включить отладочный режим драйвера. Это можно сделать из [[#Управление драйвером | командной строки]] или через веб-интерфейс. |
|
| |
|
| [http://www.razumdom.ru/userfiles/file/Modbus/MSU21.pdf MSU21]
| | {{note|info| При включённой отладке размер системного журнала будет быстро расти, поэтому не забудьте отключить отладку, когда необходимость в ней отпадет.}} |
|
| |
|
| [http://www.razumdom.ru/userfiles/file/Modbus/MSU24.pdf MSU24] | | Включение отладки через [[Wiren Board Web Interface|веб-интерфейс]]: |
| | # Зайдите в веб-интерфейс контроллера |
| | # Если вы работаете под обычным пользователем, то смените [[RS-485:Configuration via Web Interface#Смена уровня доступа к веб-интерфейсу| уровень доступа]] |
| | # Перейдите '''Settings''' → '''Configs''' → '''Serial Device Driver Configuration''' |
| | # Установите флажок '''Enable debug logging''' |
| | # Нажмите на кнопку '''Save''', чтобы сохранить настройки. |
|
| |
|
| [http://www.razumdom.ru/userfiles/file/Modbus/MSU34.pdf MSU34]
| | Теперь в системный журнал будут записываться отправленные и принятые драйвером пакеты. |
|
| |
|
| Устройства выдают значения с датчиков через
| | Чтобы посмотреть debug-вывод драйвера, выполните в консоли контроллера команду <code>journalctl -e -p 7</code>, где <code>-e</code> — отобразить последние записи, а <code>-p 7</code> задает уровень сообщений, где 7 — это debug. Подробнее о параметрах утилиты, читайте в статье [[journalctl]]. |
| input-регистры. Для значений температуры используются
| |
| 8-битные знаковые значения без расширения знака
| |
| на старшие 8 бит input-регистра, вследствие
| |
| чего для значений температуры в конфигурационном
| |
| файле необходимо указывать "format": "s8".
| |
| | |
| Подключаемые к устройству датчики конфигурируются
| |
| через holding-регистры (см. описание). Для конфигурации
| |
| датчиков можно использовать команду <code>modbus_client</code>,
| |
| или сделать setup-секцию в конфигурации драйвера.
| |
| | |
| Для установки адреса slave можно использовать скрипт
| |
| set-rd-address.sh. При этом необходимо убедиться, что к
| |
| порту RS-485 было подлкючено только то устройство,
| |
| у которого необходимо сменить адрес, затем выполнить
| |
| команду:
| |
| <pre> | |
| set-rd.address.sh /dev/ttyNSC0 0x02
| |
| </pre>
| |
| Вместо 0x02 можно задать любой другой адрес
| |
| в диапазоне от 0 до 247 (0xf7).
| |
| | |
| Пример конфигурации:
| |
| <div class="mw-collapsible mw-collapsed" style="width:500px; overflow: hidden;" >
| |
| | |
| <pre>
| |
| {
| |
| "debug": false,
| |
| "ports": [
| |
| {
| |
| "path" : "/dev/ttyNSC0",
| |
| "baud_rate": 9600,
| |
| "parity": "N",
| |
| "data_bits": 8,
| |
| "stop_bits": 2,
| |
| "poll_interval": 10,
| |
| "enabled": true,
| |
| "devices" : [
| |
| {
| |
| "name": "MSU34+TLP",
| |
| "id": "msu34tlp",
| |
| "slave_id": 2,
| |
| "enabled": false,
| |
| "channels": [
| |
| {
| |
| "name" : "Temp 1",
| |
| "reg_type" : "input",
| |
| "address" : 0,
| |
| "type": "temperature",
| |
| "format": "s8"
| |
| },
| |
| {
| |
| "name" : "Illuminance",
| |
| "reg_type" : "input",
| |
| "address" : 1,
| |
| "type": "text"
| |
| },
| |
| {
| |
| "name" : "Pressure",
| |
| "reg_type" : "input",
| |
| "address" : 2,
| |
| "type": "text",
| |
| "scale": 0.075
| |
| },
| |
| {
| |
| "name" : "Temp 2",
| |
| "reg_type" : "input",
| |
| "address" : 3,
| |
| "type": "temperature",
| |
| "format": "s8"
| |
| }
| |
| ]
| |
| }
| |
| ]
| |
| }
| |
| ]
| |
| }
| |
| </pre> | |
| </div>
| |
| Пример конфигурации MSU21 с секцией инициализации ("setup"):
| |
| | |
| <div class="mw-collapsible mw-collapsed" style="width:500px; overflow: hidden;" >
| |
| <pre>
| |
| {
| |
| "name": "MSU21",
| |
| "id": "msu21",
| |
| "slave_id": 24,
| |
| "enabled": true,
| |
| "setup": [
| |
| {
| |
| "title": "Input 0 type",
| |
| "address": 1,
| |
| "value": 2
| |
| },
| |
| {
| |
| "title": "Input 0 module",
| |
| "address": 3,
| |
| "value": 6
| |
| }
| |
| ],
| |
| "channels": [
| |
| {
| |
| "name" : "Temperature",
| |
| "reg_type" : "input",
| |
| "address" : 0,
| |
| "type": "temperature",
| |
| "format": "s8"
| |
| }
| |
| ]
| |
| }
| |
| </pre> | |
| </div>
| |
| | |
| ====Четырёхканальный (RGBW) диммер светодиодов DDL24====
| |
| | |
| Сайт производителя - [http://www.razumdom.ru/ www.razumdom.ru]
| |
| | |
| Документация:
| |
| [http://www.razumdom.ru/userfiles/file/Modbus/DDL24.pdf DDL24]
| |
| | |
| Устройство предназначено для управления светодиодными
| |
| лентами RGBW сигналами ШИМ или для управления приводами
| |
| сигналами 0-10 В.
| |
| | |
| Управление осуществляется записью значений в
| |
| holding-регистры.
| |
| | |
| Как и в случае с устройствами MSU*, адрес
| |
| modbus slave устанавливается командой
| |
| set-rd-address.sh.
| |
| <pre>
| |
| set-rd-address.sh /dev/ttyNSC0 0x17 0x00
| |
| </pre>
| |
| Здесь происходит установка slave-адреса
| |
| в 0x17. Дополнительное значение
| |
| 0x00 нужно, т.к. DDL24 использует для
| |
| конфигурации адреса holding-регистр 0x00,
| |
| а не 0x80, используемый скриптом set-rd-address.sh | |
| по умолчанию.
| |
| | |
| Пример конфигурации:
| |
| | |
| | |
| <div class="mw-collapsible mw-collapsed" style="width:500px; overflow: hidden;" > | |
| <pre>
| |
| {
| |
| "name": "DDL24",
| |
| "id": "ddl24",
| |
| "enabled": true,
| |
| "slave_id": 23,
| |
| "channels": [
| |
| {
| |
| "name" : "Red",
| |
| "reg_type" : "holding",
| |
| "address" : 4,
| |
| "type": "range",
| |
| "max": 255
| |
| },
| |
| {
| |
| "name" : "Green",
| |
| "reg_type" : "holding",
| |
| "address" : 5,
| |
| "type": "range",
| |
| "max": 255
| |
| },
| |
| {
| |
| "name" : "Blue",
| |
| "reg_type" : "holding",
| |
| "address" : 6,
| |
| "type": "range",
| |
| "max": 255
| |
| },
| |
| {
| |
| "name" : "White",
| |
| "reg_type" : "holding",
| |
| "address" : 7,
| |
| "type": "range",
| |
| "max": 255
| |
| },
| |
| {
| |
| "name" : "RGB",
| |
| "reg_type" : "holding",
| |
| "address" : 8,
| |
| "type": "range",
| |
| "max": 100
| |
| },
| |
| {
| |
| "name" : "White1",
| |
| "reg_type" : "holding",
| |
| "address" : 9,
| |
| "type": "range",
| |
| "max": 100
| |
| },
| |
| {
| |
| "name" : "Voltage",
| |
| "reg_type" : "holding",
| |
| "address" : 18,
| |
| "type": "text"
| |
| }
| |
| ]
| |
| }
| |
| </pre>
| |
| </div>
| |
| | |
| ====Исполнительный модуль релейный восьмиканальный DRB88====
| |
| | |
| Сайт производителя - [http://www.razumdom.ru/ www.razumdom.ru]
| |
| | |
| Документация:
| |
| [http://www.razumdom.ru/userfiles/file/Modbus/DRB88S16_v14.pdf DRB88]
| |
| | |
| Исполнительные модули DRB88 предназначены для создания
| |
| систем автоматизации зданий. При работе по протоколу Modbus
| |
| поддерживается работа с реле через coils и с входами
| |
| через input registers.
| |
| | |
| Для установки адреса slave можно использовать скрипт
| |
| set-rd-address.sh. При этом необходимо убедиться, что к
| |
| порту RS-485 было подлкючено только то устройство,
| |
| у которого необходимо сменить адрес, затем выполнить
| |
| команду:
| |
| <pre>
| |
| set-rd.address.sh /dev/ttyNSC0 0x16
| |
| </pre>
| |
| Вместо 0x16 можно задать любой другой адрес
| |
| в диапазоне от 0 до 247 (0xf7).
| |
| | |
| Настройка типов input'ов осуществляется через
| |
| holding-регистры (см. описание). Для задания конфигурации
| |
| можно использовать команду <code>modbus_client</code>,
| |
| или сделать setup-секцию в конфигурации драйвера.
| |
| | |
| Пример конфигурации:
| |
| | |
| | |
| <div class="mw-collapsible mw-collapsed" style="width:500px; overflow: hidden;" >
| |
| <pre>
| |
| {
| |
| "name": "DRB88",
| |
| "id": "drb88",
| |
| "enabled": true,
| |
| "slave_id": 22,
| |
| "setup": [
| |
| {
| |
| "title": "Input 0 type",
| |
| "address": 1,
| |
| "value": 1
| |
| },
| |
| {
| |
| "title": "Input 0 module",
| |
| "address": 3,
| |
| "value": 3
| |
| }
| |
| ],
| |
| "channels": [
| |
| {
| |
| "name" : "Relay 1",
| |
| "reg_type" : "coil",
| |
| "address" : 0,
| |
| "type": "switch"
| |
| },
| |
| {
| |
| "name" : "Relay 2",
| |
| "reg_type" : "coil",
| |
| "address" : 1,
| |
| "type": "switch"
| |
| },
| |
| {
| |
| "name" : "Relay 3",
| |
| "reg_type" : "coil",
| |
| "address" : 2,
| |
| "type": "switch"
| |
| },
| |
| {
| |
| "name" : "Relay 4",
| |
| "reg_type" : "coil",
| |
| "address" : 3,
| |
| "type": "switch"
| |
| },
| |
| {
| |
| "name" : "Relay 5",
| |
| "reg_type" : "coil",
| |
| "address" : 4,
| |
| "type": "switch"
| |
| },
| |
| {
| |
| "name" : "Relay 6",
| |
| "reg_type" : "coil",
| |
| "address" : 5,
| |
| "type": "switch"
| |
| },
| |
| {
| |
| "name" : "Relay 7",
| |
| "reg_type" : "coil",
| |
| "address" : 6,
| |
| "type": "switch"
| |
| },
| |
| {
| |
| "name" : "Relay 8",
| |
| "reg_type" : "coil",
| |
| "address" : 7,
| |
| "type": "switch"
| |
| },
| |
| {
| |
| "name" : "Input 1",
| |
| "reg_type" : "input",
| |
| "address" : 0,
| |
| "type": "switch",
| |
| "on_value": 101
| |
| },
| |
| {
| |
| "name" : "Input 2",
| |
| "reg_type" : "input",
| |
| "address" : 1,
| |
| "type": "switch",
| |
| "on_value": 101
| |
| },
| |
| {
| |
| "name" : "Input 3",
| |
| "reg_type" : "input",
| |
| "address" : 2,
| |
| "type": "switch",
| |
| "on_value": 101
| |
| },
| |
| {
| |
| "name" : "Input 4",
| |
| "reg_type" : "input",
| |
| "address" : 3,
| |
| "type": "switch",
| |
| "on_value": 101
| |
| },
| |
| {
| |
| "name" : "Input 5",
| |
| "reg_type" : "input",
| |
| "address" : 4,
| |
| "type": "switch",
| |
| "on_value": 101
| |
| },
| |
| {
| |
| "name" : "Input 6",
| |
| "reg_type" : "input",
| |
| "address" : 5,
| |
| "type": "switch",
| |
| "on_value": 101
| |
| },
| |
| {
| |
| "name" : "Input 7",
| |
| "reg_type" : "input",
| |
| "address" : 6,
| |
| "type": "switch",
| |
| "on_value": 101
| |
| },
| |
| {
| |
| "name" : "Input 8",
| |
| "reg_type" : "input",
| |
| "address" : 7,
| |
| "type": "switch",
| |
| "on_value": 101
| |
| }
| |
| ]
| |
| }
| |
| </pre>
| |
| </div>
| |
| | |
| ====Модуль ввода-вывода ICP DAS tM-P3R3====
| |
| | |
| Описание:
| |
| [http://www.icpdas.com/root/product/solutions/remote_io/rs-485/tm-series/tm-p3r3.html tM-P3R3]
| |
| и
| |
| [http://www.icpdas.com/root/product/solutions/datasheet/tm-series/tM-Series_DIO_User_Manual.pdf User_Manual]
| |
| | |
| Модуль имеет 3 канала дискретного ввода, доступных через discrete inputs,
| |
| и 3 канала релейного вывода, доступного через coils.
| |
| | |
| Пример конфигурации:
| |
| | |
| | |
| <div class="mw-collapsible mw-collapsed" style="width:500px; overflow: hidden;" >
| |
| <pre>
| |
| {
| |
| "name": "tM-P3R3",
| |
| "id": "tmp3r3",
| |
| "enabled": true,
| |
| "slave_id": 1,
| |
| "channels": [
| |
| {
| |
| "name" : "Relay 0",
| |
| "reg_type" : "coil",
| |
| "address" : 0,
| |
| "type": "switch"
| |
| },
| |
| {
| |
| "name" : "Relay 1",
| |
| "reg_type" : "coil",
| |
| "address" : 1,
| |
| "type": "switch"
| |
| },
| |
| {
| |
| "name" : "Relay 2",
| |
| "reg_type" : "coil",
| |
| "address" : 2,
| |
| "type": "switch"
| |
| },
| |
| {
| |
| "name" : "Input 0",
| |
| "reg_type" : "discrete",
| |
| "address" : 32
| |
| },
| |
| {
| |
| "name" : "Input 1",
| |
| "reg_type" : "discrete",
| |
| "address" : 33
| |
| },
| |
| {
| |
| "name" : "Input 2",
| |
| "reg_type" : "discrete",
| |
| "address" : 34
| |
| }
| |
| ]
| |
| }
| |
| </pre>
| |
| </div>
| |
| | |
| ====Модуль управления освещением ICP DAS LC-103====
| |
| | |
| Описание:
| |
| [http://www.icpdas.com/root/product/solutions/remote_io/rs-485/lighting_control/lc-103.html LC-103] | |
| и
| |
| [http://www.icpdas-europe.com/uploads/tx_v4icpdascatalog/K128992/web/icpdas/manual-lc-103.pdf User manual]
| |
| | |
| Модуль имеет 3 релейных вывода и один дискретный вход, допускающий
| |
| подключение к сети переменного тока.
| |
| | |
| Адрес Modbus slave задаётся при помощи физического переключателя.
| |
| | |
| Пример конфигурации:
| |
|
| |
|
| | Пример вывода команды: |
| | <syntaxhighlight lang="bash"> |
| | ~# 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 |
| | </syntaxhighlight> |
|
| |
|
| <div class="mw-collapsible mw-collapsed" style="width:500px; overflow: hidden;" >
| | == Полезные ссылки == |
| <pre>
| | * [[Connecting_Third_Party_Devices_to_Wiren_Board | Как подключить стороннее Modbus-устройство]] |
| {
| | * [https://github.com/contactless/wb-mqtt-serial Описание wb-mqtt-serial на Github] |
| "name": "LC-103",
| | * [[Modbus|Описание протокола Modbus]] |
| "id": "lc103",
| | * [[Fast_Modbus| Описание расширения Быстрый Modbus]] |
| "enabled": true,
| | * [[RS-485|Описание шины RS-485]] |
| "slave_id": 4,
| |
| "channels": [
| |
| {
| |
| "name" : "Relay 1",
| |
| "reg_type" : "coil",
| |
| "address" : 0,
| |
| "type": "switch"
| |
| },
| |
| {
| |
| "name" : "Relay 2",
| |
| "reg_type" : "coil",
| |
| "address" : 1,
| |
| "type": "switch"
| |
| },
| |
| {
| |
| "name" : "Relay 3",
| |
| "reg_type" : "coil",
| |
| "address" : 2,
| |
| "type": "switch"
| |
| },
| |
| {
| |
| "name" : "Switch AC In",
| |
| "reg_type" : "discrete",
| |
| "address" : 0
| |
| }
| |
| ]
| |
| }
| |
| </pre>
| |
| </div>
| |