Интересный вариант. А вот такой способ описания в шаблоне применим для 3й версии?:
{
"name": "Status",
"type": "switch",
"reg_type": "input",
"address": "2:0:1", // нулевой бит маски в регистре 2 (регистр включения)
"format": "u16"
}, {
"name": "In progress",
"type": "switch",
"reg_type": "input",
"address": "2:1:1", // первый бит маски в регистре 2 (контроллер занят)
"format": "u16"
}
Обратите внимание на параметр “address”, где указываются через двоеточие сразу регистр:смещение в битах:длина в битах
Таким образом каждый конкретный бит маски можно сразу вывести в нужный топик.
Что же касается бага с самопроизвольным переключением регистра 3 (Power_ON_OFF) разработчики софта для контроллера syberia обещали поправить. Имхо это решение чуть проще. Менее грузит контроллер , а вывести можно фактически любой параметр состояния контроллера сразу в топик, минуя правила.