DIY OpenTherm Thermostat?

Yep, WAF factor if a bit barrier for now)
And regarding integrated supply - yes, we are aiming for it, however it requires a software support aside of hardware changes: opentherm library should be able to request for power providing as well as firmware should be rewritten itself, because for now we are using Arduino framework which is great for fast start but it uses a lot of energy (relatively). You might notice than thermostat is heating itself because CPU isnt sleeping. We are investigationg ESP IDF to use some advanced powersave technics, that would lower deviceā€™s power appetite.
BTW we have also released a firmware update (if you are using pre-flashed version), which adds scheduler, and some minor bugfixes.

1 Like

Ah, bringing deep sleep to the device over firmware update would be amazing!
I donā€™t use your firmware personally and switched to ESPHome, Iā€™m the kind of person that likes control over their PID loops. Did you consider using ESPHome? You get deep sleep for free.
Hereā€™s the ESPHome config Iā€™m running on your device:

1 Like

Working on it) Our firmware is more for people not too friendly with those technical details. But of course we are encouraging any extension/new usecase, that was primary goal our HW was built for. After we get up and running ESPHome version - will try investigationg on opentherm powering from boiler.

2 Likes

Understanding Heating Curves

In most boilers you can select a heating curve. There are two cases:

  1. a sensor for external temperature is connected to the boiler
  2. a sensor for external temperature is NOT connected to the boiler

In the first case the target boiler water temperature can be looked up.
In the second case it can not, so at best a default external temperature is used. Than the selected heating curve translates to a certain target boiler water temperature.

What happens next depends on the ā€œalgorithmā€ of the boiler.

a) if you have an on/off system than the boiler could heat up to the value of the heating curve, this can be done with full power, or with some throttled down power.

b) if you have a thermostat that modulates (opentherm) than the heating curve temperature becomes IMHO at best some secondary parameter, because the target boiler water temperature is set by the thermostat.
Anyway the target temperature has to be translated into flame height (the amount of heat added). Flame height is calculated by the boiler, mostly by proprietary closed algorithms.
Or put in other words: heating curves are obsolete with a modulating thermostat. From experimenting with heating curves my finding was that they did make no differences in behaviour of the system.

Please Comment ! Maybe I 'm totally wrong, would be happy to hear that.

1 Like

@wildekek
Thank you for this! Iā€™m running this as well now and it works like a charm. Donā€™t know anything about the PID values and I havenā€™t touched them. How does the autotune work?

1 Like

I have to say that tuning PID values is kind of hard, but autotune works pretty okay, you can read more on the esphome website.

1 Like

Hi @Basilicum , youā€™re correct. To visualize the modulating boiler, hereā€™s how that works in practice in my house:

  • Living Room Climate Temperature: the measured temperature in the room
  • Heating Controller Boiler central heating setpoint: The thermostat PID controller sends this to the boiler, basically saying: ā€œI want you to heat the boiler temp to x degrees, because I expect that value will result in the room temperature I want.ā€
  • Heating Controller Boiler temperature: the actual boiler temperature. This temperature is created by the boiler, taking the setpoint as an input and then modulating the flame (using a proprietary control loop) to end up somewhere close to the setpoint. As you can see, it does this in a completely non-linear fashion and this varies per boiler.
    Hope the visualization helps to see what is actually going on.
1 Like

maybe your boiler requires a correct Member-ID OT message. If youā€™re using a custom firmware - you\ll need to read boilerā€™s memberID first and then send it back while communicating to the boiler

Are you sure your boiler supports opentherm?
I had the same problem. Turned out that opentherm is not the only protocol used to control a boiler.
Mine used ebus.