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

Материал из Wiren Board
(Перенаправление на Wb-mqtt-serial driver)
Метка: новое перенаправление
 
(не показана 151 промежуточная версия 7 участников)
Строка 1: Строка 1:
'''Внимание!''' Драйвер ''wb-mqtt-serial'' ранее назывался ''wb-homa-modbus'', конфигурационный файл <code>/etc/wb-mqtt-serial.conf</code> ранее назывался <code>/etc/wb-homa-modbus.conf</code>. Учитывайте это, если используете устаревшие прошивки.
#REDIRECT [[Wb-mqtt-serial driver]]
 
 
'''Внимание, статья устарела''', актуальную информацию можно найти по ссылке в описании [https://github.com/contactless/wb-mqtt-serial/ wb-mqtt-serial], в файлах самих шаблонов и в файле [https://github.com/contactless/wb-mqtt-serial/blob/master/wb-mqtt-serial.schema.json wb-mqtt-serial.schema.json]
 
----
 
=== Общая структура шаблона устройства ===
 
Файл шаблона устройств представляет собой структуру [https://ru.wikipedia.org/wiki/JSON JSON], описывающую параметры устройства. Шаблон допускает наличие комментариев.
JSON-структура записывается внутри пространства между открывающей и закрывающей фигурной скобкой: <code>{ ... }</code>.
 
 
Общая структура шаблона устройства выглядит следующим образом:
<pre>"device": {
 
общие параметры устройства,
 
"channels": [ {параметры канала 1}, {параметры канала 2}, ...]
}</pre>
 
Здесь device — устройство, подключаемое к контроллеру, канал — источник данных: обычно Modbus-регистр с описанием типа данных, частоты опроса, преобразования значений и проч.
Подробное описание смотрите в следующих разделах.
 
 
=== Параметры устройства (device) ===
 
В начале шаблона задаются параметры устройства в виде набора пар ''ключ:значение''.
Обязательными параметрами являются ключи "device_type" и "device".
 
Ключ '''device_type''' задает уникальное название типа устройства в виде строки, например:
<code> "device_type": "WB-MAP12H", </code>.
 
Значение ключа '''device''' — составная структура, описывающее конкретные параметры устройства:
 
<pre>"device": {
"name": "WB-MAP12H",
"id": "wb-map12h",
"channels": [...]
...}</pre>
 
 
* '''name''' — отображаемое имя устройства. Публикуется как <code> .../meta/name в mqtt</code>. Имя устройства используется при отображении web-интерфейсе, хранится в топике <code>"id" + " " + "slave_id"</code>. Пример для устройства с modbus-адресом 5 и значением "name":  "WB-MAP12H (basic)" <code>/devices/wb-map12h_5/meta/name WB-MAP12H (basic)</code>.
 
* '''id''' — уникальный идентификатор устройства в MQTT. Каждый элемент в devices должен иметь уникальный id. mqtt-topic'и, относящиеся в MQTT к данному устройству, имеют общий префикс /devices/<идентификатор топика>/... Также по умолчанию берется из шаблона с добавлением slave_id: <code>"id" + "_" + slave_id</code>
 
* '''slave_id''' — Modbus-адрес устройства. Задается в виде <code>"slave_id" : slaveID,</code>. Необязательный параметр для шаблона, slave_id задается при конкурировании устройства и уже с этим параметром включается в конфигурационный файл <cоde>/etc/wb-mqtt-serial.conf</cоde>.
 
* '''channels''' — список каналов устройств, задается в виде массива <code>[...]</code>, каждый из элементов которого представляет описание отдельного канала.
 
=== Каналы устройства ===
Описание канала представляет собой структуру, содержащую следующий набор полей.
 
name
reg_type
address
type
type
word_order
poll_interval
on_value
scale
error_value
round_to
 
 
 
 
 
 
В статье приведены примеры конфигурационных файлов для некоторых совместимых устройств. Следуя данным примерам, вы можете добавить новые устройства RS-485 в интерфейс Wiren Board, написав их конфигурации либо напрямую в файл <code>/etc/wb-mqtt-serial.conf</code>, либо в файл шаблонов <code>/usr/share/wb-mqtt-serial/templates/config-*.json</code>.
 
====MSU34+TLP, MSU24 и MSU21 и подобные устройства====
 
Сайт производителя - http://www.razumdom.ru/
 
Документация:
 
[http://www.razumdom.ru/userfiles/file/Modbus/MSU21.pdf MSU21] [http://www.razumdom.ru/userfiles/file/Modbus/MSU24.pdf MSU24] [http://www.razumdom.ru/userfiles/file/Modbus/MSU34.pdf MSU34]
 
Устройства выдают значения с датчиков через
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 задаётся при помощи физического переключателя.
 
Пример конфигурации:
 
 
<div class="mw-collapsible mw-collapsed"  style="width:500px; overflow: hidden;" >
<pre>
                {
                    "name": "LC-103",
                    "id": "lc103",
                    "enabled": true,
                    "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>

Текущая версия на 12:10, 1 декабря 2021

Перенаправление на: