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

Материал из Wiren Board
Строка 306: Строка 306:
  </pre>
  </pre>
</div>
</div>
==== WBIO-DO-R10A-8 ====
Устройство [[WBIO-DO-R10A-8_Relay_Module|WBIO-DO-R10A-8]] — релейный боковой модуль, который подключается непосредственно к WBIO-разъему контроллера, и не управляется по Modbus. Но при подключении его через устройство расширения WB-MIO или WB-MIO-E становится полноценным Modbus-устройством, для которого имеется соответствующий шаблон.
По ссылке "Expand" можно увидеть полный код шаблона.
<div class="mw-collapsible mw-collapsed"  style="width:500px; overflow: hidden;" >
<pre>
{
    "device_type": "WBIO-DO-R10A-8",
    "device": {
        "name": "WBIO-DO-R10A-8",
        "id": "wb-mio-gpio",
        "protocol": "modbus_io",
        "stride": 1000,
        "shift": 500,
        "max_read_registers": 0,
        "setup": [
            {
                "title": "IODIR",
                "address": 10000,
                "value": "0x0000"
            },
            {
                "title": "IPOL",
                "address": 10001,
                "value": "0x0000"
            },
            {
                "title": "GPINTEN",
                "address": 10002,
                "value": "0xffff"
            },
            {
                "title": "DEFVAL",
                "address": 10003,
                "value": "0x0000"
            },
            {
                "title": "INTCON",
                "address": 10004,
                "value": "0x0000"
            },
            {
                "title": "IOCON",
                "address": 10005,
                "value": "0x4444"
            },
            {
                "title": "FLAG",
                "address": 9999,
                "value": 1
            }
        ],
        "channels": [
            {
                "name": "K1",
                "reg_type": "coil",
                "address": 0,
                "type": "switch"
            },
            {
                "name": "K2",
                "reg_type": "coil",
                "address": 1,
                "type": "switch"
            },
            {
                "name": "K3",
                "reg_type": "coil",
                "address": 2,
                "type": "switch"
            },
            {
                "name": "K4",
                "reg_type": "coil",
                "address": 3,
                "type": "switch"
            },
            {
                "name": "K5",
                "reg_type": "coil",
                "address": 4,
                "type": "switch"
            },
            {
                "name": "K6",
                "reg_type": "coil",
                "address": 5,
                "type": "switch"
            },
            {
                "name": "K7",
                "reg_type": "coil",
                "address": 6,
                "type": "switch"
            },
            {
                "name": "K8",
                "reg_type": "coil",
                "address": 7,
                "type": "switch"
            }
        ]
    }
}
</pre>
</div>


====MSU34+TLP, MSU24 и MSU21 и подобные устройства====
====MSU34+TLP, MSU24 и MSU21 и подобные устройства====

Версия 15:50, 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-регистр с описанием типа данных, частоты опроса, преобразования значений и проч.

Подробное описание смотрите в следующих разделах. Файлы шаблонов хранятся на контроллере в директории

/usr/share/wb-mqtt-serial/templates<pre>. В эту директорию следует копировать новые шаблоны, созданные вами для нового устройства.

=== Параметры устройства (device) ===
[[File:Device_properties_mqtt_serial.png|650px|thumb|right|Параметры устройства описываются в wb-mqtt-serial.schema.json]]

В начале шаблона задаются параметры устройства в виде набора пар ''ключ:значение''.
Обязательными параметрами являются ключи "device_type" и "device".

Ключ '''device_type''' задает уникальное название типа устройства в виде строки, например:
<code> "device_type": "WB-MAP12H", </code>.

Значение ключа '''device''' — составная структура, описывающее конкретные параметры устройства: 

<pre>"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".

Каналы устройства

Параметры канала описываются в wb-mqtt-serial.schema.json

Описание канала представляет собой структуру

	"channels": [
			{
				"name": "Имя канала 1",
				...
			},
			{
				"name": "Имя канала 2",
                                ...
			},

                       ...
	          ]

Структура содержит следующий набор полей.

формат представления данных в Modbus-регистрах, описывается в wb-mqtt-serial.schema.json
  • 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, охватывающие весь основной список используемых параметров при создании шаблонов.

WB-MS-THLS v.2

Устройство WB-MS-THLS — универсальный комбинированный Modbus-датчик температуры, влажности, освещённости и звукового давления. Устройство предоставляет доступ к данным через input-регистры Modbus. Первоначальные настройки устройства записаны в holding-регистры, но не используются для получения данных и управления устройством, поэтому в шаблон не входят. По ссылке "Expand" можно увидеть полный код шаблона.

{
    "device_type": "WB-MS-THLS v.2",
    "device": {
        "name": "WB-MS / WB-MSW",
        "id": "wb-ms-thls-v2",
        "max_read_registers": 0,
        "channels": [
            {
                "name": "Temperature",
                "reg_type": "input",
                "address": 0,
                "type": "temperature",
                "format": "s16",
                "scale": 0.1,
                "error_value": "0x7FFF"
            },
            {
                "name": "Humidity",
                "reg_type": "input",
                "address": 1,
                "type": "rel_humidity",
                "scale": 0.1,
                "error_value": "0xFFFF"
            },
            {
                "name": "Illuminance",
                "reg_type": "input",
                "address": 2,
                "type": "lux"
            },
            {
                "name": "Sound Level",
                "reg_type": "input",
                "address": 3,
                "scale": 0.01,
                "type": "sound_level"
            },
            {
                "name": "Input Voltage",
                "reg_type": "input",
                "address": 121,
                "scale": 0.001,
                "type": "voltage"
            },
            {
                "name": "External Sensor 1",
                "type": "temperature",
                "reg_type": "input",
                "address": "6",
                "format": "s16",
                "scale": 0.0625,
                "error_value": "0x7FFF"
            },
            {
                "name": "External Sensor 2",
                "type": "temperature",
                "reg_type": "input",
                "address": "7",
                "format": "s16",
                "scale": 0.0625,
                "error_value": "0x7FFF"
            }
        ]
    }
}
 

В настройках устройства интересен параметр

                "max_read_registers": 0,

Этот параметр описывает максимальное количество регистров, считываемых с устройства при запросе. Значение по умолчанию — 1, в нашем случае мы указываем считывать все регистры за один проход (bulk read).

В настройках канала "Temperature" имеются три параметра, на которые стоит обратить внимание:

                "format": "s16",
                "scale": 0.1,
                "error_value": "0x7FFF"

Параметр "format": "s16" указывает на то, что число в регистрах представленов в виде знакового шестнадцатибитнного целого, "scale": 0.1 — говорит о том, что полученное из регистров значение следует домножить на коэффициент масштабирования 0,1 для получения значения температуры, а параметр "error_value": "0x7FFF" задает значение, получаемое из регистра, указывающее на то, что при опросе датчика произошла ошибка. Такой параметр будет выделен красным цветом в Web-интерфейсе контроллера. Применять такой параметр следует, если вы знаете, какое значение выдает ваше устройство в случае ошибки.


WB-MRGBW-D

Устройство WB-MRGBW-D — четырехканальный диммер для управления светодиодными лентами. Может управлять лентой RGB+W либо независимо четырьмя одноцветными лентами. Настройки яркости хранятся в holding-регистрах; шаблон описывает, какие регистры можно менять для получения нужной яркости каналов, отслеживать нажатия на кнопки диммера и получать значения количества нажатий.По ссылке "Expand" можно увидеть полный код шаблона.

В этом шаблоне составной канал RGB задает одновременно яркости трех цветовых компонентов ленты, хранящихся в трех holding-регистрах и описывается следующим образом:

            {
                "name": "RGB", 
                "type": "rgb", 
                "consists_of": [
                    {
                        "reg_type": "holding", 
                        "address": 1
                    }, 
                    {
                        "reg_type": "holding", 
                        "address": 0
                    }, 
                    {
                        "reg_type": "holding", 
                        "address": 2
                    }
                ]
            }, 

Канал белого цвета управляется отдельно,

            {
                "name": "White", 
                "reg_type": "holding", 
                "address": 3, 
                "type": "range", 
                "max": 255
            }, 

Здесь указано максимальное значение, которое можно установить для ползунка яркости белого — 255:

"max": 255

Серийный номер устройства (канал "Serial NO") считывается как беззнаковое 32-битное целое:

"format": "u32"




{
    "device_type": "WB-MRGBW-D", 
    "device": {
        "name": "WB-MRGBW-D", 
        "id": "wb-mrgbw-d", 
        "max_read_registers": 0, 
        "channels": [
            {
                "name": "RGB", 
                "type": "rgb", 
                "consists_of": [
                    {
                        "reg_type": "holding", 
                        "address": 1
                    }, 
                    {
                        "reg_type": "holding", 
                        "address": 0
                    }, 
                    {
                        "reg_type": "holding", 
                        "address": 2
                    }
                ]
            }, 
            {
                "name": "White", 
                "reg_type": "holding", 
                "address": 3, 
                "type": "range", 
                "max": 255
            }, 
            {
                "name": "Button 1", 
                "reg_type": "holding", 
                "readonly": true, 
                "address": 6, 
                "type": "switch"
            }, 
            {
                "name": "Button 2", 
                "reg_type": "holding", 
                "readonly": true, 
                "address": 7, 
                "type": "switch"
            }, 
            {
                "name": "Button 3", 
                "reg_type": "holding", 
                "readonly": true, 
                "address": 8, 
                "type": "switch"
            }, 
            {
                "name": "Button 1 counter", 
                "reg_type": "holding", 
                "readonly": true, 
                "address": 32, 
                "type": "value"
            }, 
            {
                "name": "Button 2 counter", 
                "reg_type": "holding", 
                "readonly": true, 
                "address": 33, 
                "type": "value"
            }, 
            {
                "name": "Button 3 counter", 
                "reg_type": "holding", 
                "readonly": true, 
                "address": 34, 
                "type": "value"
            }, 
            {
                "name": "Serial NO", 
                "type": "text", 
                "reg_type": "holding", 
                "address": 270, 
                "format": "u32"
            }
        ]
    }
}
 


WBIO-DO-R10A-8

Устройство WBIO-DO-R10A-8 — релейный боковой модуль, который подключается непосредственно к WBIO-разъему контроллера, и не управляется по Modbus. Но при подключении его через устройство расширения WB-MIO или WB-MIO-E становится полноценным Modbus-устройством, для которого имеется соответствующий шаблон. По ссылке "Expand" можно увидеть полный код шаблона.

{
    "device_type": "WBIO-DO-R10A-8",
    "device": {
        "name": "WBIO-DO-R10A-8",
        "id": "wb-mio-gpio",
        "protocol": "modbus_io",
        "stride": 1000,
        "shift": 500,
        "max_read_registers": 0,
        "setup": [
            {
                "title": "IODIR",
                "address": 10000,
                "value": "0x0000"
            },
            {
                "title": "IPOL",
                "address": 10001,
                "value": "0x0000"
            },
            {
                "title": "GPINTEN",
                "address": 10002,
                "value": "0xffff"
            },
            {
                "title": "DEFVAL",
                "address": 10003,
                "value": "0x0000"
            },
            {
                "title": "INTCON",
                "address": 10004,
                "value": "0x0000"
            },
            {
                "title": "IOCON",
                "address": 10005,
                "value": "0x4444"
            },
            {
                "title": "FLAG",
                "address": 9999,
                "value": 1
            }
        ],
        "channels": [
            {
                "name": "K1",
                "reg_type": "coil",
                "address": 0,
                "type": "switch"
            },
            {
                "name": "K2",
                "reg_type": "coil",
                "address": 1,
                "type": "switch"
            },
            {
                "name": "K3",
                "reg_type": "coil",
                "address": 2,
                "type": "switch"
            },
            {
                "name": "K4",
                "reg_type": "coil",
                "address": 3,
                "type": "switch"
            },
            {
                "name": "K5",
                "reg_type": "coil",
                "address": 4,
                "type": "switch"
            },
            {
                "name": "K6",
                "reg_type": "coil",
                "address": 5,
                "type": "switch"
            },
            {
                "name": "K7",
                "reg_type": "coil",
                "address": 6,
                "type": "switch"
            },
            {
                "name": "K8",
                "reg_type": "coil",
                "address": 7,
                "type": "switch"
            }
        ]
    }
}
 


MSU34+TLP, MSU24 и MSU21 и подобные устройства

Сайт производителя - http://www.razumdom.ru/

Документация:

MSU21 MSU24 MSU34

Устройства выдают значения с датчиков через 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).

Пример конфигурации:

{
    "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"
                        }
                    ]
                }
            ]
        }
    ]
}

Пример конфигурации MSU21 с секцией инициализации ("setup"):

                {
                    "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"
                        }
                    ]
                }

Четырёхканальный (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 по умолчанию.

Пример конфигурации:


                {
                    "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"
                        }
                    ]
                }

Исполнительный модуль релейный восьмиканальный 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-секцию в конфигурации драйвера.

Пример конфигурации:


                {
                    "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
                        }
                    ]
                }

Модуль ввода-вывода ICP DAS tM-P3R3

Описание: tM-P3R3 и User_Manual

Модуль имеет 3 канала дискретного ввода, доступных через discrete inputs, и 3 канала релейного вывода, доступного через coils.

Пример конфигурации:


                {
                    "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
                        }
                    ]
                }

Модуль управления освещением ICP DAS LC-103

Описание: LC-103 и User manual

Модуль имеет 3 релейных вывода и один дискретный вход, допускающий подключение к сети переменного тока.

Адрес Modbus slave задаётся при помощи физического переключателя.

Пример конфигурации:


                {
                    "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
                        }
                    ]
                }