Добрый день. Приехал ко мне комнатный термостат из Китая с 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