Wb-mqtt-serial driver

Материал из Wiren Board
Версия от 05:37, 12 августа 2014; Ivan4th (обсуждение | вклад) (Новая страница: «=Устройства с интерфейсом Modbus= В настоящее время поддерживается работа с устройствами Mo…»)

Устройства с интерфейсом Modbus

В настоящее время поддерживается работа с устройствами Modbus RTU, подключаемыми через RS-485.

Конфигурация драйвера задаётся в файле /etc/wb-homa-modbus.conf

Останов драйвера: - service wb-homa-modbus stop

Запуск драйвера: service wb-homa-modbus start

Запуск драйвера в принудительном отладочном режиме:

wb-homa-modbus -c /etc/wb-homa-modbus.conf -d

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

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

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

http://www.razumdom.ru/userfiles/file/Modbus/MSU21.pdf

http://www.razumdom.ru/userfiles/file/Modbus/MSU24.pdf

http://www.razumdom.ru/userfiles/file/Modbus/MSU34.pdf

Устройства выдают значения с датчиков через input-регистры. Для значений температуры используются 8-битные знаковые значения без расширения знака на старшие 8 бит input-регистра, вследствие чего для значений температуры в конфигурационном файле необходимо указывать "format": "s8".

Подключаемые к устройству датчики конфигурируются через holding-регистры (см. описание). Для конфигурации датчиков можно использовать команду modbus_client, или сделать setup-секцию в конфигурации драйвера.

Для установки адреса slave можно использовать скрипт set-rd-address.sh. При этом необходимо убедиться, что к порту RS-485 было подлкючено только то устройство, у которого необходимо сменить адрес, затем выполнить команду:

set-rd.address.sh /dev/ttyNSC0 0x16

Вместо 0x16 можно задать любой другой адрес в диапазоне от 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"
                        }
                    ]
                }