Шлюз OpenTherm-ModBUS BCG-3.0.1-W не отображает отрицательные температуры

Здравствуйте.
Пытаюсь с котла Baxi SLIM через шлюз OpenTherm-ModBUS BCG-3.0.1-W получить значения внешней температуры со встроенного датчика уличной температуры.
Для получения данных из регистра ОТ в файл config-bcg301.json, по аналогии, добавил настройку:
{
“name”: “OT_TempOut”,|
“type”: “temperature”,|
“reg_type”: “input”,|
“address”: 1012,|
“format”: “u16”,|
“scale”: 0.003906,|
“offset”: 0,|
“round_to”: 0.01|
}

Когда температура положительная, то все отображается корректно, когда температура переходит в отрицательное значение отображается например такое значение - 245.98 °C
при температуре на улице – -8,4 С

Совет из этой ветки не помог

Как решить проблему?

Поставьте "format": "s16" вместо "format": "u16"

1 лайк

И не забудьте перезапустить wb-mqtt-serial.

поставил

{
“name”: “OT_TempOut”,
“type”: “temperature”,
“reg_type”: “input”,
“address”: 1012,
“format”: “s16”,
“scale”: 0.003906,
“offset”: 0,
“round_to”: 0.01
}

результат

OT_TempOut 0 °C

результат не обработанного вывода из данного регистра:
root@wirenboard-AJLDR4R4:~# modbus_client --debug -mrtu -b19200 -peven -s1 /dev/ttyRS485-1 -a10 -t0x03 -r0x3F4
Opening /dev/ttyRS485-1 at 19200 bauds (E, 8, 1)
[0A][03][03][F4][00][01][C4][C7]
Waiting for a confirmation…
<0A><03><02><00><5E>
SUCCESS: read 1 of elements:
Data: 0xfb00

сейчас на улице ~ -4,7С

Вы из консоли читаете holding регистр (-t0x03), а в настроках описали его как input. Попробуйте сделать “reg_type”: “holding”

пробовал уже )

результат тот же

Все получилось. Всем спасибо!

Правильные настройки:

{
“name”: “OT_TempOut”,
“type”: “temperature”,
“reg_type”: “holding”,
“address”: 1012,
“format”: “s16”,
“scale”: 0.003906,
“offset”: 0,
“round_to”: 0.01
}