Делаем котел отопления умным с Home Assistant и Node Red
У нас в доме стоит старенький электрокотёл, который верой и правдой отапливал дом еще с незапамятных времен. Котёл добротный – шесть трубчатых электронагревателей (ТЭНов) под чугунным боком, никаких тебе «умных» функций, только автоматы, с помощью которых включаются и отключаются тены. Конечно, ни о каком расписании или удаленном управлении речи не шло: либо включен и жарит на полную, либо ты мёрзнешь, если забыл вовремя щелкнуть выключателем. Хотелось комфорта и контроля – чтобы котёл сам поддерживал температуру, не сжигал лишнего электричества и, желательно, подружился с современными технологиями.
Старый динозавр в ожидании апгрейда: цилиндрический бак электрокотла с шестью ТЭНами (под 3 тена с каждой стороны). Видно, что возраст и ржавчина берут своё, но мы всё равно попытаемся сделать его умным.
Решено – будем модернизировать дедушку-котёл! План такой: оснастить каждый из шести ТЭНов отдельным умным реле с датчиком, подключить их к Home Assistant, а логику управления запрограммировать в Node-RED. Звучит просто… в теории. Как это реализовывалось на практике – делюсь опытом, со всеми успехами, граблями и лайфхаками.
Оборудование
Для модернизации пригодились следующие компоненты:
Электрокотёл – непосредственно отопительный котёл советского закала. Шесть нагревательных элементов суммарной мощностью около 18–20 кВт, подключенных по схеме звезды на три фазы (по двум ТЭН на фазу).
Реле Sonoff PWR320D – умные Wi-Fi реле на DIN-рейку с током до 20 А (каждый спокойно тянет один 4-кВт ТЭН). У них есть встроенный мониторинг потребляемой мощности и небольшой экран. Таких понадобилось 6 штук – по одному на каждый ТЭН, чтобы иметь возможность управлять нагревателями индивидуально.
Реле Sonoff THR320D Elite – умное Wi-Fi реле на DIN-рейку с током до 20 А и контролем температуры - потребуется собственно для контроля температуры и включения/выключения насоса отопления.
Home Assistant – мозг умного дома (развернут на Proxmox VE на отдельной виртуальной машине в инсталляции HassOS). Через него реле Sonoff интегрируются в систему, и с его помощью можно получать показания и отправлять команды на наши нагреватели.
Node-RED – визуальный редактор автоматизаций, установлен как дополнение к Home Assistant. В нем реализована логика работы котла: когда и сколько ТЭНов включать, исходя из температуры и прочих условий.
Датчик температуры Sonoff DS18B20 – цифровой термометр, прикрепленный к трубе выхода горячей воды из котла. Он следит за температурой воды/теплоносителя, чтобы Node-RED знал, когда нагревать, а когда притормозить. Сам датчик подключен к Sonoff THR320D Elite.
Удлинитель датчика температуры Sonoff DS18B20 на 5 метров – потребовался, чтобы дотянуть датчик до котла.
Конечно, помимо этого потребовались всевозможные мелочи: монтажный шкаф и DIN-рейка, автоматические выключатели на каждую линию, провода, изолента, термоусадка – все для безопасной установки электроники в щиток.
Подключение реле к Home Assistant
Начал модернизацию с самого очевидного: установка умных реле на котёл. Каждое реле Sonoff PWR320D разместил в электрощите рядом с автоматами. Подключение по электронике вышло относительно прямым: каждый тен отсоединил от старой схемы и завел через контакты своего Sonoff (фаза через реле, ноль общий). Таким образом, любое реле может включить или выключить питание конкретного нагревательного элемента. Шесть элементов – шесть независимых каналов нагрева. Перед окончательной сборкой проверил, что токи и сечения проводов соответствуют мощностям: ~4,5 кВт на ТЭН (~10 А) – реле рассчитаны на 20 А (кратковременно до 25 А), так что запас есть. Главное – затянуть винты клемм покрепче, чтобы ничего не грелось.
Далее – интеграция в Home Assistant. Реле Sonoff подключаются к домашней Wi-Fi сети и через облако eWeLink могут управляться со смартфона. Но мне нужен локальный и более гибкий контроль, поэтому я добавил их напрямую в Home Assistant.
Вариантов несколько: можно прошить альтернативную прошивку (Tasmota/ESPHome) или использовать готовый интеграционный компонент Sonoff LAN. Я пошёл по простому пути – использовал компонент, который позволил привязать реле в Home Assistant без танцев с бубном.
После нехитрых манипуляций все шесть устройств появились в системе: каждому присвоилось по сущности типа switch (переключатель) и набор датчиков (мгновенная мощность, напряжение, ток и счётчик кВтч). Естественно, сразу переименовал их в осмысленные названия – чтобы не потеряться в куче одинаковых «Sonoff Switch». Маркером подписал номера и на самих модулях в щитке, как видно на фото, для наглядности: куда какой провод идет.
Очень важно - реле ставятся обязательно ПОСЛЕ автоматов, без автоматов их ставить категорически запрещено!
Когда подключил первые пару модулей и убедился, что Home Assistant их видит и управляет без проблем, произвёл окончательный монтаж всех шести. Получилась вот такая картина:


Итоговая компоновка: 6 штук Sonoff PWR320D (помечены номерами 16–21) плотно обосновались на DIN-рейке. Номером 27 помечено реле Sonoff THR320D Elite, измеряющее температуру котла. Цифрами 10-15 помечены автоматы, защищающие тены котла.
Важный нюанс – датчик температуры. Поскольку изначально никакого электронного термометра в котле не было, пришлось исхитриться. Я использовал популярный герметичный цифровой датчик DS18B20. Но как его присобачить к старому баку, не врезая новых гильз? Решение народное: примотать датчик снаружи к трубопроводу как можно ближе к выходу котла, утеплив место замера. Немного вспененного полиэтилена, сверху чёрная изолента – и вот уже импровизированный термоколодец готов. Да, точность хуже, чем погружного датчика (показывает чуть ниже реальной температуры воды), зато установка без разгерметизации системы.
Тот самый датчик DS18B20, примотанный к патрубку котла. Под слоем изоленты и фольгированного утеплителя прячется маленький металлический цилиндрик – датчик температуры. Способ колхозный, зато работает: Node-RED получает примерно правильную температуру.
На этом железная часть закончена: котёл физически подключен к «умному» управлению. Теперь самое интересное – научить его работать автоматически по заданным правилам.
Node-RED и с чем его едят
Простейший способ управлять отоплением – использовать штатные автоматизации Home Assistant (например, интеграцию generic_thermostat). Но в нашем случае шесть нагревателей – система посложнее банального включения-выключения. Хотелось реализовать нечто более умное: например, при небольшом отклонении температуры включать не все сразу, а пару ТЭНов, чтобы не гонять котёл на полную, или поочередно задействовать разные элементы, чтобы ресурсы фаз расходовались равномерно. Для таких экспериментов идеально подошёл Node-RED – графический редактор сценариев, где можно накидать любые логические цепочки.
В Node-RED я создал отдельный поток автоматизации для котла. Общая логика: следить за температурой воды и помещений в доме и поддерживать её в диапазоне, включая нужное число ТЭНов. Общая схема реализованной автоматизации ниже.
Настройка Node-Red
Мы реализуем логику через поток Node-RED, состоящий из нескольких узлов (nodes).
Узел (node) в Node-RED — это блок, который выполняет конкретное действие.
Можно сказать, что узлы — это "кирпичики", из которых строится вся логика потока.
Каждый узел имеет:
свою функцию (например, получить данные, сделать проверку, отправить команду),
входы (куда приходят сообщения),
выходы (куда узел отправляет обработанные сообщения).
Ниже таблица с используемыми в нашей автоматизации типов узлов (@SupportTech, а таблицы когда будут?)
Если описывать получившуюся картину крупными мазками - наша автоматизация делится на дневную и ночную, поскольку у нас двухтарифный счетчик отопления, и отопление работает в основном ночью (с 23.00 до 07.00)
Ночная ветка управления отоплением
Что происходит:
Каждые 5 минут происходит запуск проверки условий через inject-узел.
Проверяются следующие параметры:
Время суток (должна быть ночь — с 23:00 до 07:00).
Температура котла.
Температура в спальне.
Температура на кухне.
Подробно по шагам:
1. Проверка времени суток
Узел Time Range Switch — определяет, сейчас ночь или день.
Если ночь — запускается ночная логика (эта ветка).
2. Проверка температуры котла и помещений
Узел Current State — получаем температуру котла.
Если температура в спальне ≤ 25 °C и на кухне < 27 °C, запускается нагрев.
Иначе ничего не делаем.
3. Проверка активной сессии
Узел Function — если переменная heating_active == "true", значит уже идёт нагрев, повторно запускать не нужно.
Функция используется следующая:
if (flow.get("heating_active") === "true") {
// Уже запущено, пропускаем
return null;
}
return msg;
4. Какой нагрев запускать?
Используем узел Switch — по текущей температуре котла:
Если ≤ 31 °C → включается группа 3.5 кВт ТЭНов.
Если между 31 °C и 60 °C → включается группа 2.7 кВт ТЭНов.
Если нет данных — отправляется уведомление в Telegram, и включается минимальная мощность.
5. Включение ТЭНов
Сначала выключаются все ТЭНы (на всякий случай, чтобы исключить наложение сценариев). Используем узел call service, вызываем сервис switch.turn_off
Затем с небольшой задержкой (5-10 секунд) ТЭНы включаются один за другим:
Для группы 3.5 кВт: три ТЭНа, фаза A → фаза B → фаза C.
Для группы 2.7 кВт: три ТЭНа, фаза A → фаза B → фаза C.
После каждого включения ТЭНа проверяется его статус (узел current state) — если включение не произошло, повторяем попытку.
6. Завершение
После успешного старта всех нужных ТЭНов устанавливается переменная heating_active = true. (узел change)
Это защищает систему от повторного включения без необходимости.
Дневная ветка управления отоплением
Что происходит:
Каждые 5 минут происходит запуск проверки условий через inject-узел.
Проверяются:
Время суток (должен быть день — с 07:00 до 23:00).
Температура котла.
Температура в спальне.
Подробно по шагам:
1. Проверка времени суток
Узел Time Range Switch — определяет, что сейчас не ночь, а значит — день.
2. Проверка температуры котла
Узел Current State — измеряется температура котла.
Если температура котла < 60 °C — переходим к дальнейшей проверке мощности и температуры внутри помещений.
Иначе ничего не делаем.
3. Проверка мощности котла
Узел Current State — анализируется текущая мощность.
Если мощность котла меньше 11 500 Вт — допустимо включить нагрев.
Если мощность превышена — отопление не запускается.
4. Проверка температуры в спальне
Узел Current State — замер температуры в спальне.
Если температура ≤ 24.5 °C — начинаем дневную сессию нагрева.
5. Защита от повторного старта
Узел Function — проверяем переменную heating_active. Функция та же, что и в ночном режиме.
Если она уже установлена в "true" — отопление уже активно, повторный старт блокируется.
6. Последовательность действий
Узел Change — устанавливаем переменную heating_active = true.
Далее система:
Выключает все ТЭНы.
Выдерживает паузу (5 секунд).
Включает один ТЭН мощностью 2.7 кВт на фазе B.
В дневное время включается минимально возможная нагрузка, чтобы лишь слегка подогревать систему при необходимости.
7. Завершение
После включения ТЭНа больше действий нет.
Автоматическое отключение будет происходить через общую проверку условий (отдельная ветка контроля выключений).
Условия отключения отопления
Когда выполняется проверка:
Каждые 60 секунд через inject-узел.
А также в фиксированное время (ежедневно в 07:00 и в 23:00) через отдельные inject.
Что именно проверяется:
Температура котла
Если котёл нагрелся выше 60 °C, значит отопление нужно остановить, чтобы не перегреть систему.
Мощность котла
Если текущая суммарная мощность выше 11 500 Вт, это признак перегрузки.
Система должна срочно отключить лишние ТЭНы, чтобы избежать перегрева или срабатывания автоматов.
Температура на кухне
Если на кухне температура превысила 27 °C — отопление останавливается как ненужное.
Температура в спальне
Если температура в спальне превысила 25.3 °C — отключаем нагрев, чтобы не перегреть комнату.
Температура в кабинете
Если в кабинете температура поднялась выше 26.5 °C — тоже выключаем обогрев.
Что происходит при выполнении любого условия:
Узел Action node api-call-service:
Все шесть ТЭНов отключаются командой switch.turn_off.
После выключения всех ТЭНов:
Через delay (10 секунд) устанавливается переменная heating_active = false.
Это нужно для того, чтобы следующая попытка включения могла начаться только если отопление действительно отключено и не конфликтовало с уже работающей сессией.
Специальные выключения по расписанию:
07:00 каждый день — выключение всех ТЭНов в начале дня перед началом дневного режима.
23:00 каждый день — выключение всех ТЭНов перед началом ночного режима.
Ручное выключение — можно отправить сигнал вручную через отдельный inject-узел.
Краткая суть:
Любое превышение температурных или мощностных порогов → полное отключение всех ТЭНов и остановка активной сессии нагрева.
После настройки всех узлов и дебага (о котором ниже) мне удалось добиться желаемого: котёл сам включается и отключается по заданному алгоритму. На панели Home Assistant я вижу текущую температуру и статус каждого из шести ТЭНов, а при желании могу вручную вмешаться – например, принудительно выключить некоторые, если нужно ограничить потребление, или наоборот, включить все, если вдруг резко похолодало.
Проблемы и грабли
Не всё шло гладко с первого раза. Поделюсь парочкой моментов, где пришлось попрыгать через грабли (и посмеяться потом):
Ребалансировка фаз – не взлетела. Идея звучала круто: чтобы электроэнергия расходовалась равномерно по фазам, я задумал поочередно менять, какие ТЭНы включаются первым делом. Мол, в одном цикле греть фазой A, в следующем – фазой B и так далее, чтобы суммарно каждая фаза нагружалась одинаково. Node-RED я даже настроил что-то вроде кругового выбора: если надо включить только 1–2 нагревателя, он чередовал их между разными фазами. На практике же эта затея скорее усложнила сценарий, чем принесла пользу. Котёл-то в любом случае потребляет немало, и при длительной работе выравнивание получилось чисто символическим. Зато усложненный код начал временами чудить: то забывал включить какой-то элемент, то наоборот забывал вовремя выключить. В итоге, после пары холодных утра и тёплых ночей (когда автоматизация решила «передохнуть»), я убрал эту фичу и оставил логику попроще. Как говорится, не пытайтесь оптимизировать то, что и так работает – и всё будет хорошо. 🙂
Отладка и внезапные баги. Писать логические цепочки на Node-RED было увлекательно, но первый блин вышел комом. Например, я создал цикл, в котором одна часть потока включала нагрев, а другая сразу его выключала из-за неправильно установленного условия гистерезиса. В результате котёл начал моргать: щёлкал реле туда-сюда каждую секунду, устроив настоящую светомузыку в щитке! Хорошо, вовремя заметил в логах аномалию (да и по звуку реле догадался) – быстренько исправил логику, введя задержки и скорректировав условия. Ещё один раз ошибся с именами сущностей в Home Assistant – Node-RED просто не смог включить отопление утром, потому что искал несуществующее имя устройства. Проснулся я в холодной комнате и понял, что умному дому тоже нужны проверки – после того случая добавил оповещение: если температура падает ниже критической и ничего не включилось, система шлёт мне тревожное уведомление. Теперь я сплю спокойно (и в тепле).
Конечно, были и мелочи: набивал шишки с настройками Node-RED Dashboard (планировал красивую панельку управления котлом – сделал, но потом понял, что ей почти не пользуюсь), долго возился с калибровкой датчика (пару градусов сдвига компенсировал в настройках), разбирался, как построить график потребления электроэнергии этими ТЭНами. Но то уже будни домашней автоматизации – не столько проблемы, сколько рабочие моменты, зато сейчас можно друзьям показывать графики и хвастаться, как “ИИ управляет котельной” 😉.
Выводы
Стоила ли игра свеч? Определенно, да – по крайней мере для такого любителя технологий, как я. Теперь у меня котёл не просто древний металлический бак, а часть умного дома: сам поддерживает комфортную температуру, я могу наблюдать за его работой из любого места (красота – лежишь вечером на диване, смотришь в телефон: температура воды 48°C, потребляемая мощность 5 кВт, – и никакого беготни в подвал!). Можно настроить расписание по времени или удаленно выключить котёл, если уехал на выходные. К тому же, я получил ценнейший опыт в Home Assistant и Node-RED, разобрался глубже в электрической части своего дома.
С точки зрения экономии денег – вопрос спорный. Сами по себе реле, датчики, контроллеры стоят денег и окупятся не сразу. Но определенная оптимизация получилась: котёл теперь не перегревает лишний раз воду, не молотит впустую всю ночь – а включается по потребности. Думаю, это снизит счета за электричество в долгосрочной перспективе. Плюс мониторинг показал, сколько реально киловатт он съедает – раньше-то мы этого даже не знали точно, а сейчас я вижу расход в кВт·ч в HA и могу проанализировать.
Что бы я улучшил теперь? Наверное, избавился бы от избыточной сложности. Шесть раздельных реле – гибко, но можно было обойтись и меньшим количеством ступеней нагрева. Возможно, стоило изначально использовать более мощные контакторы по фазам (3-фазные реле) и управлять ими через один-два Sonoff – схема была бы проще. Ещё из идей – добавить второй датчик температуры на обратку или в сам бак, чтобы контролировать перегрев точнее. Но это всё на будущее.
В целом же я доволен результатом: старый электрокотёл успешно проапгрейжен. Теперь он сочетает в себе надежность советского агрегата и удобство современного умного устройства. 🎉 Если у вас в подвале тоже скучает какой-нибудь раритет без мозгов – знайте, приделать ему «ум» своими руками вполне реально. Было бы желание, Wi-Fi и парочка свободных вечеров!
Совет для тех, кто хочет повторить наш путь
Система управления котлом, которую мы построили в Node-RED, — это довольно сложный проект. Он включает десятки условий, проверок, переключений, планировщиков, автоматических защит и оптимизаций. Чтобы прийти к такому уровню, потребовались опыт, время и множество итераций.
Поэтому совет для новичков:
👉 Начинайте с малого!
Не стремитесь сразу строить многоуровневую автоматику с кучей взаимосвязанных условий. Это приведёт только к запутанному потоку, ошибкам и разочарованию.
Лучше начать так:
Сделайте простую схему: например, включить реле при температуре ниже 20°C и выключить выше 22°C.
Добавьте проверку времени суток: греть только ночью.
Потом — защиту от перегрева.
Потом — балансировку нагрузок.
И так далее...
Каждый маленький рабочий кусок даёт опыт, понимание принципов Node-RED и уверенность в собственных силах.
Только после этого можно переходить к сложным сценариям типа нашего.
И главное:
🚀 Стройте систему так, чтобы вы сами через полгода могли легко понять, что она делает.
Комментарии в узлах, чистая структура, понятные названия — всё это будет спасать от головной боли в будущем.
Если будут вопросы - пишите!
Буду рад, если поддержите мою деятельность рублем и накидаете ещё идей для новых статей)





