Создание драйвера устройства - нужна помощь

Добрый день. Приехал ко мне комнатный термостат из Китая с rs-485 на борту и решил я его подключить к wirenboard 6. Написал свой шаблон (прикладываю ниже), но при изменении значения топика set temperature новое значение не передается в термостат Подскажите пожалуйста, что делаю не так
ps при работе через modbus client значение корректно изменяется
{
“device_type”: “room thermostat”,
“device”: {
“name”: “root thermostat”,
“id”: “moes”,
“channels”: [
{
“name”: “Temperature”,
“reg_type”: “holding”,
“address”: 1,
“scale”: 0.1,
“type”: “temperature”,
“format”: “s16”
},
{
“name”: “Set Temperature”,
“reg_type”: “holding”,
“address”: 4,
“scale”: 0.1,
“type”: “temperature”,
“format”: “s16”
}
]
}
}

Указываете формат “s16”
То есть

s16	Signed 16-bit integer

из документации:


А в каком виде предаете через modbus_client?

modbus_client --debug -mrtu -pnone -s1 /dev/ttyRS485-1 -a1 -t0x06 -r0x04 0x012c те записываем уставку 30 градусов - все проходит хорошо

Проверил ваш шаблон:
config-termostst.json

// termostat test 12.28
{
    "device_type": "room thermostat",
    "device": {
        "name": "room thermostat",
        "id": "moes",
        "frame_timeout_ms": 0,
        "channels": [
            {
	        "name": "Temperature",
	        "reg_type": "holding",
	        "address": 1,
	        "scale": 0.1,
	        "type": "temperature",
	        "format": "s16"
            },
            {
		"name": "Set Temperature",
		"reg_type": "holding",
		"address": 4,
		"scale": 0.1,
		"type": "temperature",
		"format": "s16"
    	    }
	]
    }
}

В регистр устройства пишет, проврерял так:
менял в веб интерфейсе, останавливал wb-mqtt-serial и читал значение. Ну и Debug в wb-mqtt-serial.

не помогло то что вы написали. При попытке установить температуру на самом термостате, опять показывается старая температура а не которую мы задали уставкой. Сейчас еще раз проверю запись в регистр
upd значение в регистр не записывается, хотя способом указанным выше с отключенным wb-mqtt serial все ок

Включите debug для wb-mqtt-serial и посмотрите команду записи, она такая же:

tail /var/log/messages -f |grep "bd 06"
Dec 29 07:32:55 wirenboard-ACAX3M6K user.notice serial: Write: bd 06 00 04 00 5a 52 cc
Dec 29 07:32:56 wirenboard-ACAX3M6K user.notice serial: Write: bd 06 00 04 00 64 d3 1c
Dec 29 07:32:56 wirenboard-ACAX3M6K user.notice serial: Write: bd 06 00 04 00 6e 53 1b
Dec 29 07:32:56 wirenboard-ACAX3M6K user.notice serial: Write: bd 06 00 04 00 78 d2 d5

как при выполнении команды вручную:

modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a189 -t0x06 -r4 88
Data to write: 0x58
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[BD][06][00][04][00][58][D3][0D]

в обоих случаях 06.
И какя версия wb-mqtt-serial используется?

Каким образом вы отсылаете команду из web-интефейса? У себя я вижу только статичное значение температуры без возможности его изменить. Я изменял значение mqtt топика, в веб-интерфейс его подтягивало, а в регистр устройства не уходило.
И подскажите пожалуйста как посмотреть версию wb-mqtt-serial

upd вопрос решен, не в тот топик слал сообщение, спасибо

А, понял. да, для того чтобы драйвер его передал надо в on отправлять.
Поставьте себе веб-интерфейс версии 2. Он удобней и намного.
https://support.wirenboard.com/t/beta-testirovanie-web-ui-2-0/2079/125?u=brainroot