|
|
Строка 123: |
Строка 123: |
| </syntaxhighlight> | | </syntaxhighlight> |
|
| |
|
| == Детали конфигурирования для разных устройств == | | == Доработка драйвера для поддержки новых устройств == |
| В секции приведены подробные описания устройств, а также примеры конфигурационных файлов для разных вариантов использования. По умолчанию можно пользоваться простым описанием устройств с помощью шаблонов device_type, как указано выше. | | В качестве отправной точки смотрите статью [[Драйвер wb-homa-modbus:Примеры написания шаблонов]], а также свяжитесь с нами. |
| ====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>
| |
Внимание! В этой статье даётся упрощённое и, возможно, устаревшее описание драйвера, работающего с устройствами Modbus и Uniel и передающего сообщения в MQTT. Полное актуальное описание смотрите на https://github.com/contactless/wb-homa-drivers/#wb-homa-modbus
Краткое описание драйвера
В настоящее время поддерживается работа с устройствами протоколов Modbus RTU и Uniel, подключаемыми через RS-485.
Конфигурация драйвера задаётся в файле /etc/wb-homa-modbus.conf
. Если такой файл создан, драйвер запускается при загрузке контроллера автоматически. Также драйвером можно управлять в ручном режиме из консоли:
service wb-homa-modbus stop #остановить драйвер
service wb-homa-modbus start #запустить драйвер
service wb-homa-modbus restart #перезапустить драйвер
wb-homa-modbus -c /etc/wb-homa-modbus.conf -d #запустить драйвер в принудительном отладочном режиме
Конфигурационный файл
Для работы драйвера нужно создать файл /etc/wb-homa-modbus.conf
. Для этого:
- Зайдите в консоль устройства через Debug UART или по SSH.
- Создайте файл и откройте его для редактирования:
mcedit /etc/wb-homa-modbus.conf #открыть файл в псевдографическом редакторе
- Если файл уже был создан, эта же команда просто откроет его для редактирования.
- Файл имеет структуру порты (ports) -> устройства (devices): в файле есть описания физических портов контроллера, а внутри них - список устройств, которые подключены к этому порту.
- Для каждого порта указываются настройки (скорость, чётность и т.п.), а также протокол (Modbus, RTU, etc.)
- Для каждого устройства обязательно указывается его уникальный адрес на шине - slave_id (подробнее про это можно прочитать в статье RS-485). Также можно указать другие необязательные параметры - смотрите полное описание формата в подробной документации.
- Впишите конфигурацию для портов и подключённых устройств в файл, используя примеры ниже. Затем нажмите F2, чтобы сохранить изменения, и F10, чтобы выйти из редактора.
- Выполните команду
service wb-homa-modbus restart
- Она перезапустит драйвер, и подключённое устройство появится в веб-интерфейсе. Если устройство не появилось, выполните команду Если там будет строчка такого типа:
May 6 17:50:58 wirenboard user.notice modbus: FATAL: Error parsing config file: Failed to parse JSON: * Line 15, Column 17
- - ищите ошибку в 15-й строке конфигурационного файла.
Пример конфигурации для модуля реле WB-MRM2, подключённого к изолированному порту (RS-485-ISO) Wiren Board 4
{
"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 //адрес устройства
}
]
}
]
}
Узнать файл, соответствующий порту для вашего контроллера - RS-485#Реализация портов в разных версиях Wiren Board .
Полный список поддерживаемых типов устройств - 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
Пример конфигурационного файла для нескольких подключённых устройств
// 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
}
]
}
]
}
Доработка драйвера для поддержки новых устройств
В качестве отправной точки смотрите статью Драйвер wb-homa-modbus:Примеры написания шаблонов, а также свяжитесь с нами.