Подробное руководство по подключению котлов Vaillant (электрического eloBLOCK и газового atmoTEC) к Home Assistant через протокол eBUS, демон ebusd и MQTT. Разбираем аппаратную часть, конфигурационные файлы, управление мощностью и автоматизацию отопления.

Кому подойдёт: тем, у кого уже стоит Vaillant eloBLOCK или atmoTEC и есть Home Assistant (или планируется). Пригодятся базовое понимание Docker, MQTT и умение подключать провода по схеме. Весь код и конфиги — в репозитории на GitHub.

Зачем всё это нужно?

Современные котлы Vaillant оснащены цифровой шиной eBUS — проприетарным протоколом Vaillant Group, позволяющим обмениваться данными между котлом, терморегуляторами и внешними системами. По этой шине можно не только читать десятки параметров (температуры, давление, ступени мощности, часы наработки), но и записывать настройки — менять уставки температуры, включать/выключать режимы.

Что даёт интеграция с умным домом:

  • Мониторинг в реальном времени: температура теплоносителя, давление в системе, потребляемая мощность

  • Графики потребления энергии в Home Assistant Energy Dashboard

  • Управление расписанием отопления через автоматизации

  • Ограничение потребляемой мощности при пиковой нагрузке

  • Push-уведомления при ошибках и аварийных ситуациях

  • Экономия на отоплении: ночной нагрев по дешёвому тарифу

Архитектура решения

Компоненты:

Компонент

Назначение

Вариант

eBUS Adapter

Физическое подключение к шине

Shield v5, v5-c6

USR-ES1

Ethernet-модуль для адаптера

Опционально

ebusd

Демон для декодирования eBUS

Docker / Home Assistant addon

MQTT broker

Шина сообщений

Mosquitto

Home Assistant

Умный дом

HAOS / Docker

Аппаратная часть: адаптер eBUS

Выбор адаптера

Рекомендуемый вариант — eBUS Adapter Shield v5 (или v5-c6). Это компактная плата (37×26 мм) с:

  • Полной гальванической изоляцией

  • Нулевым потреблением от шины eBUS

  • Поддержкой WiFi (встроенная антенна), USB, GPIO и Ethernet

  • OTA-обновлением прошивки

💡 Почему v5? В отличие от USB-адаптеров, сетевое подключение (WiFi/Ethernet) устраняет задержки USB-драйверов и джиттер, критичные для синхронизации на eBUS.

Подключение к котлу

Шина eBUS — это два провода, полярность не имеет значения. Подключаться можно в любой точке цепи параллельно другим устройствам (термостатам, модулям расширения).


Модуль USR-ES1 (опционально)

Для подключения Shield v5 по Ethernet используется модуль USR-ES1 (W5500-совместимый). Он снижает задержки по сравнению с WiFi, что особенно важно при нестабильном WiFi-соединени��.

Схема подключения USR-ES1 к Shield v5:

Установка и настройка ebusd

Вариант 1: Docker Compose (рекомендуется)
Полный пример с переменными окружения (адрес адаптера, MQTT, пути к конфигам): docker-compose.yml в репозитории проекта.

Вариант 2: Home Assistant addon (HAOS)
Установка: Supervisor → Add-on Store → репозиторий LukasGrebe/ha-addons.
Пример конфигурации addon: ebusd.txt.

Конфигурационные файлы ebusd

После запуска ebusd автоматически скачивает конфигурации с CDN. Но для кастомных котлов (eloBLOCK, atmoTEC определённых версий прошивки) нужны свои .inc файлы.

Структура конфигов: в 08.bai.csv задаётся маршрутизация по PROD/HW (какой .inc грузить); наши файлы — bai.0010023658.inc (eloBLOCK) и bai.0010015251.inc (atmoTEC). Полное дерево и описание — в репозитории.

Конфигурационные файлы: как это работает

Формат CSV-файлов ebusd

Каждая строка в .inc описывает один регистр: тип доступа, имя, адрес (ID), тип данных и т.д. Пример строки: r,,FlowTemp,d.40,,,,1800,,,tempsensor,,,flow temperature — чтение (r), имя в MQTT FlowTemp, адрес 1800, тип tempsensor. Полный формат полей и примеры — в файлах bai.0010023658.inc и bai.0010015251.inc в репозитории.

Типы доступа:

Префикс

Значение

r

Только чтение

r;w

Чтение и запись

r;wi

Чтение + запись (install level)

r;ws

Чтение + запись (service level)

r1

Приоритетное чтение (poll priority 1)

Файл маршрутизации 08.bai.csv: по коду PROD (или HW при fallback) подгружается нужный .inc. Примеры строк — в 08.bai.csv в репозитории.

Котёл Vaillant eloBLOCK: электрические особенности

Модель: VE 14/18 кВт (PROD=0010023658, SW0109, HW7503)

eloBLOCK — это электрический котёл без газового тракта, вентилятора и CO-датчика. Поэтому в конфигурационном файле закомментированы все газоспецифичные параметры.

Специфические параметры электрического котла

⚠️ Результаты живых тестов (2026-03-02, PROD=0010023658 VE14, SW=0109): параметры d.104–d.108 (MaxPower, TotalEnergy, ElementHours, CurrentPower) недоступны через стандартный eBUS-опрос на SW=0109. HeatingStage2 (EE01) отсутствует на VE14 (двухэлементная конфигурация: stage1 + stage3).

Описание параметров eloBLOCK (ступени нагрева ED01/EF01, PartloadHwcKW A900, закомментированные d.104–d.108) — в bai.0010023658.inc.

Таблица параметров eloBLOCK по уровням диагностики

Параметр

Адрес

Тип

Описание

Статус

PartloadHcKW

6C00

power

Частичная нагрузка CH

✅ Работает

PartloadHwcKW

A900

UCH

Лимит нагрузки ГВС

✅ Подтверждено (live test + community)

FlowTemp

1800

tempsensor

Температура подачи

✅ Работает

WP

4400

onoff

Насос отопления

✅ Работает

HeatingDemand

4000

yesno

Запрос тепла

✅ Работает

HeatingStage1

ED01

onoff

Ступень нагрева 1

✅ Работает (r1)

HeatingStage2

EE01

onoff

Ступень нагрева 2

❌ Отсутствует на VE14

HeatingStage3

EF01

onoff

Ступень нагрева 3

✅ Работает (r1)

ActiveStages

F001

UCH

Активные ступени

⚠️ Постоянно 0xC0=192, значение не расшифровано

OverTempStatus

D501

temp

Порог защиты от перегрева

⚠️ Только пассивный захват; в HA делить на 10

MaxPower

A201

UCH

Макс. мощность

❌ Недоступно на SW=0109

TotalEnergy

B301

ULG

Суммарная энергия

❌ Недоступно на SW=0109

ElementHours

C401

hoursum2

Часы ТЭНов

❌ Недоступно на SW=0109

CurrentPower

E601

Текущая мощность

❌ Недоступно на SW=0109

EBusHeatcontrol

0004

Цифровой регулятор

❌ Не применимо

VortexFlowSensor

D500

Вихревой расходомер

❌ Не применимо

Котёл Vaillant atmoTEC plus: газовые особенности

Модель: VUW (PROD=0010015251, SW0407, HW0903)

atmoTEC plus — атмосферный газовый котёл. Несмотря на название «plus», в данной версии прошивки (SW0407/HW0903) отсутствует CO-датчик (atmoGuard). Поэтому все параметры группы e.04–e.19 (SMGV, CO-концентрация, калибровка горелки) недоступны на этой версии прошивки и закомментированы.

Ключевые параметры atmoTEC (температуры, горелка, ГВС, диагностика) и их адреса — в bai.0010015251.inc.

Параметры, недоступные на SW0407

Все ошибки типа ERR: invalid position в ebusd_atmoTEC.log относятся к:

  • CO-сенсорным параметрам (e.04–e.19) — только для atmoTEC PLUS

  • Калибровочным параметрам (TTM_*, TTL_*, TTH_*) — добавлены в более новых версиях SW

  • Предиктивным параметрам для вентилятора (Pred_FanPWM_*) — SW0407 не поддерживает

MQTT и интеграция с Home Assistant

MQTT Discovery

Файл mqtt-hassio.cfg автоматически создаёт сущности в HA через механизм MQTT Discovery. После запуска ebusd в Home Assistant появятся устройства с параметрами котла.

Ключевые настройки: filter-seen = 5, filter-direction = r|u|^w, filter-level = ^$. Полный файл — mqtt-hassio.cfg в репозитории.

Топики вида ebusd/bai/FlowTemp, ebusd/bai/HeatingDemand, ebusd/bai/HeatingSwitch/set и т.д. — ebusd публикует значения и принимает команды записи по MQTT Discovery.

Примеры карточек Lovelace и настройка Energy Dashboard (device_class: energy, state_class: total_increasing для счётчика) — в репозитории (README, конфиги и примеры).

Управление мощностью через сухой контакт + ESPHome

Принцип работы

eloBLOCK имеет су��ой контакт (ESCO/X2, клеммы котла) для ограничения мощности. Принцип: разомкнутый контакт — полная мощность, замкнутый — ограничение активно (S.174 Energy saving). Согласно мануалу Vaillant 0020265768_01, стр. 10 и 19.

⚠️ При ограничении «по всем фазам» на котле 18 кВт шаг кратен 6 кВт (6/12/18 кВт).

Схема подключения ESP-01S

Подключаем NO + COM. При отключении питания ESP реле обесточивается → NO разомкнут → котёл на полной мощности (безопасный default).

Логика работы:

Состояние реле

NO-COM

Мощность котла

Выключено (ESP недоступен, default)

Разомкнуто

Полная

Включено (команда из HA: limit)

Замкнуто

Снижена на D.153 кВт ⚡

Конфигурация ESPHome для реле (ESP-01S, GPIO0, NO+COM): vaillant_power.yaml. Пример автоматизации в Home Assistant (триггер по мощности стиральной машины, включение ограничения на 30 минут) — в репозитории проекта (README и примеры).

Автоматизация отопления

Термостаты и актуаторы

Рекомендуемая схема для зонального отопления:

Термостаты подключаются к контроллеру пола (Beok CCT-10). Контроллер управляет гребенкой: головками (клапанами), насосом и запросом тепла у котла (сухой контакт OR). Гребенка содержит головки, насос и байпас.

Важно: У котлов Vaillant нет байпаса. Хотя бы один радиатор должен быть открыт, пока работает котёл. Достигается программной калибровкой термостатических головок.

Рекомендуемый Blueprint для расписания и присутствия: Advanced Heating Control (panhans).

Логика:

  • Ночной нагрев по льготному тарифу (ночная зона)

  • Присутствие людей дома → активное отопление

  • Отсутствие людей → режим экономии

  • Тёплый пол отключается раньше радиаторов

Каскадное подключение котлов

При каскадировании двух eloBLOCK есть ограничения:

⚠️ Сухие контакты нельзя соединять параллельно — иначе ограничение применится к обоим котлам. Каждый котёл — отдельный адаптер, отдельный контейнер ebusd, отдельное реле.

Пример двух сервисов ebusd с разными EBUSD_DEVICE и EBUSD_MQTTTOPIC: docker-compose.yml (в репозитории можно расширить под второй котёл по аналогии).

Диагностика ошибок

ERR: invalid position

Самая частая ошибка в логах ebusd. Возникает когда:

  • Регистр существует в конфиге, но физически отсутствует на данной версии котла/прошивки

  • Котёл возвращает 00 (1 байт) вместо ожидаемых нескольких байт

Решение: закомментировать проблемный параметр в .inc файле. Смотрите готовые комментарии в файлах проекта.

ERR: argument value out of valid range

Возникает для параметра DCFTimeDate когда к котлу не подключена DCF-антенна. Не критично — просто нет синхронизации времени по радиосигналу.

SetModeOverride — управление котлом как термостат

Параметр SetModeOverride позволяет управлять котлом через eBUS как будто подключён термостат — без внешнего железа. Подтверждено на 0010023657 (SW=0109) пользователем @stalniy.

⚠️ Важно: команду нужно отправлять каждые ~60 секунд. Котёл возвращается к настройкам дисплея если не получает обновление.

Примеры: включить отопление — ebusctl w -c bai SetModeOverride "1;55;45;-;-;0;0;0;-;0;0;0" (hcmode=1, flowtemp=55°C); выключить — hcmode=0 в том же формате. Полный набор команд ebusctl — в документации ebusd и в репозитории проекта.

Полезные команды ebusctl: ebusctl i — список устройств; ebusctl read bai FlowTemp — чтение параметра; ebusctl write bai HeatingSwitch on — запись; ebusctl find -r | grep ERR — параметры с ошибками; ebusctl hex b509 0d E601 — сырой запрос для проверки адреса. Логи: docker logs -f ebusd, фильтр ошибок — grep "ERR:". Подробнее — в wiki ebusd.

Итоги и планы

Что получилось

Работает стабильно (подтверждено живыми тестами 2026-03-02):

  • Мониторинг 30+ параметров eloBLOCK в Home Assistant

  • Управление режимами отопления (HeatingSwitch, HwcSwitch)

  • Ступени нагрева: HeatingStage1 (ED01) и HeatingStage3 (EF01) — r1 опрос

  • Лимит нагрузки ГВС: PartloadHwcKW (A900) — адрес подтверждён сообществом и тестом

  • Управление мощностью через ESP-01S реле (NO+COM)

  • SetModeOverride — эмуляция термостата через eBUS (без внешнего железа)

⚠️ Требует уточнения / помощи сообщества:

  • Адреса eBUS для D.152 (фаза) и D.153 (уровень ограничения) — не найдены нигде. Метод: ebusctl grab result all до и после смены D.152 на дисплее котла

  • ActiveStages (F001) — постоянно 0xC0=192 на VE14; значение не расшифровано

  • OverTempStatus (D501) — пассивный захват, масштаб ×10 (raw 1702 = 85.1°C)

Недоступно на SW=0109 (подтверждено живым тестом):

  • MaxPower (A201), TotalEnergy (B301), ElementHours (C401), CurrentPower (E601) — нет ответа на стандартный r/r1 опрос

  • HeatingStage2 (EE01) — отсутствует на VE14 (двухэлементная конфигурация)

  • Параметры CO-датчика (atmoTEC plus без atmoGuard на SW0407)

  • Предиктивная аналитика вентилятора и CO-сенсора (SW0407)

  • VortexFlowSensor на eloBLOCK HW7503

Находки из официального мануала Vaillant (0020265768_01)

В ходе исследования был обнаружен официальный мануал по монтажу и обслуживанию eloBLOCK (ManualsLib, 32 стр.), содержащий полную таблицу диагностических кодов D.xxx:

Код

Параметр

Описание

D.149

Детализация ошибки F.075

0=OK, 1=насос заблокирован, 2=эл. неисправность, 3=сухой ход, 4=низкое напряжение, 5=датчик давления, 6=нет PWM

D.152

Фаза ограничения мощности

0=нет, 1=фаза1, 2=фаза2, 3=фаза3, 4=все фазы — записываемый!

D.153

Уровень ограничения (кВт)

Вычитается из текущей мощности — записываемый!

D.154

Защита от замерзания

Активация/деактивация

D.155

Текущая мощность (дисплей)

Непрерывно обновляется

D.093

Вариант устройства

0-7 = 6/9/12/14/18/21/24/28 кВт (насос HE); 8-15 = те же с 2-ступ. насосом

Критическая находка: параметры D.152 и D.153 — это программный аналог физического сухого контакта! Если удастся определить их eBUS-адреса, управление мощностью котла станет полностью программным, без ESP-01S и реле. Метод поиска: ebusctl grab result all до и после изменения D.152 на дисплее котла.

Куда двигаться дальше

  1. Найти eBUS-адреса D.152/D.153 — метод: ebusctl grab result all до и после изменения параметра на дисплее котла. Это откроет возможность software power limiting

  2. Помочь с параметрами — если у вас eloBLOCK или atmoTEC, поделитесь значениями неизвестных регистров через Issues

  3. Миграция на TypeSpec — ebusd v24+ поддерживает новый формат конфигов .tsp

  4. Добавить hcmode — управление режимами отопительного контура через B511 протокол

Полезные ссылки

Приложение: схема регистров eloBLOCK

Сводная таблица регистров по группам (d.00–d.47, d.60–d.96, d.100–d.108, D.149–D.155) с адресами eBUS и статусом по живым тестам — в файле bai.0010023658.inc и в комментариях к нему в репозитории.

Статья написана на основе личного опыта эксплуатации Vaillant eloBLOCK VE18 и atmoTEC plus. Обратная связь и pull requests приветствуются: репозиторий проекта.