Improve efficiency: Turn the heat pump off

You’ll want to be consider the house temperature too, and keep it running if it’s too cold, and only attempt to optimise COP when warm enough. Otherwise you’ll get complaints…

I wait for the compressor to turn off naturally, and then I keep it off for ten minutes before allowing it to turn back on (if it wants to). See this thread for more on turning of heat pump between cycles:

I know what I’m about to say sounds ridiculous:

I don’t take the house / room temperature into consideration.

My old oil boiler from the 1980’s just used the return temperature as it’s guide. When that got high it stopped heating. Stupidly simplistic.

I was somewhat surprised to see this mechanism worked with the heat pump too.

1 Like

Fairy nuff. Do you need to keep the pumps running so you can measure the rad temps at the return sensor? Or do you find the sensor point loses heat at the same rate while the water is stationary?

I’ve heard that Ecodan’s auto-adapt feature keeps the pumps running for this purpose.

Again, I’m going to say something ridiculous:

The pumps are too noisy.

Clearly they aren’t really, but it’s so quiet where we live you can actually hear the glycol moving around and about 2% of the time it’s distracting.

It turns out there’s no real benefit to pumping the water around if it’s not getting heated, we may as well just let it settle and slowly warm up the place it’s in. The radiators in our house are a bit like having a big warm dog in the room. We’re treating the volume of the radiators like a buffer tank, the heat pump pushes water into them and then it heats up the building. We’re pretty open-plan so we can get away with it because we don’t get one room being very different from the others.

I’m surprised it doesn’t affect the comfort much. I suspect it’s because we turn the heat off pretty quickly so it doesn’t have time to overwhelm the room. I’ve certainly noticed that when it’s running continuously the rooms get oppressively hot.

I did some ad-hoc experimentation where I measured the radiator temps dropping and it was close enough to the fixed “return temp” sensor that I felt OK using it as a proxy.

Anecdotally I have a radiator about 300mm from my chair in my office. I lie my arm on it to warm up. When I find myself thinking “ooh, that’s getting a bit too chilly” I go to nudge the heat pump only to find that the algorithm has just turned it on or was about to in the next couple of minutes.

I believe that it’s all down to the magic numbers in the code which makes me sad. I want it to be more robust so it handles disruptions better.


You’re not wrong. Our “plant room” is the old airing cupboard at the top of the stairs, so the noise of pumps carries around the house. I had the installers reduce primary pump speed down to 3 because of the noise, which helps. I certainly wouldn’t want them running all the time when not needed.

My return sensor seems to cool down slower than the rest of the system, hence why I’ve gone for a fixed 10 minute pause between cycles.

Slightly off topic: Today I discovered a setting on the Ecodan called “Quiet Mode”, but there’s precious little information about it online. I think it’s limits the maximum power it will go up to, which might be worth playing with instead of trying to control flow temps. Can be set to a schedule, or all the time.


It turns out the opposite seems to be true for me! Probably because some of the radiator pipework is insulated outside the living areas. So, the auto adapt mode is beating my best algorithm (cop about 4 vs 3.6) because it can run the circulation pump without the heat pump for 20-40 minutes a go, which I don’t think I can over melcloud.

The smart control now only decides when to reduce setback, provides remote control and feeds emoncms.


BTW the FTC5 does not have the “Heat Pump Settings” entry in the service menu.

I followed this guide and it’s not in there.

BTW there’s a nice person called “mjr” over in those forums :slight_smile:


That is literally one of the two references I managed to find (the other also on same forum), but it doesn’t explain what the 3 available levels do. Maybe I’ll just have to try it out and see for myself…
(it’s an FTC6 feature).


It’s in Service not Initial Settings on mine. It’s definitely there for me. It’s also shown in the instruction manual. I’m pretty sure mine is an FTC5.

However, I’m still not entirely sure what the underexplained settings do in practice!

I don’t remember whether “Quiet mode” is among them on the FTC5.

Him? He’s a damned nuisance because he keeps popping up in my search results when I’m trying to figure out how these heat pumps work!


I am interested in this topic, and getting to a provable conclusion. With heat pumps the variables are more nuanced, and “comfort factor” is difficult to measure. However, if we look at a simpler, and similar in principle situation it is clearer to understand.

If you have to drive 300 miles and get there in 6 hours, you can do one of the following.

  • drive @50mph without stopping
  • drive @100mph with 3 hours of total breaks and 3 hours of total driving.

Both get you there in 6 hours, one using quite a bit more fuel than the other.

Finding equivalent parameters for running a heatpump would be useful.


Continuing on this topic. If you equate the heat delivered into the house as the “distance traveled” and mpg as the equivalent of cop. Delivering the same amount of heat in shorter period of time likely requires higher flow temperatures.

It is more likely that “user experience” is more equivalent to the “distance traveled”, but the user experience is not easily measured.

The point here being, that we are likely not comparing apples with apples, when comparing heating always one, with heating that is scheduled.

1 Like

Luckily I have a magic solution for that.

I have users in my house that feed back their experience. When I push things too far they tell me.

For example, when the heating was running for four hours continuously they didn’t notice the difference to a normal day where the heating goes on and off.

I’m going to ruin your analogy by saying it’s like driving at 100mph and then coasting with the engine off. It transpires that in my old Ford Focus it was clever enough to shut off fuel to the engine if you were decelerating a certain amount.

However, silliness aside, it is difficult to get across the ideas and the behaviours. That’s why I built my app to run these experiments so I could see the changes.

For example, in the last few days I’ve been playing with the pump speed. It’s normally at 5 and is fine. I dropped it to 3 and it sorta seemed to be marginally better. I dropped it to 1 and things got bad pretty quickly.

Here is how bad it got at 1:

Specifically you can see the gold line which is what Mitsubishi think the efficiency should be.

Here we are when the pump speed is 3:

On the surface it looks worse because the efficiency is lower. However, the outdoor temperature changed so actually relative to the gold line we’re doing much better. It’s a bit like comparing mpg on the flat versus comparing mpg on a hill.

The last three years have left me in position where I’m shrugging because there are so many variables and my algorithm is now so complicated I can’t see how a manufacturer can ship something that’s “optimal”. For a simple example, mine knows to turn itself off when there will be solar gain because I’m seeing the sun come out using my solar panels. It’s just so very tangled I don’t see a good way out of this at the moment.


I too have been experimenting with pump speed recently. It was set to 3 in order to reduce the noise, but I’ve been wondering if it would perform better at a higher speed (from 14 ltr/min to 16 ltr/min). Results are inconclusive so far.
(5 is the default for all the pumps, so one presumes that’s what the manufacturer recommends)

I’m sure there’s some good theory (e.g. John heating simulator) on how to choose the best pump speed, but I can’t get my head around it.

I’d recommend checking the flow rate you’re getting by going into the “Running Information” screen and entering 5 4 0 to get litres/minute. Check this against the minimum spec for your model. (Ecodan_ATW_Databook_R32 says 17.9 to 40.1 for PUZ-HWM140VHA). Heat pump won’t be happy outside of this range.

1 Like

Tim, thanks for taking time to format that, it really helped make it clear what I needed to do when I got to that screen for the first time ever.

On my system pump speed 3 = 21L/min and pump speed 5 = 29L/min.

I thought we’d hit on something good when I lowered the pump speed, but I came to the system this morning to find this situation:

What’s happening is that it’s running smoothly and the limited amount of heat means it’s not getting up to my “it’s too hot for too long” threshold. Admittedly the house is a smidge toastier than normal, in fact it’s a bit too hot, but that might be the thermal gain just kicking in.

It’s produced the same amount of output as a normal day, but using on-and-off I would have used less input and seen about 340% efficiency. That 272% with constant-running is quite eye opening. Anything less than 300% makes me wonder what is broken.

So let’s say the “what’s broken” is that the external temp was below zero (which is not terribly common in the UK).

There is something interesting in the data. After 09:30 it managed to modulate down to 1.6kW, I think I’ve only ever seen it go down to 1.8kW before. However, more interestingly I should mention that I very rarely see power consumption gently drop like that so this maybe you all are able to run-continuously. At one point the output was down to 4.9kW which is very low compared to the typical “I’ve got to be like a volcano” you see from my system.

I panicked and moved the pump back to 5, but after reviewing this data I’m willing to keep trying the experiment with the pump speed at 3 ( = 21L/min) to see how it goes.

The defrosts are complicating things, we can see the power consumption rising just before they happen, but it’s good to see it sorting itself out.

1 Like

I don’t think it ruins it, just highlights the complexity of the variables (as you pointed out). I am trying to leverage this “coasting” by “charging” the 4.5 cubic meters of concrete making up part of the downstairs flooring.

If I happen to do a long run in the morning, the house is too warm for me until about lunch time, not so if I don’t [go for a run], so user experience has external factors that are difficult to control for.

I would like to find a simple set of metrics to target or a good model with those metrics to use to ascertain the differences between always on, vs on a cycle.

1 Like

I’m using the Ecodan Demand Management Input to do deal with solar gain - just turn the heat pump off if the room gets above 21C. But that can’t cope with the opposite problem I have on windy days!

I spent my first few working years doing, amongst other things, control systems for ICI (a big chemical company for those not old enough to remember :slight_smile: ). If I was faced with this problem I would use a cascade type controller.

It would take the weather compensation curve as the primary set point and modify it with a primarily integral action control signal from the target room temperature. The latter would have to be quite a slow loop given the ‘house intertia’. So if my Compensation curve is targeting a flow temperature of 35C, but the room temp is below setpoint, the cascade loop would be slowly integrating an increase in the flow temperature setpoint and vice versa.

The clever bit that OEMs should do is make that a self-learning algorithm so that normal mortal home-owners don’t have to fiddle endlessly! (maybe that’s what the Ecodan auto-optimising stuff is meant to do, but it doesn’t work for me.)



@Rachel you might enjoy this bit where we chatted about using an accumulator in a similar fashion.

I have a sort of magic solution for that which might help you, I use the effective temperature for my weather compensation so it takes into account the wind cooling my house down:

1 Like

@MyForest my issue at the moment is how to get into the Ecodan controls. The ‘all weather’ variable including wind speed is a nice thing, but i guess not easily replicable.

I could programme the cascade loop in NodeRed or maybe directly in an Arduino (which I’m already using for flow monitoring), but i dont have the time/skills to work out how to interface with the FPC unit or API. There is a NodeRed MelCloud interface, but its designed for air/air a/c units. I use it to read the ASHP temperatures, but haven’t worked out if/how i could write a target flow temperature.

I’ve never programmed in Python and don’t really have the time to learn, so i think going directly via modbus is not an option!


Hi @Rachel

You could use my existing script to do it, but the risk is that it would stop working one day for some reason and you wouldn’t be able to recover.

Here’s an example where it’s just using a command line with no programming. It put things in a temp directory to avoid it messing up your machine. However, it would involve installing new packages which might mess up your machine so be thoughtful about that (I just do everything in a container).

$ cd $(mktemp -d)
$ git clone
$ cd heatpump-act/act/
$ python -m pip install python-dotenv structlog typer urllib3
$ python --help
Usage: [OPTIONS]

  Instruct the heatpump to alter a setting.

  --name TEXT             Setting name  [default: SetTankWaterTemperature]
  --value TEXT            Setting value  [default: 48]
  --message TEXT          [default: Specified on command line]
  --source TEXT           [default: AlterSetting.main]
  --shoosh / --no-shoosh  [default: no-shoosh]
  --help                  Show this message and exit.
$ export DEVICE_ID=<your-device>
$ export MITS_CONTEXT_KEY=<your-key>
$ python --name SetHeatFlowTemperatureZone1 --value 35

Which gives all this output, specifically it shows your update worked:

2023-03-08 11:09:08 [info ] Sending update…
2023-03-08 11:09:08 [info ] b’{“EffectiveFlags”:281474976710656,“LocalIPAddress”:null,“SetTemperatureZone1”:26.0,“SetTemperatureZone2”:20.0,“RoomTemperatureZone1”:20.0,“RoomTemperatureZone2”:-39.0,“OperationMode”:2,“OperationModeZone1”:1,“OperationModeZone2”:2,“WeatherObservations”:,“ErrorMessage”:null,“ErrorCode”:8000,“SetHeatFlowTemperatureZone1”:35.0,“SetHeatFlowTemperatureZone2”:20.0,“SetCoolFlowTemperatureZone1”:20.0,“SetCoolFlowTemperatureZone2”:20.0,“HCControlType”:1,“TankWaterTemperature”:14.5,“SetTankWaterTemperature”:10.0,“ForcedHotWaterMode”:false,“UnitStatus”:0,“OutdoorTemperature”:3.0,“EcoHotWater”:true,“Zone1Name”:null,“Zone2Name”:null,“HolidayMode”:false,“ProhibitZone1”:false,“ProhibitZone2”:false,“ProhibitHotWater”:false,“TemperatureIncrementOverride”:0,“IdleZone1”:false,“IdleZone2”:true,“DemandPercentage”:100,“DeviceID”:,“DeviceType”:1,“LastCommunication”:“2023-03-08T11:08:49.214”,“NextCommunication”:“2023-03-08T11:09:49.214”,“Power”:true,“HasPendingCommand”:false,“Offline”:false,“Scene”:null,“SceneOwner”:null}’

2 posts were split to a new topic: eBus reader