Работа с контроллером ПВУ Albacore SSM-ALB

Добрый день, пишу шаблон для работы с контроллером ПВУ Albacore. Работает как-то странно, пока не могу понять, в чём дело. Из основных параметров необходимо вкл/выкл, уставка температуры, регулировка скорости вентилятора.

Вкл/выкл не работает вообще, причём два параметра в ошибке. Но при этом modbus_client читаются исправно, наверное я что-то не так в шаблоне написал. (Регистры 14340, 15362, 14341)

Температура (регистр 41984) работает только в формате обратной связи (если менять на пульте, в WB меняется, если менять с WB, через некоторое время возвращается к предыдущей температуре.

А вот вентилятор (регистр 41994) работает исправно в обе стороны.

Для начала, можете подсказать, куда копать в вкл/выкл (три параметра), и температуре?

Прикрепляю документацию и мой шаблон.

РЭ.Ш11.08.25_-_Инструкция_SSM-ALB_(30.10.2025).pdf (1,9 МБ)

config-albacore.json (6,6 КБ)

modbus_client

root@wirenboard-AUIFSOKC:~# modbus_client --debug -mrtu -b9600 -pnone -s1 /dev/ttyRS485-1 -a247 -t0x02 -r14340
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 1)
[F7][02][38][04][00][01][E1][FD]
Waiting for a confirmation…
<02><01><01><53>
SUCCESS: read 1 of elements:
Data: 0x01
root@wirenboard-AUIFSOKC:~# modbus_client --debug -mrtu -b9600 -pnone -s1 /dev/ttyRS485-1 -a247 -t0x02 -r14341
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 1)
[F7][02][38][05][00][01][B0][3D]
Waiting for a confirmation…
<02><01><00><92><00>
SUCCESS: read 1 of elements:
Data: 0x00
root@wirenboard-AUIFSOKC:~# modbus_client --debug -mrtu -b9600 -pnone -s1 /dev/ttyRS485-1 -a247 -t0x01 -r15362
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 1)
[F7][01][3C][02][00][01][44][CC]
Waiting for a confirmation…
<01><01><00><62><00>
SUCCESS: read 1 of elements:
Data: 0x00

В шаблоне

    {
        "id": "start_stop_status",
        "name": "Start_stop status",
        "reg_type": "input",
        "address": 14340,
        "group": "main",
        "type": "switch",
        "readonly": true
      },

В шаблоне

      {
        "id": "start_stop_local_status",
        "name": "Start_stop local status",
        "reg_type": "input",
        "address": 14341,
        "group": "main",
        "type": "switch",
        "readonly": true
      },

То есть используя modbus_client читаете функцией 0x02 а в шаблоне используете input, то есть функцию 0x04.
Советую и в шаблоне использовать тоже Discrete input.
То есть функции должны быть идентичны.

Да, спасибо, забыл про discrete, в документации увидел input, и забыл.

Второй вопрос, почему-то не хочет читаться температура (регистры 40993, 40995). ЧЯДНТ?

Спойлер

root@wirenboard-AUIFSOKC:~# modbus_client --debug -mrtu -b9600 -pnone -s1 /dev/ttyRS485-1 -a247 -t0x04 -r40993
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 1)
[F7][04][A0][21][00][01][57][56]
Waiting for a confirmation…
<84><02><22>
ERROR Illegal data address
ERROR occured!
root@wirenboard-AUIFSOKC:~# modbus_client --debug -mrtu -b9600 -pnone -s1 /dev/ttyRS485-1 -a247 -t0x04 -r40995
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 1)
[F7][04][A0][23][00][01][F6][96]
Waiting for a confirmation…
<84><02><22>
ERROR Illegal data address
ERROR occured!

Ну, тут устройство явно возвращает что такого регистра не существует. Возможно что их обязательно читать парой одним запросом.

Да, чтение двух регистров с -c2 сработало. А в шаблоне как это явно указать? Сейчас вот так:

  {
    "id": "canal_temp",
    "name": "Canal temp",
    "reg_type": "input",
    "address": 40995,
    "group": "main",
    "format": "float",
    "units": "deg C",
    "readonly": true,
  },

Оно и так читается нужное, два регистра.
Надо б уточнить “тот ли это float”.
Драйвер, как описано в документации ожидает IEEE 754.
Но если разработчики имеют свой оригинальный взгляд на тип - тогда надо уточнить, возможно следует поменять порядок байт или слов.