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

LazyDev

✩✩✩✩✩✩✩
16 Ноя 2020
11
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
11
2
Здравствуйте. Там не реле, а оптопары. Без этого адаптера ESP выгорит, т.к. на шине напряжение до 42v.
 

Агарон

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

LazyDev

✩✩✩✩✩✩✩
16 Ноя 2020
11
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
11
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
11
2
к чему подключают ?
CC_OUT_B ?
CC_IN_B ?
Это для каскадного управления. Например, для включения обычного электрического котла без opentherm через твердотельное реле/электромагнитный пускатель в случае падения основного котла в ошибку.

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

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

JackStrange

✩✩✩✩✩✩✩
22 Окт 2026
1
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. В режиме ГВС значения максимальной и минимальной температуры задаются для теплоносителя или для воды в бойлере (в бойлере имеется датчик температуры, подключенный к котлу)?
 

Вложения