Increased DHW targets with warmer outdoor temps

Hi All

For anyone interested, had a lengthy discussion with ChatGPT 4o this morning about efficiency of ASHP DHW low target temps vs increased targets with warmer outdoor temps. The result of this conversation was the value template below to calculate a new DHW target temp every 3 hours based on the outside temperature. This is calculated in a Home Assistant automation and sends an update to my sensoComfort.
I previously tried to increase the target temp at 14:00 daily but the weather isn’t guaranteed where I live. This method keeps the target at 45 (or whatever you need) for colder temps, increases slowly between 15-25 outside temp, speeds up a bit between 25-30 and is capped at 50. I’ll be testing this over the coming weeks but thought I’d share the approach.

{% set odcurrent = states('sensor.outdoor_temps') | float(default=0) %} {%
if odcurrent <= 15 %}
  {{ 45 }}
{% elif odcurrent <= 25 %}
  {{ 45 + ((odcurrent - 15) / 10 * 3) | round(0) }}
{% elif odcurrent <= 30 %}
  {{ 48 + ((odcurrent - 25) / 5 * 2) | round(0) }}
{% else %}
  {{ 50 }}
{% endif %}
1 Like

Here’s the calculated output

Outdoor Temp (°C) Adjusted Temp (°C)
10 45
15 45
16 45.3
18 45.9
20 46.8
22 47.4
24 48
25 48
26 48.4
28 49.2
30 50
32 50
34 50
35 50

Hi, and welcome to the forum.

Thanks for sharing this interesting strategy - I’ve split it out to be it’s own topic. I may try implementing something similar in my own system.

Thanks. Let me know if you want me to share more of the automation. It also includes a fortnightly legionella cycle. FYI - ChatGPT was suggesting to increase the temps more in warmer weather but it was scaled back a bit for the initial tests.

According to ChatGPT a 3-step version can offer a more controlled and efficient approach to managing the DHW temperature, balancing the need for energy efficiency with maintaining a comfortable and safe water temperature.

3-Step Version


  1. Base Temperature: 45°C for outdoor temperatures up to 15°C.
  2. Slow Increase: Gradual increase from 45°C to 47°C for outdoor temperatures from 15°C to 22.5°C.
  3. Moderate Increase: Increase from 47°C to 50°C for outdoor temperatures from 22.5°C to 30°C.
  4. Final Increase: Increase from 50°C to 55°C for outdoor temperatures from 30°C to 37.5°C.

Calculation Logic

  1. From 15°C to 22.5°C: Increase from 45°C to 47°C.
    • Increment per degree: ((47 - 45) / (22.5 - 15) = 2 / 7.5 = 0.2667)
  2. From 22.5°C to 30°C: Increase from 47°C to 50°C.
    • Increment per degree: ((50 - 47) / (30 - 22.5) = 3 / 7.5 = 0.4)
  3. From 30°C to 37.5°C: Increase from 50°C to 55°C.
    • Increment per degree: ((55 - 50) / (37.5 - 30) = 5 / 7.5 ≈ 0.6667)

Revised Automation Code

service: input_number.set_value
  entity_id: input_number.dhw_target_temp_ashp
  value: >
    {% set odcurrent = states('sensor.outdoor_temps') | float(default=0) %}
    {% if odcurrent <= 15 %}
    {% elif odcurrent <= 22.5 %}
      {{ (45 + (odcurrent - 15) * ((47 - 45) / (22.5 - 15))) | round(0, 'floor') }}  # Increment from 45 to 47
    {% elif odcurrent <= 30 %}
      {{ (47 + (odcurrent - 22.5) * ((50 - 47) / (30 - 22.5))) | round(0, 'floor') }}  # Increment from 47 to 50
    {% elif odcurrent <= 37.5 %}
      {{ (50 + (odcurrent - 30) * ((55 - 50) / (37.5 - 30))) | round(0, 'floor') }}  # Increment from 50 to 55
    {% else %}
    {% endif %}

Table for 3-Step Version

Suggested Temp (°C) Outdoor Temp (°C)
45 ≤ 15
46 18
47 22.5
48 25
49 27
50 30
51 31.5
52 33
53 34.5
54 36
55 37.5


  1. Up to 15°C: Temperature is fixed at 45°C, ensuring high COP at lower temperatures.
  2. 15°C to 22.5°C: Temperature gradually increases to 47°C, ensuring minimal impact on COP.
  3. 22.5°C to 30°C: Temperature increases more significantly to 50°C, balancing efficiency and performance.
  4. 30°C to 37.5°C: Temperature increases to a maximum of 55°C, ensuring sufficient DHW temperature while managing efficiency.
  5. Above 37.5°C: Temperature is capped at 55°C.

I have some thoughts about this…

  1. DHW performance varies hugely depending on how cold the whole tank is before it begins, and it’s exceedingly difficult to measure that. Be careful not to draw any conclusions over a short period. Plotting individual data points and looking for trends would be safest.

  2. DHW COP is best when the tank starts cold, as more time and energy is spent at the lower flow temperatures. So, when the previous DHW cycle is heated the tank up to (say) 50° the COP for the following cycle is likely to be lower, depending on how much of that hot water got used in the meantime.

    I’ve set my system to skip days if tank temperature hasn’t dropped below 25°C.

  3. This means legionella cycles hurts performance twice: first by running the heat pump much hotter, second by the tank still being hot the next day. It will be more efficient to skip heating DHW for a day or two after the legionella cycle, or stop doing any legionella cycles at all.

  4. A hotter tank loses heat faster, so consider if this strategy is actually saving money.

  5. A multi-step algorithm see overly complicated, and could be served just as well with a simple linear relationship. We can see this quite well by looking at COP vs. Flow - Outdoor temperature from both manufacturers datasheet as well as collected data:

Mitsubishi Ecodan 11.2 kW R32 datasheet


OEM Data for Vaillant Arotherm 7kW in Sheffield (link) since 1st Jan 2024

Most relevant range of demand temperatures for this discussion is between 20 and 30°, i.e. when heating water to 45° with an outdoor temperature above 15°. Simplest approach would be to increase target temperature by 1° for each 1° increase in outdoor temperature to achieve the same COP. Perhaps a 1:2 ratio to get higher temperatures and more performance in warm weather. I don’t see the benefit of stepped approach, but perhaps I’m missing something.

I used to heat my hot water to a higher temperature on a sunny day when I had excess solar. I’ve since stopped doing this, and am seeing a higher overall SCOP by simply heating the tank once a day to 45°C.

And finally: warmer days means the central heating isn’t on, so daily COP is crippled by long standby periods and higher flow temperatures for DHW.


I have been experimenting with something similar recently. The main question is - what would you like to achieve? My personal use case is that with a fixed temperature and time schedule for the hot water, I have had DHW cycles at non-optimum times such as right in the morning when it’s still relatively cold or also late in the evening after a shower. So I would preferably have only one DHW cycle at the hottest time of day and charge to a higher temperature to have more effective hot water volume in my tank to last me until the next day. A couple of considerations go into this:

  • Charging offset: As said by @Timbones, a better COP is achieved when starting from a lower tank temperature. Typically when you increase tank temperature, the hysteresis is kept constant, so increasing target by 10 K also starts charging the DHW cylinder from a 10 K hotter tank. For this approach to make sense from a COP standpoint, charging “trigger” temperature should be fixed and independent of the target temperature.

  • Inclusion of forecast data: Would it be preferable to use forecast data to hold off charging the tank until the hottest expected temperature?

  • Smart scheduling of Legionella cycles: As per the very good article linked above, you should question whether you need Legionella cycles. Due to intricacies in my piping (rarely used taps, circulation system) I do want to run the cycles but they should naturally be integrated into the DHW schedule. For example, the target temperature at one day could just be set higher. If recharging is fixed to a constant baseline temperature, there shouldn’t be a second “punishment” for the Legionella cycle COP.

  • Target temperature vs. outdoor temperature: a simple linear function with a high/low constraint would be enough - COP is mostly linear with flow-outdoor temperature and anything more complex would not make sense in my opinion.

There’s probably a lot more going into this and what makes sense and doesn’t depends on what should be achieved with the variable target temperature.


In the situation where demand is higher than the capacity of the DHW cylinder at lower temperatures… Is there an easy way to work out if 2x scheduled DHW reheats in a day to a lower temperature (say 42 degrees) is more or less efficient than a single heat to a higher temperature?

This will be muddied further by your 1 heat up being done in the warm middle of the day whereas with 2x reheats one of these is likely to be at a colder time during the night.

Ignore for now off-peak and agile tariffs and solar production.

1 Like

I’m not 100% sure yet, it’s something that’s bubbling in the back of my head until I find the time to sit down and do the maths on it. I’ll definitely share it once I have a satisfactory solution.


Interesting discussion…… anyone with a carel platform ashp (Sprsun or CoolEnergy) can do weather comp on the dhw from the factory, no need for automation.

Personally I’m a 50deg, 12.5deg hysteresis kind of guy, as we’re under-sized for dhw.

I’ve been testing the automation for increase targets in warmer weather and it’s working quite well. However, I do see a need to look at the logic suggested by @Timbones earlier. Specifically the part about starting heating from lower temps. Therefore, I’ve just added a further step to bypass the inbuilt Vaillant charging offsets which were set at 5K.
I’ve now created a sensor to output a lower limit depending on what month it is. 41C on colder months, 35 on the warmest months and a few in-between at 2C intervals. The previous automation still varies the upper set point so it increases on warmer days. This way I have a difference of 4K on the coldest of days and up to 20k on extremely hot days. There’s also a Legionella cycle that warms to 62C every other Monday at 14:00.
I’ll give that a go to see what it does to the COP during the summer months.

1 Like

Maybe I am different to others.

We find that in the warmer months we don’t need the DHW so hot for baths and showers as we do in the winter.

For me, heating to a lower tank temperature gives a better COP.

I don’t understand why you would heat to a higher tank temperature when it is warmer outside if the aim is improved COP?

Heating to a higher temperature on warmer days would produce hotter water for the same COP, which would be cheaper than heating to that same temperature on a colder day.

If you only want improved COP, then the lowest target would indeed give the best results.

Depends what it is you’re trying to achieve.

This whole experiment started because I have very high usage in my home and due to shift working there’s no standard routine. When the DHW is set at 45 I often see 2 heating phases in a day and one of them is during a cooler period of the day. I’ve tried heating to a warmer temp at 14:00 but the weather isn’t always at its best at this time. This led to a conversation with ChatGPT and it was suggested that I may gain better efficiency by dynamically adjusting the target based on the outside temp. As mentioned by @Timbones, I get the same COP with higher temps on warmer days and only need to heat once. Definitely not for every household but it’s interesting to play around with and having Home Assistant I sometimes can’t resist. Let’s see if the new lower limit helps with longer warm ups.

1 Like

Re: Smart scheduling of Legionella cycles
This is an interesting point. Wonder if I can change my cycle from every 2 weeks at a set time to something like every 14th normal heat cycle or something.

I’m still trying to devise the exact way that this would make sense. For now, I have a different solution that increased COP and only required one charge per day:

  • Keep target temperature constant at 47 °C
  • Set the charging hysteresis to 20 K (maximum Value on Vaillant)
  • Limit DHW cycles to 12-8 pm

One major finding for me was that the tank temperature reported by Vaillant is far below the actual hot water temperature coming out the tap. Right after topping up to 47 °C I’m getting around 56 °C out. This 56°C is very close to the return temperature of the DHW cycle which makes sense. Secondly, as the sensor is located in the lower third of the tank close to the cold water inlet, the measured tank temperature drops much faster than the temperature at the tap. With my current use, a single top-up around noon is sufficient for a full day with multiple showers.

Also, the built-in tank sensor will never reach the desired Legionella cycle temperature, but as the water at the top of the tank is again quite a bit hotter, I can easily use this to “flush” some of my unused taps from time to time. I probably won’t automate the Legionella cycle due to the involved manual steps with opening taps etc.

1 Like

Hi @Andre_K
Can I ask why you set the charging hysteresis to 20 K (maximum Value on Vaillant)? I’ve been playing with this setting but don’t know what impact it makes on my arotherm plus.
I recently watched a HeatGeek video which suggests getting better COP by reducing this as much as possible. It was originally set at 20 so I tried 10, 5, 3 and now 0 but it doesn’t seem to make much difference. When charging it always seems to go to target plus 7 and I’ve been unable to find out what this setting actually does.

It tells your system when to recharge hot water back to your desired target temperature. For me, as my target is 47°C, as soon as the tank hits 27°C (47 °C - 20 K hysteresis) a DHW cycle is triggered. Here you get a better COP the larger the hysteresis value is (you get better COP heating from 25 to 35 °C than from 35 to 45° C)

You might be confusing this with the charging offset, which would set how much higher the flow temperature should be compared to the current tank temperature. This setting exists in the VCR720 controller but is not respected by the heat pump, so setting this would change nothing. A lower charging offset would in theory improve COP.

Yes, sorry, I was confusing this with the charging offset. Shame it does nothing though.

Yes, I think there would be quite some potential for improved COP with a lower offset. Especially in summer I don’t care how long a DHW cycle takes. However, with the 20K hysteresis and 47°C target I’m now getting a COP of 3.3 at 15°C outdoor temperature which is quite OK.