Once upon a time I started developing a simple Opentherm controller on esp8266 for personal use, which resulted in a full-fledged controller product for Home Assistant. I think it’s time to publish it.
The software is free, it develops as I have free time.
The repository contains a board diagram, BOM and Gerber file for self-assembly, but it is also compatible with boards from Ihor Melnik, DIYLESS and others assembled according to this scheme.
Goals and tasks that this software performs:
Regardless of the “clouds”
Works autonomously and locally: even if the server is turned off, it will continue to work
Full integration into HA, without the need to describe mqtt entities
Features
Hot water temperature control
Heating temperature control
Smart heating temperature control modes:
PID
Equithermic curves - adjusts the temperature based on indoor and outdoor temperatures
Hysteresis setting (for accurate maintenance of room temperature)
Ability to connect an external sensors to monitor outdoor and indoor temperature
Emergency mode. If the Wi-Fi connection is lost or the gateway cannot connect to the MQTT server, the mode will turn on. This mode will automatically maintain the set temperature and prevent your home from freezing. In this mode it is also possible to use equithermal curves (weather-compensated control).
Automatic error reset (not with all boilers)
Diagnostics:
The process of heating the coolant for heating: works/does not work
The process of heating water for hot water: working/not working
Display of boiler errors
Burner status: on/off
Burner modulation level in percent
Pressure in the heating system
Gateway status (depending on errors and connection status)
Boiler connection status via OpenTherm interface
The current temperature of the heat carrier (usually the return heat carrier)
Set coolant temperature (depending on the selected mode)
Current hot water temperature
Auto tuning of PID and Equitherm parameters (in development)
Home Assistant integration via MQTT. The ability to create any automation for the boiler!
Awesome work. Thank you so much. I have purchased a DIYLESS board to test it with my boiler. I will comment on impressions. Do you intend to integrate valves into the equation?
I don’t think esp8266 has enough resources for this. However, I added the ability to output heating status to any pin ESP. You can use solid-state relays with optocoupler, which can be controlled from 3V, by connecting them to the ESP.
Or you can use Zigbee relays and control them via automation in HA.
You can assemble the device yourself. I order boards from jlcpcb, Gerber and BOM files are available in the repository on Github. Or buy boards for ESP from Ihor Melnik or DIYLESS.
Got it, thank you. I will probably just get it from DIYLESS. If someone could double-check my reasoning about this device for my project on this boiler, I would greatly appreciate it.
Morning, appologies if this is not the right place to post this, I had a look for a dedicated “area” to discuss the OpenTherm gatway for HA/ OTGA but this was the only thing I found which is a thread.
so I suppose two questions.
Is there a general area to discuss this intergration?
If not, is there any way to change the max_ch_setpoint on the boiler, in a similar way that can be done via the OpenTherm monitor software?
My house is predominantly wet underfloor heating, and as such having the boiler set much above even 50C is not required.
So my ideal, I believe would be to have an automation that if just underfloor heating is calling for heat, then have the max set to 50C, however if the hot water tank is calling for heat, bump that up to say 65.
I did find SERVICE OPENTHERM_GW.SET_CONTROL_SETPOINT however I don’t believe that is what I want.
For the record, I don’t have two controls set up where one is Hot water and the other is heating, it’s all coming on as “central heating”
I think you have a three-way valve installed that redirects the flow of heat carrier from the heating system to heating the water tank. You need to monitor the state of this valve and change the heating temperature depending on the state of the valve: if the valve is open for heating, then set it to 50 degrees, if the valve is open for the water tank, then 65.
Thanks for the reply @LazyDev, the problem was with the HA intergration I was struggling to see how to set that value.
Or is it a case of using OPENTHERM_GW.SET_CONTROL_SETPOINT which from the docs of the integration appears to suggest that this will activate the central heating circuit.
Using the OpenTherm monitor, I know I can simply set the “Max CH setpoint”, which does what I’m looking for, I was hoping with HA integration I could chnage that depending on what was calling for heat.
wow, amazing project and exacty what i was looking for. I have Vitodens gas heater and air-water heatpump in same system and want to switch them related to electricity/gas price and COP, so that I have the most cost effective outcome.
Got it up and running but every home assitant entity is unavailable and looks like OpentTherm connection with boiler is not working.Whats interesting is that it worked with the same hardware and firmware that i came with. I have Vitodens 100w.
I checked that gpio pins should be correct (21, 22)
How can i troubleshoot what could cause the issue @LazyDev ?
EDIT: Got it sorted out. There will be a 1.4.0 relase that will solve the issue
I hav now used OTGetaway for few weeks with equitherm logic and it works well.
However I have floor heating and using Uponor Smatrix collector control solution which is quite smart and can predict thermal inertia etc.
When collectors are in closed state it’s does not have a point for gas heater to be on as the hot water is not flowing in the under floor heating.
So I would like to turn on gas heater only when any of the floor heating contours are in open state. I have this information in Home Assitant. For example one:
Idle means off and heating means on. I can group all contours together so that if any of them is on I can make automation to turn on the gas heater.
But now I need some idea for a solution to turn gas heater on/off but at same time retain the heating temp vs outside temp logic. So basically use only heating curve and gas heater on/off will be controlled by automation.
Good day, a great project that I’ve been looking for for a long time, thanks to your work, everything works as it should, but the automation doesn’t work, I still have an error, I copy your code into automation yaml, can you help me with this? Error loading /config/configuration.yaml: while parsing a block collection
in “/config/automations.yaml”, line 1, column 1
expected , but found ‘?’
in “/config/automations.yaml”, line 62, column 1 excuse my english google translator
this problem solved
problem 2
entity not available sensor opentherm indoor temp if I switch the indoor temperature source to manual, the entity disappears