I have been playing with a similar idea over the last 2 weeks to put a DIY weather/load compensation system onto a very dumb and over-sized Worcester Bosch Greenstar ri 24kW boiler.
I only got my Home Assistant Green in October, so I’m only at the start of my HA journey.
My primary goal is to reduce gas consumption by having the boiler run 24/7 at the lowest flow temperature possible like a heat pump. Secondary goal is to understand the house better, and see if it is heat pump ‘compatible’ without needing to do any changes like insulation and radiator sizes.
Current equipment:
HA Green
Room thermostats in every room, plus one for the loft, and one outside (SwitchBot IP65 Thermometer) - https://amzn.eu/d/hIx1leh
Multiple ESP32 board to instrument boiler, HW cylinders and CH flow/return pipes, to control the boiler dial servo, and to create bluetooth proxies around the house for better thermometer signal - https://amzn.eu/d/fOYeMaY
Pipe thermometers for ESP32 board - Waterproof DS18B20-Compatible Temperature Sensor with Resistor | The Pi Hut
PWM servo for boiler dial control - TowerPro Servo Motor - SG92R Micro | The Pi Hut
I’ll be honest the coding of the ESP32s took an awful lot of trial and error (most likely due to user error), but I now have the boiler dial controllable through HA, and can see how the temperature of the flow and return changes.
I attached the servo arm with Velcro to the boiler dial, and created a plywood bracket to which I hot glued it to to attach it to the floor, thereby holding it in a fixed position in front of the boiler dial.
I found that the Drayton Wiser thermostat was causing the boiler to cycle 6x per hour, so I changed it in the settings to be an oil boiler to reduce this to 3x per hour.
Another issue I have encountered with my boiler, and likely most boilers will be similar, is that they can only be turned down so far. If the boiler dial is set too low, by the time the boiler has fired up (usually at 50%ish of their rated output), it doesn’t have time to modulate down before the flow temp has exceeded the dial setting. The more oversized your boiler is to your house heat loss, the more this will be an issue.
Through some (very) rough manual calcs, I estimate my house to be ballpark 10kW heat loss, so the 24kW model I have is just silly.
I will be using these and other experiments to refine my heat loss number, which will then be used to size the future heat pump perfectly.
I am now in the process of finding the servo angle attached to the boiler dial to generate the required flow temperature based on the outside temperature, such that the boiler never cycles, and outputs the minimum flow temperature possible to keep the house at a constant temperature (20degrees centigrade).
I’ve used the thermometers reporting to HA to go round the house several times to balance the radiators such that every room is now within a few tenths of a degree of each other throughout the entire day. This is against the typical ‘balance the radiator flow and return delta T’ approach, as the size of the radiator to the size of the room is rarely perfect, so I have balanced the radiators to room temperature to account for under/oversized radiators in each room.
Currently I’ve set the Drayton Wiser thermostat to 22deg to remove it from the equation, and I’m manually changing the boiler dial servo set position through HA a few times per day to keep the house as close to 20deg as I can, reacting to the outside temp changes, and also indoor changes such as cooking.
I’m just getting into and learning automations and helpers, and trying to understand what I can use and how to make the whole setup ‘smart’, using current and forecast outdoor temperature, to automatically adjust the boiler dial servo in advance to the minimum level to keep the house at 20deg without the boiler cycling. E.g. if house target is 20deg, current outdoor is x, and within the next hour it is forecast to be y, then set boiler dial servo to z to keep boiler flow in equilibrium with the house heat loss.
Input very much welcomed!