Шаблон WBE2-I-EBUS обнуляет уставку отопления при каждом рестарте

Привет, столкнулся с неприятной штукой и думаю, это баг в шаблоне.

Подключил WBE2-I-EBUS к котлу, всё настроил, выставил уставку отопления, котёл греет — вроде красота. Но после перезагрузки контроллера обнаружил, что котёл стоит холодный. Полез смотреть — а в веб-интерфейсе «Уставка отопления = 0». Каждый раз после ребута приходится заходить и руками выставлять заново. Уставка ГВС при этом нормально сохраняется, проблема только с отоплением.

Покопался в шаблоне /usr/share/wb-mqtt-serial/templates/config-wbe2-i-ebus.json и нашёл вот это в секции setup:

{
    "title": "disable direct heating control",
    "address": 203,
    "reg_type": "holding",
    "value": 0
}

Тут нет condition, то есть этот блок выполняется всегда при старте драйвера. А регистр 203 в этом же шаблоне ниже описан как канал «Heating Setpoint» (уставка отопления, диапазон 0–85). Получается, шаблон сам себе вредит — даёт пользователю задать уставку, и сам же её сбрасывает в 0 при каждой перезагрузке.

Воспроизводится элементарно:

  1. Выставить уставку отопления, например 55

  2. systemctl restart wb-mqtt-serial

  3. Уставка = 0, котёл не греет

У меня версия wb-mqtt-serial — 2.224.0-wb103, прошивка модуля 1.41.

Локально я для себя проблему решил — скопировал шаблон в /etc/wb-mqtt-serial.conf.d/templates/ и убрал этот блок целиком. Остальные три setup-блока трогать не стал, у них нормальные condition по heating_options, они в нужных режимах конфигурируют 205-й и 208-й регистры — это явно осмысленно. А вот первый блок без condition выглядит как либо забытая отладка, либо где-то condition потеряли при правках.

Может, я чего-то не понимаю и так задумано — но тогда непонятно, зачем вообще делать «Heating Setpoint» записываемым каналом, если он всё равно сбросится при следующем рестарте.

Если действительно баг — поправьте пожалуйста в следующем релизе. Если фича — расскажите логику, интересно.

Здравствуйте! Я автоматический помощник техподдержки Wiren Board. Сейчас выходной — я попробую помочь сразу, а в ближайший рабочий день инженеры посмотрят тему и ответят.
Я проанализировал ваш вопрос и постарался найти возможное решение:
Если потребуется дополнительное уточнение, приложенную информацию прошу направить нажав ответить на мое крайнее сообщение.


По описанию и по приведённому фрагменту шаблона это действительно выглядит как некорректное поведение:

{
    "title": "disable direct heating control",
    "address": 203,
    "reg_type": "holding",
    "value": 0
}
  • Контроллер: Wiren Board (судя по версии wb-mqtt-serial 2.224.0-wb103).
  • Модуль: WBE2-I-EBUS.
  • Шаблон: /usr/share/wb-mqtt-serial/templates/config-wbe2-i-ebus.json.

В текущей логике wb-mqtt-serial блоки setup выполняются при каждом старте драйвера и используются для инициализации устройства в некое «базовое» состояние[1]. Если в setup нет condition, команда уходит всегда при рестарте сервиса, что в вашем случае обнуляет регистр 203, который далее в том же шаблоне описан как Heating Setpoint.

То, что:

  • Уставка ГВС (другие регистры) корректно сохраняются.
  • Остальные setup для 205 и 208 регистров завязаны на heating_options и выполняются только при определённых условиях.
  • А именно 203-й регистр жёстко пишется в 0 без условия,

очень похоже именно на ошибку в шаблоне (либо потерянный condition, либо неверно выбран адрес, если «disable direct heating control» предполагался в другом регистре).

Вы сделали ровно то же, что мы бы сейчас рекомендовали как временное решение:

  1. Скопировать шаблон:
    mkdir -p /etc/wb-mqtt-serial.conf.d/templates/
    cp /usr/share/wb-mqtt-serial/templates/config-wbe2-i-ebus.json \
       /etc/wb-mqtt-serial.conf.d/templates/
    
  2. В локальной копии удалить или закомментировать проблемный setup‑блок с address: 203.
  3. Убедиться, что в основном конфиге wb-mqtt-serial модуль WBE2-I-EBUS ссылается уже на этот (переопределённый) шаблон, если менялось имя файла.
  4. Перезапустить:
    systemctl restart wb-mqtt-serial
    

Это корректный и безопасный обходной путь, пока правка не попадёт в пакет.

Со стороны разработчиков логично будет:

  • либо убрать этот setup вообще,
  • либо добавить ему condition, привязав к режиму, в котором действительно нужно принудительно выключать «direct heating control», и при этом не использовать регистр 203 как пользовательскую уставку, если он в этой логике служит чем‑то иным.

Ваше замечание и тест-кейс хорошо оформлены и пригодны для заведения бага в шаблоне config-wbe2-i-ebus.json. Инженеры в рабочий день:

  • сверят поведение с текущей версией шаблона и прошивками WBE2-I-EBUS,
  • уточнят, задумывалось ли это как особый режим (и тогда опишут логику), либо подтвердят баг и внесут правку в следующий релиз wb-mqtt-serial.

Если несложно, дополнительно приложите в ответ:

  1. Файл вашего текущего конфига wb-mqtt-serial (хотя бы фрагмент с устройством eBUS):
    cat /etc/wb-mqtt-serial.conf
    
    или соответствующий *.conf из /etc/wb-mqtt-serial.conf.d/.
  2. Вывод:
    dpkg -l | grep wb-mqtt-serial
    dpkg -l | grep wbe2-i-ebus
    
    — чтобы инженеры видели точные версии пакетов.

Это поможет быстрее зафиксировать и исправить проблему в официальных пакетах.


Примечание: Я — искусственный интеллект, а не сотрудник-человек. В моих ответах возможны неточности.


  1. Общий принцип работы wb-mqtt-serial с шаблонами и секцией setup: https://wirenboard.com/wiki/Wb-mqtt-serial ↩︎

Добрый день,
Удалось ли решить вопрос?

Да, вопрос решен, но лучше исправить шаблон в будущих версиях.