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



Начинал писать простой 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!

Ссылки:

 
Изменено:

Комментарии

Агарон

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

LazyDev

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

Агарон

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

LazyDev

✩✩✩✩✩✩✩
16 Ноя 2020
9
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
9
2
Приветствую, благодарю за обратную связь!

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

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

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

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

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