Wb-mqtt-serial templates: различия между версиями
Kilpio (обсуждение | вклад) |
Kilpio (обсуждение | вклад) |
||
Строка 86: | Строка 86: | ||
=== Примеры шаблонов устройств === | |||
Ниже приведены примеры конфигурационных файлов для некоторых устройств Wiren Board. | |||
====MSU34+TLP, MSU24 и MSU21 и подобные устройства==== | ====MSU34+TLP, MSU24 и MSU21 и подобные устройства==== |
Версия 14:49, 9 октября 2018
Внимание! Драйвер wb-mqtt-serial ранее назывался wb-homa-modbus, конфигурационный файл /etc/wb-mqtt-serial.conf
ранее назывался /etc/wb-homa-modbus.conf
. Учитывайте это, если используете устаревшие прошивки.
Внимание, статья устарела, актуальную информацию можно найти по ссылке в описании wb-mqtt-serial, в файлах самих шаблонов и в файле wb-mqtt-serial.schema.json
Общая структура шаблона устройства
Файл шаблона устройств представляет собой структуру JSON, описывающую параметры устройства. Шаблон допускает наличие комментариев.
JSON-структура записывается внутри пространства между открывающей и закрывающей фигурной скобкой: { ... }
.
Общая структура шаблона устройства выглядит следующим образом:
//Шаблон устройства { "device": { Параметры устройства, "channels": [ {Параметры канала 1}, {Параметры канала 2}, ...] } }
Здесь device — устройство, подключаемое к контроллеру, канал — источник данных: обычно Modbus-регистр с описанием типа данных, частоты опроса, преобразования значений и проч. Подробное описание смотрите в следующих разделах.
Параметры устройства (device)
В начале шаблона задаются параметры устройства в виде набора пар ключ:значение. Обязательными параметрами являются ключи "device_type" и "device".
Ключ device_type задает уникальное название типа устройства в виде строки, например:
"device_type": "WB-MAP12H",
.
Значение ключа device — составная структура, описывающее конкретные параметры устройства:
"device": { "name": "WB-MAP12H", "id": "wb-map12h", "channels": [...] ...}
- name — отображаемое имя устройства. Публикуется как
.../meta/name в mqtt
. Имя устройства используется при отображении web-интерфейсе, хранится в топике"id" + " " + "slave_id"
. Пример для устройства с modbus-адресом 5 (slave_id) и значением "name": "WB-MAP12H (basic)"/devices/wb-map12h_5/meta/name WB-MAP12H (basic)
.
- id — уникальный идентификатор устройства в MQTT. Каждый элемент в devices должен иметь уникальный id. mqtt-topic'и, относящиеся в MQTT к данному устройству, имеют общий префикс /devices/<идентификатор топика>/... Также по умолчанию берется из шаблона с добавлением slave_id:
"id" + "_" + slave_id
- channels — список каналов устройств, задается в виде массива
[...]
, каждый из элементов которого представляет описание отдельного канала.
Остальные параметры устройства либо добавляются в раздел при включении шаблона в общую конфигурацию wb-mqtt-serial, либо используются значения по умолчанию. Полный список можно найти в файле wb-mqtt-serial.schema.json (его копия также хранится на контроллере: /usr/share/wb-mqtt-confed/schemas/wb-mqtt-serial.schema.json
). Смотрите свойства объекта "device" -> "properties"
.
Каналы устройства
Описание канала представляет собой структуру
"channels": [ { "name": "Имя канала 1", ... }, { "name": "Имя канала 2", ... }, ... ]
Структура содержит следующий набор полей.
- name — имя канала, уникальное для устройство имя канала
- reg_type — тип Modbus-регистра, одно из "coil", "discrete", "holding", "holding_single", "holding_multi", "input", "direct"
- address — адрес Modbus-регистра, связанного с каналом.
- type — тип контрола -- виртуального элемента для представления данных в Web-интерфейсе контроллера: "switch", "pushbutton", "range", "rgb" и другие; полностью перечислены в схеме wb-mqtt-serial.schema.json.
- readonly — "true", если значения можно только считывать.
- format — тип переменной, описывающей значение, см. рис.
В простейшем случае достаточно полей "name", "reg_type", "address" и "type". Описания остальных типов параметров полностью перечислены в схеме wb-mqtt-serial.schema.json.
Примеры шаблонов устройств
Ниже приведены примеры конфигурационных файлов для некоторых устройств Wiren Board.
MSU34+TLP, MSU24 и MSU21 и подобные устройства
Сайт производителя - http://www.razumdom.ru/
Документация:
Устройства выдают значения с датчиков через input-регистры. Для значений температуры используются 8-битные знаковые значения без расширения знака на старшие 8 бит input-регистра, вследствие чего для значений температуры в конфигурационном файле необходимо указывать "format": "s8".
Подключаемые к устройству датчики конфигурируются
через holding-регистры (см. описание). Для конфигурации
датчиков можно использовать команду modbus_client
,
или сделать setup-секцию в конфигурации драйвера.
Для установки адреса slave можно использовать скрипт set-rd-address.sh. При этом необходимо убедиться, что к порту RS-485 было подлкючено только то устройство, у которого необходимо сменить адрес, затем выполнить команду:
set-rd.address.sh /dev/ttyNSC0 0x02
Вместо 0x02 можно задать любой другой адрес в диапазоне от 0 до 247 (0xf7).
Пример конфигурации:
Пример конфигурации MSU21 с секцией инициализации ("setup"):
Четырёхканальный (RGBW) диммер светодиодов DDL24
Сайт производителя - www.razumdom.ru
Документация: DDL24
Устройство предназначено для управления светодиодными лентами RGBW сигналами ШИМ или для управления приводами сигналами 0-10 В.
Управление осуществляется записью значений в holding-регистры.
Как и в случае с устройствами MSU*, адрес modbus slave устанавливается командой set-rd-address.sh.
set-rd-address.sh /dev/ttyNSC0 0x17 0x00
Здесь происходит установка slave-адреса в 0x17. Дополнительное значение 0x00 нужно, т.к. DDL24 использует для конфигурации адреса holding-регистр 0x00, а не 0x80, используемый скриптом set-rd-address.sh по умолчанию.
Пример конфигурации:
Исполнительный модуль релейный восьмиканальный DRB88
Сайт производителя - www.razumdom.ru
Документация: DRB88
Исполнительные модули DRB88 предназначены для создания систем автоматизации зданий. При работе по протоколу Modbus поддерживается работа с реле через coils и с входами через input registers.
Для установки адреса slave можно использовать скрипт set-rd-address.sh. При этом необходимо убедиться, что к порту RS-485 было подлкючено только то устройство, у которого необходимо сменить адрес, затем выполнить команду:
set-rd.address.sh /dev/ttyNSC0 0x16
Вместо 0x16 можно задать любой другой адрес в диапазоне от 0 до 247 (0xf7).
Настройка типов input'ов осуществляется через
holding-регистры (см. описание). Для задания конфигурации
можно использовать команду modbus_client
,
или сделать setup-секцию в конфигурации драйвера.
Пример конфигурации:
Модуль ввода-вывода ICP DAS tM-P3R3
Описание: tM-P3R3 и User_Manual
Модуль имеет 3 канала дискретного ввода, доступных через discrete inputs, и 3 канала релейного вывода, доступного через coils.
Пример конфигурации:
Модуль управления освещением ICP DAS LC-103
Описание: LC-103 и User manual
Модуль имеет 3 релейных вывода и один дискретный вход, допускающий подключение к сети переменного тока.
Адрес Modbus slave задаётся при помощи физического переключателя.
Пример конфигурации: