The first article ends by the need to get more data from boiler because it heats warm water too often.
The first step I did was actually disabling circulating warm water every 15 minutes which I used to have always warm water immediately instead of waiting until it reaches a tap. Surprisingly, I observe almost no difference. There is still quite warm water immediately in the tap but the boiler heats water with the same frequency...
My home heating setup consists of two main heating branches - one with central heating (additionally split to radiators and floor heating) and the second with external tank for warm water. For some reason there is no three-way valve to stop flowing water to external tank when running in central heating mode. I suspect this is the culprit why boiler heats external tank approximately every two hours. To confirm it, I need data about what mode the boiler runs (although it can be guessed from the power consumption) and temperature in the external tank which triggers its heating. All can be retrieved via OpenTherm protocol.
OpenTherm standard is designed for communication between boiler and thermostat. Mine boiler - Thermona Therm EL 9 - does support it.
- https://www.home-assistant.io/integrations/opentherm_gw/
Hurray - there is a way how to get data to Home Assistant! - http://otgw.tclcode.com/ - the gateway. Unfortunately, it looks quite complex...
- https://github.com/jpraus/arduino-opentherm - library for Arduino by Jiří Praus with his HW looks much easier to use and I went for this option.
- Only later I have found out it would be enough to use https://ihormelnyk.com/opentherm_adapter (because I don't need to communicate with thermostat).
- OpenTherm jumper set to 5V
- OpenTherm D3 - Uno D3 (via header) : #define BOILER_IN 3
- OpenTherm D5 - Uno D5 (via header) : #define BOILER_OUT 5
- OpenTherm 5V - Uno 5V
- OpenTherm GND - Uno GND
- OT_MSGID_STATUS - boiler's status (what does it heat)
- OT_MSGID_FAULT_FLAGS - current fault code
- OT_MSGID_MODULATION_LEVEL - boiler's power (0-100%)
- OT_MSGID_CH_WATER_PRESSURE - boiler's water pressure
- OT_MSGID_FEED_TEMP - boiler's water temperature
- OT_MSGID_DHW_TEMP - warm tank's water temperature
- OT_MSGID_OUTSIDE_TEMP - outside temperature (for equithermal regulation)
- OT_MSGID_DHW_SETPOINT - target water tank temperature