Working around a Hive TRV flaw

I’ve just started adding some Hive smart TRVs to my Hive heating system, and encountered a flaw (IMO) in their operation which has annoyed me for a little while now. When a room with a Hive TRV heats up, as it approaches the target temperature the TRV starts to close so that when the target temp is reached the radiator isn’t fully hot and so the room temperature doesn’t overshoot the target by too much. This seems like a good thing when a room is initially warming up.

But when a room is up to temperature and starts to cool again this causes a problem. With a target temp of, say 20C, when the room falls to 19.9 C the valve turns on and demands heat from the connected thermostat. The boiler fires up and hot water starts circulating, but because the room temp is almost at the target temp, the valve stays almost closed (see above), so the radiator takes an age to warm up, al the while the boiler is pumping hot water around the rest of the house. That’s not so good.

I’ve had some good conversations with Hive support about this and it seems they are aware of the issue, but currently have no plans to address it. However, I just realised that a very simple Home Assistant automation fixes it! Have an automation triggered when the TRV turns on, with an action of setting boost mode on the TRV (not the main thermostat) for a few minutes. This ensures the valve fully opens (because the boost temp will be much higher than the current temp) and the radiator heats up quickly. Simple but effective, at least in testing over the last couple of days. My system has gone from having the boiler run for 20 minutes or so when a TRV triggers to running for just 5 with the automation in place.

You’ll need a separate automation for each TRV you want to apply this to, and you might want to tweak the boost period differently for each TRV depending on the size of room and size of radiator to optimise the boiler runtime, but this little hack has taken me from thinking about abandoning the Hive TRVs to thinking about buying more of them!

1 Like

If the heating is already running and a satisfied room drops in temperature this gradual opening of the valve works well as a balance is reached between %open and room temperature (and flow temp).

So a better solution would be to leave the valve alone if the current circulating water was adequately hot or other zones were calling for heat. Only if it was just this this specific room that needed heat and if the current flow temperature is inadequate to satisfy this as the valve eases open should the call for heat happen and then your algorithm kick in. I realise you’re not in control of that call being created though.

Interested to know if your work around causes perceptible overshoots of the room temperature.

Do you have a modulating boiler ? If so I would expect unmodified the boiler would drop to its lowest % whereas with your modified behaviour it will run much higher but for a shorter time.

You’re right, if the heating is already running, or has been running recently, this is possibly not necessary. I imagine you could work that out by tracking the on/off state of the main thermostat in a helper and including that as a condition of this automation. Maybe. For the particular problem I was having, with the TRV in one specific room, this will almost never be the case so I’m not overly bothered. And in that room I’m getting overshoots of <1°C, which is good enough for me. It did need some experimentation with the boost period to get that - I’m currently boosting the TRV for just 4 minutes. Long enough for the boiler to get the water hot and for the radiator to warm up before the valve switches back to trickle mode.

For context, the room in question is my home office, which I’m trying to keep warm during working hours without also heating the rest of the house. And outside of working hours this TRV is off (well, set to a low temperature) and so doesn’t run evenings/weekends when the rest of the house is being heated. So the boiler is usually off when the office TRV decides it needs heating.

But for other radiators it is definitely a concern and I might well not have such an automation for every TRV, or I might have different boost times for each. The size of the room might also affect all this. Small rooms are more likely to overshoot than large ones, perhaps. Definitely some experimentation required over the next week or two to fine tune everything!

To add a little more context, I don’t currently have smart TRVs on all radiators, and so without this automation, when the heating was running but the office radiator warming up only slowly, I was heating the rest of the house for quite a while. I realise this would be less of a concern if I had more TRVs but they’re expensive so I’m adding them only slowly. But even if every radiator had a TRV, while I might not be heating the rest of the house (apart from the towel rails in the bathrooms) the pump would still be running and using energy, and the office would still be heating up slowly while I’m trying to work there!

I didn’t know about modulating boilers. I’m pretty sure mine isn’t. Maybe next time, although next time probably should be a heat pump…

Would you mind sharing your automation to boost your trv. I have the same issue with keeping my daughters room warm through the night running the boiler for hours with the valve in her room at 10% all night.

I’ve moved a lot of my automations from HA into NodeRED these days, but I happen to have a disabled version of this still in HA, so here it is. There’s not a lot to it - just detect a valve turning on and enable boost for a few minutes to make sure the radiator gets hot. And there’s a small tweak to make sure boost really turns off.

This has the radiator valve devices hardwired, so you need to edit it for each radiator valve you want to apply this to. I should turn it into a template really, to make deployment easier when you have lots of valves…


alias: "Heating: office radiator on"
description: >-
  With a Hive radiator valve, if current temp drops below target temp by just a
  bit, the valve barely opens and it takes ages for the radiator to warm up.
  This automation temporarily puts the vale in boost mode (much higher target
  temp) for a few minutes to give it a chance to warm up properly. This only
  happens if current temp is just a little (<1C) below target, otherwise valve
  will open properly anyway.

  Sometimes (not sure exactly when/why) a valve will stay in boost mode, so the
  actions have "wait for 5 minutes" and "turn boost off" actions as well as the
  "boost for 4 minutes" action. This shouldn't be necessary!
  - platform: state
    entity_id: sensor.office_radiator_state
    from: "OFF"
    to: "ON"
  - condition: template
    value_template: >-
      {{ states('sensor.office_radiator_target_temperature')|float -
      states('sensor.office_radiator_current_temperature')|float < 1 }}
  - service: notify.mobile_app_moto_g200
    data: {}
  - service: hive.boost_heating_on
      entity_id: climate.office_radiator
      time_period: "00:04:00"
      temperature: 22
  - delay:
      hours: 0
      minutes: 5
      seconds: 0
      milliseconds: 0
  - service: hive.boost_heating_off
      entity_id: climate.office_radiator
mode: single

Just wanted to say thanks for posting this Steve.
I’ve been using Hive for a long time but have only just started setting up HA.
I’ll be coming back to your automation in the future when I’ve got the basics sorted out!
Thank you.

1 Like