Добавление устройства стороннего производителя по modbus


Добрый день помогите проверить правильность написания темплейта

{
	 "title": "CWT-TH03S-H-M-Modbus_template",
    "device_type": "CWT-TH03S-H-M",
    "device": {
        "name": "CWT-TH03S-H-M",
        "id": "CWT-TH03S-H-M",
        "max_read_registers": 0,
        "response_timeout_ms": 150,
        "frame_timeout_ms": 12,
		"guard_interval_us": 4000,
		
		"channels": [
			{
                "name": "Humidity zone1",
                "reg_type": "input",
                "address": "40001",
                "type": "rel_humidity",
                "format": "s16",
                "scale": 0.1,
                "error_value": "0xE6",
                "group": "air_quality"
            },
            {
                "name": "Temperature zone1",
                "reg_type": "input",
                "address": "40002",
                "type": "rel_temperature",
                "format": "s16",
                "scale": 0.1,
                "error_value": "0x9F",
                "group": "air_quality"
            }
          ]
     }
}

Здравствуйте!
Я бы скорректировал так:

input → holding, чтобы функция чтения была 0x3. Хотя в документации указана 0х30, предполагаю, что это ошибка.

“error_value”: “0x9F” - это значение, при котором данные в регистре считаются некорректными, в инструкции такого не нашел, думаю, не нужно.

если с указанными адресами читаться не будет, то нужно попробовать адреса 0 и 1. У разных производителей бывает по-разному.

		{
            "name": "Humidity zone1",
            "reg_type": "holding",
            "address": "40001",
            "type": "rel_humidity",
            "format": "s16",
            "scale": 0.1,
            "group": "air_quality"
        },
        {
            "name": "Temperature zone1",
            "reg_type": "holding",
            "address": "40002",
            "type": "rel_temperature",
            "format": "s16",
            "scale": 0.1,
            "group": "air_quality"
        }

Также еще для сторонних устройств в шаблоне желательно прописать задержки для точного соответствия стандарту Modbus RTU: Как подключить Modbus RTU-устройство стороннего производителя к контроллеру Wiren Board? — Wiren Board - увидел, что уже сделано

Пример шаблона для стороннего устройства можно найти здесь: https://github.com/wirenboard/wb-mqtt-serial/blob/master/wb-mqtt-serial-templates/config-cityron-pu-3.json

это моя первая попытка что то добавить, я статью читал, но для не програмиста не совсем понятно

подскажите а зачем эта строка?



подскажите что не так? устройство не появилось в списке

root@wirenboard-ARQPLVEX:~# wb-mqtt-serial -g
<3>ERROR: [serial config] File: /etc/wb-mqtt-serial.conf.d/templates/config-CWT- TH03S-H-M Modbus.json error: Validation failed.
Error 1
context: [device][channels][1][type]
desc: Failed to match against any enum values.
Error 2
context: [device][channels][1]
desc: Failed to validate against schema associated with property name ‘type’.
Error 3
context: [device][channels][1]
desc: Failed to validate against child schema #0.
Error 4
context: [device][channels][1]
desc: Failed to validate against child schema #0.
Error 5
context: [device][channels][1]
desc: Missing required property ‘consists_of’.
Error 6
context: [device][channels][1]
desc: Failed to validate against child schema #1.
Error 7
context: [device][channels][1]
desc: Failed to validate against any child schemas allowed by oneOf constraint .
Error 8
context: [device][channels][1]
desc: Failed to validate against child schema #0.
Error 9
context: [device][channels][1]
desc: Failed to validate against child schema #0.
Error 10
context: [device][channels][1]
desc: Missing required property ‘device_type’.
Error 11
context: [device][channels][1]
desc: Failed to validate against child schema #0.
Error 12
context: [device][channels][1]
desc: Missing required property ‘oneOf’.
Error 13
context: [device][channels][1]
desc: Failed to validate against child schema #1.
Error 14
context: [device][channels][1]
desc: Failed to validate against any schemas allowed by anyOf constraint.
Error 15
context: [device][channels][1]
desc: Failed to validate against child schema #1.
Error 16
context: [device][channels][1]
desc: Failed to validate against any child schemas allowed by oneOf constraint .
Error 17
context: [device][channels]
desc: Failed to validate item #1 in array.
Error 18
context: [device]
desc: Failed to validate against schema associated with property name ‘channel s’.
Error 19
context: [device]
desc: Failed to validate against child schema #2.
Error 20
context: [device]
desc: Failed to validate against child schema #0.
Error 21
context: [device]
desc: Failed to validate against any child schemas allowed by oneOf constraint .
Error 22
context:
desc: Failed to validate against schema associated with property name ‘device’

Это нужно испрвить на
"type": "temperature",

Шаблоны могут не сразу появиться в веб-интерфейсе. Они обновляются в фоновом режиме. Подождите немного, затем обновите страницу со сбросом кэша (Ctrl+F5 в Chrome)
Или выполните в консоли контроллера:

wb-mqtt-serial -g && systemctl restart wb-mqtt-serial

А затем также обновите страницу в браузере.

root@wirenboard-ARQPLVEX:~# wb-mqtt-serial -g &&systemctl restart wb-mqtt-serial
<3>ERROR: [serial config] File: /etc/wb-mqtt-serial.conf.d/templates/config-CWT-TH03S-H-M Modbus.json error: Validation failed.
Error 1
context: [device][channels][0][type]
desc: Failed to match against any enum values.
Error 2
context: [device][channels][0]
desc: Failed to validate against schema associated with property name ‘type’.
Error 3
context: [device][channels][0]
desc: Failed to validate against child schema #0.
Error 4
context: [device][channels][0]
desc: Failed to validate against child schema #0.
Error 5
context: [device][channels][0]
desc: Missing required property ‘consists_of’.
Error 6
context: [device][channels][0]
desc: Failed to validate against child schema #1.
Error 7
context: [device][channels][0]
desc: Failed to validate against any child schemas allowed by oneOf constraint.
Error 8
context: [device][channels][0]
desc: Failed to validate against child schema #0.
Error 9
context: [device][channels][0]
desc: Failed to validate against child schema #0.
Error 10
context: [device][channels][0]
desc: Missing required property ‘device_type’.
Error 11
context: [device][channels][0]
desc: Failed to validate against child schema #0.
Error 12
context: [device][channels][0]
desc: Missing required property ‘oneOf’.
Error 13
context: [device][channels][0]
desc: Failed to validate against child schema #1.
Error 14
context: [device][channels][0]
desc: Failed to validate against any schemas allowed by anyOf constraint.
Error 15
context: [device][channels][0]
desc: Failed to validate against child schema #1.
Error 16
context: [device][channels][0]
desc: Failed to validate against any child schemas allowed by oneOf constraint.
Error 17
context: [device][channels]
desc: Failed to validate item #0 in array.
Error 18
context: [device]
desc: Failed to validate against schema associated with property name ‘channels’.
Error 19
context: [device]
desc: Failed to validate against child schema #2.
Error 20
context: [device]
desc: Failed to validate against child schema #0.
Error 21
context: [device]
desc: Failed to validate against any child schemas allowed by oneOf constraint.
Error 22
context:
desc: Failed to validate against schema associated with property name ‘device’.

не получается :sleepy:

Добавил секцию с описанием групп, вот такой файл у меня нормально принимается:
config-CWT- TH03S-H-M Modbus.json (1.1 KB)


ураа что то появилось, буду думать как победить красноту


переделал так


красноту победил вернув скорость опроса 9600, но данных нет почему-то, может поменять адрес на что то другое?

Если каналы отображаются черным, значит устройство отвечает. Предлагаю попробовать еще указать адреса 0 и 1.

Если это не поможет, то попробовать прочитать регистры с помощью утилиты modbus_client на контроллере: Утилита «modbus_client» — Wiren Board и проверить, есть ли ответ от устройства и правильный ли он.

0,1 не работает буду пробывать с утилитой

подключаю на прямую к компу данные идут


подскажите стопбит стоит 1 это критично? может это быть проблемой?

Да, это может быть критичным. Нужно задавать точно такие же параметры обмена, как и на стороннем устройстве.

тогда вопрос, стоп бит меняется только на порте контролера, к этому порту подключены устройства вб, будут ли они работать?

На всех устройствах, подключенных к одному порту RS-485 контроллера должны быть полностью одинаковые настройки обмена: скорость, четность, количество бит данных, количество стоп-бит.