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

Материал из Wiren Board
(Новая страница: «As a starting point, see the article Драйвер wb-homa-modbus:Примеры написания шаблонов/en|WB-homa-modbus Driver:Examples of wri…»)
(Новая страница: «==Configuring and running the driver==»)
Строка 22: Строка 22:




==Конфигурирование и запуск драйвера==
==Configuring and running the driver==


Конфигурация драйвера задаётся в файле <code>/etc/wb-mqtt-serial.conf</code>. Если такой файл создан, драйвер запускается при загрузке контроллера автоматически. Также драйвером можно управлять в ручном режиме из консоли:
Конфигурация драйвера задаётся в файле <code>/etc/wb-mqtt-serial.conf</code>. Если такой файл создан, драйвер запускается при загрузке контроллера автоматически. Также драйвером можно управлять в ручном режиме из консоли:

Версия 13:13, 29 мая 2019

Другие языки:

Attention! Driver wb-mqtt-serial was formerly named wb-homa-modbus, configuration file /etc/wb-mqtt-serial.conf was previously named /etc/wb-homa-modbus.conf. Keep this in mind if you are using outdated firmware.


The wb-mqtt-serial driver is responsible for working with devices connected to the Wiren Board controller via RS-485 . It provides work with connected devices through the MQTT message system. This article provides a simplified description of the driver, see the full description of the driver on our Github.


Supported Devices

Currently, work with Modbus interface devices of our production, Mercury and Milur counters, as well as with some other devices, including those operating under the Modbus Protocol, is supported. Full list of tested devices: Supported devices#RS-485 connected. Supported devices#connected via RS-485 .

Support for multiple protocol devices on the same bus

It is possible to use devices with different protocols on the same bus, but it is necessary to take into account the features of specific protocols.

For example, Uniel device frames start with byte 0xff, IVTM devices start with byte 0x24 ('$'), and in the case of Modbus, Mercury 230, and Milur protocols, the first byte of the frame is the slave ID, so when you combine such devices, you should carefully choose the slave id of Milur devices, for example, the default slave ID is 0xff, which leads to a conflict with Uniel devices. Milur Devices require additional polling delays (defined in the template) and may reduce polling speed when used on the same bus with other devices. Some devices that support additional protocols may not be compatible with other protocols on the same bus, for example, it has been observed that devices supporting the A-BUS protocol produced by "razumdom.ru" can not work on the same bus with Uniel devices. The work of the IVTM devices on the same bus with devices operating on other protocols has not been tested. Proven working combination is: Modbus + Milur (slave_id != 0xff) + Uniel on one bus.


Driver revision to support new devices

As a starting point, see the article WB-homa-modbus Driver:Examples of writing templates, for further support, contact us.


Configuring and running the driver

Конфигурация драйвера задаётся в файле /etc/wb-mqtt-serial.conf. Если такой файл создан, драйвер запускается при загрузке контроллера автоматически. Также драйвером можно управлять в ручном режиме из консоли:

service wb-mqtt-serial stop #остановить драйвер
service wb-mqtt-serial start #запустить драйвер
service wb-mqtt-serial restart #перезапустить драйвер
wb-mqtt-serial -c /etc/wb-mqtt-serial.conf -d #запустить драйвер в принудительном отладочном режиме с указанием пути к конфигурационному файлу


Конфигурационный файл драйвера

Для работы драйвера нужно отредактировать файл /etc/wb-mqtt-serial.conf. Обычный пользователь может воспользоваться способом RS-485:Настройка через веб-интерфейс, который тоже приводит к правильному заполнению файла конфигурации. Однако отредактировать файл можно и вручную, для этого:

  1. Ознакомьтесь с инструкцией Просмотр файлов контроллера с компьютера
  2. Файл /etc/wb-mqtt-serial.conf имеет структуру порты (ports) -> устройства (devices): в файле есть описания физических портов контроллера, а внутри них - список устройств, которые подключены к этому порту.
    Для каждого порта указываются настройки (скорость, чётность и т.п.), а также протокол (Modbus, RTU, etc.)
    Для каждого устройства обязательно указывается его уникальный адрес на шине - slave_id. Также можно указать другие необязательные параметры - смотрите полное описание формата в описании драйвера на нашем Github.
  3. Впишите конфигурацию для портов и подключённых устройств в файл, используя примеры ниже.
  4. Перезагрузите устройство ИЛИ выполните из консоли команду
    service wb-mqtt-serial restart
    
    Она перезапустит драйвер, и подключённое устройство появится в веб-интерфейсе.
  5. Если устройство не появилось, выполните команду
    tail /var/log/messages
    
    или откройте файл /var/log/messages и промотайте его до конца. Если там будет строчка такого типа:
    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 .

Полный список поддерживаемых типов устройств см. в статье Поддерживаемые устройства, а также здесь.


Пример конфигурационного файла для нескольких подключённых устройств

// 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
		}
	    ]
	}
    ]
}