Weather compensation heating automation

Just thinking aloud… re - HA Weather Compensation (instead of Load Compensation)

If you have a boiler that doesn’t do weather compensation, could this be achieved via HA automation using internet local weather reading + internal thermostat + boiler control?

I get that the boiler modulation won’t be perfect depending on boiler and thermostat control - but just thinking aloud.

thanks

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!

Interesting solution. I have a similar boiler, so pls. keep us posted.

A few thoughts. I have a heatpump for heating the house (underfloor heating) and keep the boiler for hot water.

I have played with the boiler for this setup and get the same problems as you - it dosent modulate low enough. With outside temp of 6-8 C I have a flow temp of 29C from the heatpump, which is below the low limit of the boiler.

When its cold (below -5 C) I switch to the boiler as effiency drops significantly in the heatpump. Here it works well - probably because the flow temp is above 35C and/or because the return flow is so cool that the boiler does not shut off.
I have toyed with the idea of setting up a three way-valve to switch between heatpump and boiler using automation in HA, but havent gotten around to it yet. So now its a couple of manuel valves.

I am also looking at something similar. I have a Vaillant boiler, an ebus shield and various indoor and outdoor temperature sensors. For now, all I am intending to do is set the flow temperature through ebusd, relative to the outdoor temperature, and keep using the basic thermostat as before to manage off/on state of the boiler.

I’d look at putting a low loss header on the boiler.

I’ve implemented a weather compensation and hot water priority setup using a combination of homeassistant, a sonoff 4ch pro esp relay board running tasmota with 2 [ds18b20]temp sensors, a esp32 running esphome driving (serial) a xy-pwm1 pwm controller to control a grundfos UPM3 flex circulator pump, Google Nest Learning Thermostat and a sonoff SNZB-02 temp/hum sensor.

I implemented this some 4 years ago with only minor changes and in the cold months run the CH 24/7 with weather compensated flow temperatures.

The weather compensation solution inspired by this blog post.

Setup:
Boiler is a 40 year old Potterton Netaheat 10-16 MK2 feeding 7 radiators and a hot water tank.
The system is an open vented y-plan configuration and basically controlled by the boiler thermostat (flow temp) and hot water thermostat.
The radiators are fitted with IMI Eclipse self balancing trv’s with Moes smart trv motorised heads.
The ds18b20 sensors are strapped externally to the boiler’s flow and return pipes using jubilee clamps and thermal glue.

Weather compensation:
High level:
Outside temp sensor data is fed via mqtt to the sonoff 4ch.
Sonoff 4ch running tasmota is setup with 3 rules that process the outside temp (via mqtt), read the current boiler flow and return temp and then calculates the weather compensated flow temp using the adjustable heating curve as per the blog post referred to earlier.
When the boiler reaches the calculated (weather compensated) flow temp, a relay on the 4ch pro board then switches of the power to the boiler, note that the circulator pump is kept running at 15% (pwm) and then drops to 2% once the boiler flow temp is decreasing. A constant and controlled CH flow is needed for accurate flow and return temp readings. The fixed pump speed limit of 15% provides just enough flow to service all 7 radiators, even if trv’s trottle radiator output (i.e. due to rooms warming up due to sunshine) the eclipse trv valves ensures a constant CH circuit flow.
Hysterics is set at 4 degrees below the calculated flow temp, once reached, the pump speed increases to 15% and the boiler is powered up by the 4ch board relay.
As the inertia of a cast iron boiler is high, a delta-t (difference between flow and return boiler temp) of 83% is used as a secondary flow temp limit, i.e. if too much latent heat is fed to the radiators, the 4 degree hysterics limit is ignored until the delta-t is below 83%.

Hot water priority:
When calling for hot water the weather compensation rules are disabled with the boiler flow temp now directly controlled by the boiler’s thermostat set at 80 degrees.
Then the 4ch relay board disconnects the call for heat connection to the 3-way mid position valve (Y-plan) and isolates the CH flow circuit to the radiators.
Once the water tank thermostat removes the call for hot water, the call for heat connection to the 3-way valve is restored and the weather compensation rules are re-enabled with the pump speed set at 2% to allow the boiler (now at 80 degrees) to cool down to below the weather compensation temp limit.

================

Simplified copilot synopsys:

Weather Compensation and Hot Water Priority System

  • Components:
    • Homeassistant
    • Sonoff 4ch pro esp relay board with Tasmota
    • 2 DS18B20 temperature sensors
    • ESP32 with Esphome controlling XY-PWM1 PWM controller
    • Grundfos UPM3 Flex circulator pump
    • Google Nest Learning Thermostat
    • Sonoff SNZB-02 temp/humidity sensor
  • Setup:
    • Boiler: 40-year-old Potterton Netaheat 10-16 MK2
    • Heating system: Open vented Y-plan with 7 radiators and a hot water tank.
    • Thermostats: Boiler and hot water thermostats control the system.
    • Radiators: IMI Eclipse self-balancing TRVs with Moes smart TRV motorised heads.
    • Temperature sensors: DS18B20 sensors on boiler’s flow and return pipes.
  • Weather Compensation:
    1. Data Collection: Outside temperature sensor data is fed via MQTT to Sonoff 4ch.
    2. Processing: Sonoff 4ch with Tasmota reads outside temp, boiler flow, and return temps, then calculates weather-compensated flow temp using an adjustable heating curve.
    3. Control: When boiler reaches calculated flow temp, a relay on 4ch board switches off the boiler power. Circulator pump runs at 15% PWM (reduces to 2% when boiler flow temp decreases) ensuring accurate flow and consistent CH circuit.
    4. Hysteresis: Set at 4 degrees below calculated flow temp. When reached, pump speed increases to 15% and boiler is powered up again. A delta-t limit of 83% is used as a secondary flow temp limit.
  • Hot Water Priority:
    1. When Hot Water is Called: Weather compensation rules are disabled, boiler thermostat controls flow temp at 80 degrees.
    2. 3-way Valve Control: 4ch relay board disconnects call for heat connection to the 3-way valve, isolating CH flow to radiators.
    3. Post Hot Water Call: Once hot water call ends, call for heat connection to 3-way valve is restored, weather compensation rules are re-enabled, and pump speed is set to 2% to cool down boiler below weather compensation temp limit.

I have a very similar setup to you - albeit an oversized Worcester Greenstar 40CDI.

I would like to weather compensate the heating zones say 35-55c, and then toggle up to 70c for when heating the hot water cylinder (to achieve 60c in the cylinder water). It’s an S-plan with 4 zones.
The boiler can only be temperature set via the dial, it doesn’t have the service interface some others do.

So I’d love to know how you got on, and if I might be able to use any of your code? The ESP32 → servo interface is beyond me. Thanks very much.