I’ll start by saying It Works for Me ™.
Firstly the most pertinent fact: We don’t have a room thermostat.
The one we had with the oil boiler was terrible. The one installed with the heat pump was horrible to program and doesn’t have a “delay” to stop cycling. It does have “minimum on time” (say 5 mins) and “max cycle rate” (say 3 per hour) but that doesn’t help because it would just be off for half an hour. We’d want to say “on for 5 mins, off for 15” for example.
For temperature control we are using programmable TRVs on each radiator. Nothing too clever, just manually configured time and temp. For example, one of the bedrooms spends most of the time at 15 Celsius whereas my office is 23 Celsius and the shower room is 25 Celsius. Of course this plays havoc with the energy-demand calculations which assume a common temperature across the whole house. The TRVs could theoretically all shut down at the same time so the heat pump has a bypass valve just in case.
We’re using flow temperature control on the heat pump. It does have a weather compensation mode but because I’ve taken over control of the heat pump it’s better that it’s simpler on the heat pump itself.
My algorithm is watching the flow and return and deciding what to do. It’s pretty much a re-implementation of the native weather compensation setup by the heat pump installer. One tweak is that I’m using the effective temperature for the weather compensation rather than just the measured temperature.
Ironically, whilst I’m writing this I’m a smidge chilly and I go ask the system why and I see it’s just turned itself on
It has been cold enough to turn on the heating - the return temperature is currently 26.0 °C
Given all the above, the obvious question is “are we warm enough?”. Strangely the answer is always “yes”. It’s a bit frustrating because I want to tinker, but the residents keep telling me it’s fine. Even visitors look non-plussed and say they aren’t too hot and they aren’t too cold, it’s just right. No, they don’t have blonde curly hair.
Here’s some charts of room temperatures. The “currencost” and “pywws” sensors in my office are actually touching each other but still have different readings. The red temperature trace is from the machine room. The redundant room stat sat on my desk right now says it’s 22 Celsius and often says 23 (as desired by the TRV).
When we’re talking to technical people about the system behaviour they often ask what temperature the house is at so they can determine how “normal” we are. I can’t give a straight answer because it depends on time and room.
So my conclusion is that, as @johncantor says, user comfort is anecdotal.
I can at least confirm that a strategy based on flow and return temperature can work in a house with a heat pump and lots of TRVs.
One thing we’ve had to change is our perception of the desired temperature on the TRV. It’s an upper-bound not a guarantee. The room may in fact not get up to the temperature set on the TRV if the flow control algorithm decides it’s not worth carrying on. Our TRVs don’t call for heat. Having it set to 25 Celsius won’t keep the heat pump running whilst pushing that room really high, it just means that the TRV is likely to stay open all the time.
Here’s an example of the hysteresis in action. It’s a bit windy and damp at the moment.
The effective temperature is 8.53 °C whereas the outdoor temperature is 11.0 °C
The delay is also temperature dependent so the cooling from the wind is making the delay shorter.
It hasn’t been cold enough to turn on the heating - the return temperature is currently 26.5 °C but it needs to be below the minimum temperature of 27 °C for another 422 seconds
You can see we have long runs where the heat pump is off which is helping improve efficiency because it’s not having to heat already-warm water and the pumps run much less.