УМНЫЙ ДОМ Opensource OpenTherm контроллер/термостат для управления отоплением

LazyDev

✩✩✩✩✩✩✩
16 Ноя 2020
12
2


Начинал писать простой OpenTherm контроллер на esp8266/esp32 для личного использования, вылилось в полноценный девайс для управления котлами с нативной интеграцией в Home Assistant и встроенной веб-мордой.
В момент первого релиза публиковал статью на хабре, где рассказывал о причинах появления сего девайса и процессе разработки прошивки.
В репозитории лежит схема платы, BOM и Gerber файл для самостоятельной сборки, но совместимо и с платами от Игоря Мельника, DIYLESS и другими, собранными по схеме.




Функционал
  • Контроль температуры ГВС
  • Контроль температуры отопления
  • Режимы интеллектуального контроля температуры теплоносителя:
    • PID
    • Эквитермические кривые — регулирует температуру в зависимости от температуры внутри и снаружи помещения
  • Настройка гистерезиса (для точного поддержания температуры в помещении)
  • Возможность подключения дополнительных (внешних) датчиков: Dallas (1-wire), NTC 10k, Bluetooth (BLE). Позволяет отслеживать температуру внутри и снаружи помещения, температуру на трубах/теплообменниках и т.п.
  • Аварийный режим. В любой опасной ситуации (потеря связи с WiFi, MQTT, датчиками и т.п.) не даст замерзнуть вам и вашему дому.
  • Возможность удаленного сброса ошибок (работает не со всеми котлами)
  • Диагностика:
    • Отображение состояния устройства
    • Отображение состояния подключения к котлу через OpenTherm
    • Отображение состояния и кода неисправности
    • Отображение состояния и кода диагностики
    • Отображение процесса отопления: работает/не работает
    • Отображение состояния горелки (пламени): вкл/выкл
    • Отображение уровня модуляции горелки в процентах
    • Отображение давления в системе отопления
    • Отображение текущей температуры теплоносителя
    • Отображение температуры обратки теплоносителя
    • Отображение заданной температуры теплоносителя (полезно при использовании PID или Equitherm)
    • Отображение процесса ГВС: работает/не работает
    • Отображение текущей температуры ГВС
    • И другая информация...
  • Нативная интеграция с Home Assistant через MQTT. Возможность создания любой автоматики для котла!

Плата
Для проекта была спроектирована плата для установки в корпусе D2MG (Gainta), на плате сразу распаивается БП для возможности запитать от сети 220v.
Заказывается как один дизайн, перед сборкой разделяется на 2 части: верхнюю и нижнюю. Последняя версия адаптирована под SMT сборку, но и вручную без проблем собирается.


Ссылки:

Прошивка
Активно развивается с лета 2022 г., код открыт и доступен на гитхабе.
На момент публикации темы прошивка совместима с платами esp8266, esp32 (в т.ч. s2, s3, c3, c6 без BLE).
Список проверенных котлов есть в wiki на гитхабе. Если котла нет списке, но он поддерживает OpenTherm, то высока вероятность, что прошивка с ним будет корректно работать.

Проект бесплатный и развивается по мере свободного времени.
Платным не будет, потому что just for fun!

Ссылки:

 
Изменено:
  • Лойс +1
Реакции: Tim Ka и Агарон

Агарон

✩✩✩✩✩✩✩
19 Янв 2025
2
0
Здравствуйте!
У меня вопрос возник. А для чего эта плата с реле? Это внешнее управление ПИД?
У Меня задача управлять моим BAXI через вебморду по удалёнке. Можно ли сделать это без платы с реле?
 

LazyDev

✩✩✩✩✩✩✩
16 Ноя 2020
12
2
Здравствуйте. Там не реле, а оптопары. Без этого адаптера ESP выгорит, т.к. на шине напряжение до 42v.
 

Агарон

✩✩✩✩✩✩✩
19 Янв 2025
2
0
Оптопары находятся на плате с ESP , меня интересует плата с БП, кстати который без гальванической развязки. Там стоит по всей видимости реле. И этого реле нет на схемах.
Есть еще вопросы, но PDF со схемой что то не открывается сейчас.
 

LazyDev

✩✩✩✩✩✩✩
16 Ноя 2020
12
2
1737611557514.png

Если вы про этот компонент, то это блок питания 220v > 5v. Реле там в принципе нет на плате.
 

Tim Ka

✩✩✩✩✩✩✩
6 Апр 2025
1
0
Здравствуйте! Собрал девайс по вашей схеме, подключил к котлу, всё (ну, почти всё, см ниже) работает, спасибо большое!

Котел - электрический, STOUT PLUS 12кВт, его в числе протестированных нет, это понятно, но в связи с этим есть вопросы/комментарии по поводу того, что работает некорректно или не работает вовсе )):
1. OpenTherm diagnostics выдает ничего. Т.е. диагностика выглядит так:
OpenTherm diagnosticVendor: unknown vendor
Member ID: 0
Flags: 0
Type: 0
AppVersion: 0
OT version: 0
Modulation limits: 0...100 %, curr. max: 100 %
Power limits: 0...0 kW
Heating limits: 20...90 °C
DHW limits: 30...60 °C
Получается, что функция диагностики - специфическая для котла, и ее надо переписывать под каждую модель/производителя отдельно?

2. Несмотря на то, что котел рапортует как сенсор текущую мощность, значение, которое отображает девайс ("OpenTherm, current power"), всегда нулевое (power limits в диагностике тоже нулевые, см. выше). Можно ли это как-то пофиксить?

3. Из мелочей: к плате управления котла подключен, помимо уличного датчика, датчик внутренней температуры. По идее, девайс мог бы получать по OpenTherm значение и этого датчика тоже, но в настройках сенсоров я такого типа датчика (ожидаемо - что-то вроде "OpenTherm, indoor temp") не нашел. Было бы здорово его тоже иметь в списке доступных сенсоров, хотя бы как бэкап для остальных датчиков внутренней температуры, которые, будучи беспроводными, всегда имеют риск высаженных батарей.

4. Глупый вопрос, но тем не менее уточню: я правильно понимаю, что при подключении NTC датчика, один провод вешаем на один из контактов Temp1/Temp2, а второй - на общую землю? В этом (и только в этом) смысле дизайн платы не очень удачный, т.к. контакты Temp1/Temp2 - "снизу" платы, а земля - "сверху", приходится либо в коробе какую-то шину городить для земли, либо растягивать провода из общей оплетки в продольный шпагат, чтобы они доставали до контактов.

Еще раз спасибо за вашу работу, отличный дизайн и отличное утройство! Заранее благодарен, если сможете ответить/прокомментировать. Готов поработать над тем, чтобы добавить котел в список проверенных )))
 

LazyDev

✩✩✩✩✩✩✩
16 Ноя 2020
12
2
Приветствую, благодарю за обратную связь!

Получается, что функция диагностики - специфическая для котла, и ее надо переписывать под каждую модель/производителя отдельно?
Не совсем. В проекте есть опрос стандартных data ID, но не все котлы отвечают чем-то вразумительным, а могут вообще не отвечать. В этом нет ничего страшного, но часть значений в настройках нужно заполнить вручную.

2. Несмотря на то, что котел рапортует как сенсор текущую мощность, значение, которое отображает девайс ("OpenTherm, current power"), всегда нулевое (power limits в диагностике тоже нулевые, см. выше). Можно ли это как-то пофиксить?
В настройках нужно заполнить минимальную и максимальную мощность во вкладке Настройки OpenTherm:
1744250845281.png


Но работать это будет только в том случае, если котел сообщает уровень модуляции.

Из мелочей: к плате управления котла подключен, помимо уличного датчика, датчик внутренней температуры.
Согласно документации к протоколу, слейв (котел) не может знать внутреннюю температуру, ее знает только мастер (шлюз, термостат) и может передать котлу. Так что это просто невозможно из-за протокола.

я правильно понимаю, что при подключении NTC датчика, один провод вешаем на один из контактов Temp1/Temp2, а второй - на общую землю?
Нет, эти входы для 1-wire датчиков типа DS18B20. NTC 10k подключаются к аналоговым входам ESP через делитель, но на плате с github под них нет разводки, т.к. уже не было места.
 
Изменено:

ZHNovell

✩✩✩✩✩✩✩
9 Мар 2023
1
0
Qazaqstan
Здравствуйте, а продайте пожалуйста уже готовый ОТ термостат, где его можно купить?
 

San4o

✩✩✩✩✩✩✩
27 Сен 2025
1
0
LazyDev сел рисовать плату,
уменя esp32-wroom-32, начал сопоставлять куда кидать дорожки, незадача


к чему подключают ?
CC_OUT_B ?
CC_IN_B ?


NodeMCU 32S:

Status LED: 02 (Led3)
OpenTherm In: 16 (OT_in)
OpenTherm Out: 04 (OT_out)
OT RX LED: 19 (Led2)
Outdoor sensor: 15 (Temp1_B)
Indoor sensor: 26 (Temp2_B)




1758973860630.png



термодатчики в комнате хочу подключить через BT - Xiaomi Mijia
делаю питание от Dc12v а на борту dcdc-5v если чтото сломалось то заменить просто...

стоит baxi 4s, потом добавлю baxi електро на 3ф
 
Изменено:

netpolice

✩✩✩✩✩✩✩
11 Дек 2025
1
0
@LazyDev,Коллеги, а кто-нибудь транзистор пытался на схеме OpenTherm adapter менять на другой - вот как по мне сюда вполне себе прилично КТ361 вкорячивается.
 

Maximov2a

✩✩✩✩✩✩✩
24 Янв 2026
2
0
Приветствую! Кто- нибудь имеет успешный опыт поженить сей девайс с tuya он же smartlife по openterm ?
 

LazyDev

✩✩✩✩✩✩✩
16 Ноя 2020
12
2
к чему подключают ?
CC_OUT_B ?
CC_IN_B ?
Это для каскадного управления. Например, для включения обычного электрического котла без opentherm через твердотельное реле/электромагнитный пускатель в случае падения основного котла в ошибку.

вот как по мне сюда вполне себе прилично КТ361 вкорячивается.
Можно заменить на любой с аналогичными характеристиками.

Кто- нибудь имеет успешный опыт поженить сей девайс с tuya он же smartlife по openterm ?
С tuya обычно все переезжают на home assistant или аналоги, чтобы отвязаться от проприетарной системы, а вы наоборот хотите :oops:
Интеграция возможна через http api или mqtt. Если ничего из этого система УД не умеет, то не получится.
 

JackStrange

✩✩✩✩✩✩✩
22 Окт 2026
2
0
Доброго времени суток, @LazyDev!

Давно имею желание заменить внешний термостат (использую ZONT H-2) по причине неполной "удовлетворенности" его интеграции в УД (iobroker) из-за множества разного рода ошибок и "недоделок", на обращения по которым из тех.поддержки устройства мне уже не отвечают. Также приходится зависеть от внешнего сервера, который последнее время часто бывает недоступен.
Обнаружив Ваш контроллер очень был этому рад. При помощи ИИ и имеющихся в наличии старенькой ESPшки и ОТ адаптера от И.Мельника реализовал желаемый термостат и подключил его к УД, но пока без рабочего подключения к котлу, т.к. есть несколько вопросов по его настройке.

Что, собственно, имеется в настоящий момент?
Используемый в настоящее время термостат управляет котлом Wiessmann Vitodens 100w в псевдорелейном режиме с гистерезисом 0,5 градуса по датчику температуры, находящемуся в одной из комнат дома. Выбранный режим полностью меня устраивает, т.к. не приводит к постоянному тактованию котла, которые неизбежно получаются в режиме ПИД. Режим ПЗА очень (ИМХО) сложен в настройке (выборе кривой), т.к. в доме имеется система вентиляции, работающая по уровню СО2 и заметно влияющая на температуру в доме. Дом обогревается только теплыми полами (автоматика управления контурами теплых полов для поддержания требуемой температуры отдельно в каждой комнате отсутствует). В режиме отопления котел ограничен по уровнем модуляции горелки в 25%, чего с запасом хватает для нагрева и поддержания теплоносителя до температуры в 45оС (на смесительном узле теплого пола температура входящего теплоносителя ограничена 40оС) .
Один раз в сутки по расписанию (в 18:00) котел переключается на нагрев внешнего бойлера - вода в бойлере нагревается до 60оС (иногда нагреваю до 75оС для профилактики легионеллы). В режиме нагрева ГВС котел уже включается на полную мощность и нагревает теплоноситель до 90оС. (работу котла и изменения температуры в доме можно увидеть на приложенном суточном графике)

Что хотелось бы уточнить для начала в тех настройках, которые реализованы в вашем контроллере?
1. Не нашел псевдорелейного режима работы котла.
Как я понял, в вашей реализации гистерезис можно применить к режиму ПИД (в ZONT Н-2 гистерезис работает только в ПРР). Это так?
2. Коэффициент турбо режима - параметр, применяемый к определенного вида/типа котлов? Это как-то связано с уровнем модуляции горелки? (у своего я этого параметра не нашел)
3. В режиме ГВС значения максимальной и минимальной температуры задаются для теплоносителя или для воды в бойлере (в бойлере имеется датчик температуры, подключенный к котлу)?
 

Вложения

LazyDev

✩✩✩✩✩✩✩
16 Ноя 2020
12
2
1. Не нашел псевдорелейного режима работы котла.
Такого режима нет.

Как я понял, в вашей реализации гистерезис можно применить к режиму ПИД
ПИД/ПЗА, гистерезис в этих режимах относится к температуре в доме, а не к температуре теплоносителя.

2. Коэффициент турбо режима - параметр, применяемый к определенного вида/типа котлов?
Это виртуальный режим, который поднимает температуру теплоносителя для более быстрого прогрева. Опять же, актуально при использовании ПИД/ПЗА (погодозависимые кривые).

3. В режиме ГВС значения максимальной и минимальной температуры задаются для теплоносителя или для воды в бойлере
Для воды в бойлере. Температурой теплоносителя при использовании БКН рулит котёл. С помощью защиты от перегрева можно принудительно отключать нагрев БКН, когда температура теплоносителя будет выше N градусов, обычно это не нужно, но некоторым котлам полезно.

Выбранный режим полностью меня устраивает, т.к. не приводит к постоянному тактованию котла, которые неизбежно получаются в режиме ПИД.
Почему неизбежно? Когда ПИД выходит на рабочую температуру, то тактования нет, либо оно минимально (в межсезон). Для минимизации этого эффекта применяется гистерезис по температуре в доме.
 

JackStrange

✩✩✩✩✩✩✩
22 Окт 2026
2
0
Приветствую, @LazyDev !
Спасибо Вам за вашу работу и за обратную связь. (y)
Мои вопросы связаны с тем, что пытаюсь понять и провести границу между тем, что делает сам котел, а что внешний термостат. Чего я еще не знаю/не понимаю в их работе и что можно улучшить в моем случае. :)

Такого режима нет.

Почему неизбежно? Когда ПИД выходит на рабочую температуру, то тактования нет, либо оно минимально (в межсезон). Для минимизации этого эффекта применяется гистерезис по температуре в доме.
Вопрос про псевдорелейный режим возник из-за того, что в настоящее время, как я сказал, использую термостат ZONT, а в его "идеологии" это именно отдельный режим, включив который необходимо задать величину гистерезиса для определения крайних значений требуемой комнатной температуры, при которых происходит включение (при температуре "целевая - гистерезис") и выключение (при температуре "целевая + гистерезис") котла в режиме отопления.
Этот режим выбрал вследствие того, что в режимах ПИД/ПЗА мне не удалось настроить термостат так, чтобы котел не тактовал - отслеживая целевую температуру он постоянно (с периодичностью в несколько минут) включает и отключает горелку, не давая ей (температуре) измениться больше, чем на 0,1 градуса. При этом мощность горелки установлена по минимальному значению (1/6 от максимальной, как указано в руководстве по эксплуатации), а возможности изменить эту дельту в настройках термостата, как мне ответили специалисты из тех.подержки, нет.
Возможно, я выбрал котел бОльшей мощности, чем требуется, но он был выбран в соответствии с расчетами теплопотерь дома (15,5 кВт), наличия внешнего бойлера (200 л.) и необходимого запаса (в 20%). Ближайшим по необходимой мощности получился котел на 24 кВт.
Сомневаюсь, что котел меньшей мощности в этих режимах работал бы кардинально по другому (без тактования).
В отопительный сезон в псевдорелейном режиме и гистерезисом в 0,5 градуса котел включается пару раз в сутки при температуре наружного воздуха выше -10оС (общее время работы котла от 5 до 30% в сутки), и один раз в сутки (до 80+%), если на улице холоднее. Дом обогревается теплыми полами, поэтому температура теплоносителя ограничена 45оС, при этом котел часто снижает мощность горелки в процессе нагрева (на графиках в предыдущем посте это отображено розово-красной линией "уровень модуляции", которая в начале суток показывает, что котел дважды включался на отопление - "прямоугольники" с заваливающейся вниз правой верхней частью, которая и показывает снижение мощности горелки с 25% до 20-18%).

Имеет ли смысл перейти на режим ПИД или ПЗА? В чем их "прелесть"? :unsure:

PS: Вообще, котлы у которых нет способности изменять мощность горелки в процессе поддержания заданной комнатной температуры или температуры теплоносителя работают, по сути, в релейном (включено/выключено) режиме.


ПИД/ПЗА, гистерезис в этих режимах относится к температуре в доме, а не к температуре теплоносителя.
Отнести гистерезис к температуре теплоносителя было бы странно, если при уставках отопления задаются минимальная и максимальная температура теплоносителя.

Это виртуальный режим, который поднимает температуру теплоносителя для более быстрого прогрева. Опять же, актуально при использовании ПИД/ПЗА (погодозависимые кривые).
Т.е. это не параметр котла, который включает/выключает турбо режим, а алгоритм термостата, по которому обеспечивается быстрый нагрев теплоносителя (например, включением полной мощности горелки).

Для воды в бойлере. Температурой теплоносителя при использовании БКН рулит котёл. С помощью защиты от перегрева можно принудительно отключать нагрев БКН, когда температура теплоносителя будет выше N градусов, обычно это не нужно, но некоторым котлам полезно.
В настройках термостата отопление и ГВС находятся друг под другом и содержат абсолютно одинаковые поля для задания уставок, и, вроде как, касаются нагрева одного и того же...

Вопрос по нагреву воды в бойлере есть... В соответствии с инструкцией по эксплуатации нагрев ГВС котлом имеет более высокий приоритет по отношению к отоплению, вследствие чего (или это можно изменить? :unsure: ) уставка для уровня мощности горелки в режиме ГВС не учитывается и котел включается на полную мощность. Сейчас происходит именно так (на графиках можно увидеть, что график "уровень модуляции" в 18:00 (время включения режима ГВС по расписанию) резко взлетает - мощность практически максимальная, температура теплоносителя стремится к 100о), что на мой взгляд, совсем необязательно... Скорее, даже нежелательно, т.к. любые резкие существенные изменения температуры теплообменника уменьшают срок его службы. На это еще накладывается логика работы циркуляционного насоса котла, который при выключении горелки тоже (через 1 минуту) отключается, хотя, крайне желательно, чтобы циркуляция теплоносителя оставалась и температура теплообменника постепенно снижалась. После отключения насоса температура теплообменника начинает расти, т.к. его теплоемкость гораздо больше теплоемкости теплоносителя, находящегося в нем (это также можно увидеть на графике).
Я задавал вопрос о возможности внешнего управления насосом котла техническим специалистам в представительстве Wiessmann в России, на что получил ответ, что логика работы насоса жестко зашита в контроллере котла. :(

Словом, все, что касается темы практической эксплуатации системы отопления частного дома меня интересует. Не на все имеющиеся вопросы до настоящего времени я нашел ответ. А термостат, который Вы так замечательно реализовали, был одной из моих целей. Еще раз большое спасибо! 🤝
 
Изменено: