Weather Compensation or Load Compensation

Seeking some conceptual advice and/or sanity checking.

I have a radiator heating system with wifi heating valves on each heater. It is currently fired with an oil boiler, but I am planning to move to a ground source heat pump (actually, lake source, but same thing).

I’ve been looking into how I would integrate this into my openhab setup, and how to optimally control the heat pump. With my boiler I’ve tended to cycle it on/off based on a view of the heat demand, largely because I have no electronic way to control the heat output.

I’m looking at an EcoForest heat pump (probably this one: ↠ ecoGEO+ 4-16 PRO 2025 | Ecoforest), which I believe I can control using the http binding. I can’t find documentation, but online hints suggest I’ll be able to control the output temperature.

The heat pump does have quite good weather compensation. My current heating setup basically uses load compensation/room compensation. There’s reasonable discussions of these here: Weather Compensation or Load Compensation? - HeatGeek. In summary weather compensation looks at the outside temperature and essentially sets the heat pump output temperature based on an estimate of how fast your house is losing heat (in turn based on delta-T between outside temperature and your desired set point).

My problem is that I have a home automation system (openhab), and I can code, and I think I can do better than the heat pump. My reasons for thinking that are:

  • Our house is old but extensively renovated. We have really different heat loss in different areas of the house - some areas reasonably wind tight and double glazed, other areas single glazed and very draughty
  • Our heating load is quite wind sensitive, and the heat pump doesn’t take that into account
  • We get a lot of solar load in the afternoon - we face the setting sun and don’t have a good way to shade (no curtains in living areas, and the house is art deco hence no eaves). Even when there is a lot of delta-T we can be quite hot inside
  • The radiator valves constantly adjust based on how much load they think they have - they try to adjust their opening to hold the target set point. This is information the heat pump won’t have

My thought is that I can take outside temperature, wind, solar gain, and the total current heating load across all radiator valves into account, and adjust the output temperature. I also think this could be a very good use case for a feedback loop - the radiator valves will reduce their opening if I’m supplying too much heat, so as the radiator valves reduce their opening I can turn down the temperature, and I can increase the temperature as the heating load increases. That should allow the whole system to automatically find an equilibrium, and then adjust that as temperatures change.

My general plan is to:

  • Create a feedback loop where as the total radiator valve opening increases, the heat pump output temperature increases
  • Conversely, when the total radiator valve opening decreases, the heat pump output temperature decreases
  • That is a load following strategy - the advice is also to try to predict heat demand a bit. So with time of day, or when setpoints change, or when the weather changes, I could predictively adjust the heating output temp.
  • The simplest way to do this would be something like adding 5 degrees to output temp when it’s windy, removing 5 degrees when it’s sunny, and maybe running an output temperature curve with outside temperature. The heating valves will still adjust to an equilibrium, but just from a different base
  • I have a lot of the base of this anyway - I’ve always been controlling boiler run-time based on total valve opening and some other parameters

I’m interested in feedback from people who may have done similar things, or have experience with heat pump controls, on tricks and traps. I have a fair idea of how to code it - I have similar compensation going on with the watering system based on rainfall and time of year, so I have a lot of the building blocks available to me.

I’ve been thinking on this some more, and I think I actually end up mostly load following.

My logic is that outside temps change slowly, so actually the load will track that just as easily as me trying to track the outside temp - there’s no obvious trigger to change the heat pump settings by a larger amount than load tracking would do anyway.

Similarly for wind - I’m not going to suddenly change the heat pump settings because wind just increased right now, it’s more that on a cold windy day I need a bit more heat - which the feedback loop should do anyway.

I do want to track changes in setpoints - so if a heater goes to 100% open I should only increase the heat pump output temp if that was as a result of a change other than setpoint change - if it’s gone to 100% because that room just came off setback, then it can come up to temp slowly. If it’s gradually run up to 100%, that’s an indication that that room needs more heat than the radiator is delivering at the current heat pump output temp.

So, I think my rules end up largely driving heat pump temp up if:

  • the aggregate heating demand is high (indicating that the water temp isn’t enough to keep up with heat demand)
  • individual rooms have 100% heat demand on a radiator, indicating that at the current heat pump output temp we’re not generating enough heat to keep that room warm (other than if the set point recently changed in that room)

And I drive heat pump temp down if:

  • the aggregate heat demand is low
  • most rooms are running < 50% heat demand (indicating the heat pump output is quite a bit more than needed, so the radiator valve is throttling demand, other than if the set point just changed)
  • no rooms are close to 100% (other than if the set point just changed)

The key improvement here v’s using the heat pumps built in compensation is that most heat pumps seem to take temperature from only one location, and they don’t have awareness of valve opening. By tracking the % valve open in each room, and more so, the changes of that over time, I think I get a much better picture of whether I’m in equilibrium - i.e. whether I have the heat pump water temperature right. If the valve opening is creeping down, it’s running too hot. If the valve opening is creeping up, it’s running too cold.

The knowledge of set point changes also means that when the heating comes off setback, I don’t immediately push the output temperature up right at the coldest part of the morning - running the heat pump less efficiently just at the worst time of day. Of course, I’m also running a ground source, so I’m less sensitive to the cold of the morning than an air source would be - I can ramp up the output temperature a bit, but perhaps not as much as a load compensating heat pump would. Part of what the better half likes about radiators is them being warm in the morning, so I do want a bit of a bump in output temp in the mornings.