Monitoring & Controlling Ecodan via CN105

But you still need a stop condition. You could play with CNRF, It will turn off the heatpump, but it’s quite slow. The resolution is also 0.5c, so not ideal

Else you still need some script running to check if setpoint has been reached and turn off heating. But this is not ideal since it will disable learning when heating is off (and you want it to learn to lower the offset).

Can you post a graph of the offset for the last 2 days ? I want to see if it actually is dropping

Between Fri and Sat I had max temp set at 35°C. Then set to 40°C Friday evening as a test and after that i played with settings to get it lowered again. After Saturday my setpoint has been lower than current room temperature, but still feed temp increased.

You can read here how the offset reacts on error and overshoot Using Auto Adaptive (tips/tricks/feedback) · gekkekoe/esphome-ecodan-hp · Discussion #194 · GitHub

It’s also good to read the rest of the tips and tricks I wrote down in that thread.

The problem with your current setup is that there’s no window for it to go down except for the decay/efficiency probe.

Normally when a room is heated (and over setpoint) it will correct downwards.

can you also plot the current room temp and setpoint ?

Yes I have read that, would like to get it going first and then start tuning. Do you think that it works without a thermostat? Is it possible to reset the progress? Then I could start over and have a lower room setpoint than current temperature and see what it does.

Can try to plot later, some disturbance in my chart when I tested different things.

the latest version allow you to edit the offset (will be removed later)

Now I started it again and set the offset to 28 deg. The top values circled in red, doesn’t change with my virtual setpoint and room feedback.

Not allowed to post so here is a EDIT:

Was able to change room setpoint from “Room Temperature”, maybe I never tried that before. When changing temp setpoint from another template it doesn’t sync the other way.

Some graphs, seems like it’s following outside temp but inverted. Will keep it activated and see how next night goes.

Average Indoor is same as Auto adaptive temp (did a restart so messed up the chart once)

you don’t have a thermostat mapped, so there will never be a current value (top one). The current temp is only shown when there’s an thermostt mapped on your MRC.

The room feedback is used instead when selecting home assistant / rest api. The 2nd red circle can be changed, see step 2+2 hoe to sync to target (setpoint).

new release:

  • upgraded to esphome 2025.10.4
  • AA: Add alternative heating strategy: Delta T control. Please test/use/migrate to this strategy, it will replace the self learning curve in the next release. It should have superior performance. use the simulator to choose the correct profile
  • AA: Delta T, handle defrost weather by reducing delta T to minimum of the selected profile
  • AA: Ensure auto adaptive loop (if enabled) is executed on compressor off → on transition
  • AA: Use z1/z2 return temp instead of primary when using multi zones
  • Short cycle: handle lockout restore periodically, fixes lockout state stuck when rebooting during lockout
  • AA: Derive max error range from floor type, ufh = 1.5, hybrid = 2.0, radiator = 2.5
  • AA: Handle predictive cycle boost when using Delta T strategy
  • Add Pump consumption, speed setting

More details about delta T: Using Auto Adaptive Delta-T (ΔT) Control · gekkekoe/esphome-ecodan-hp · Discussion #214 · GitHub

  • Upgraded to esphome 2025.10.5
  • AA: Remove self-learning curve, it has been replace with the delta T method
  • AA: Use the outside temp to increase the min delta T when its really cold
  • When exiting a lockout, use the current dhw prohibit state
  • AA: don’t calculate flow temp when not heating/cooling
  • AA: Fix applying predictive boost, this needs to be done AFTER rounding, but BEFORE apply limits
  • Expose configured master room sensor for z1/z2
  • AA: Tweak max error ranges
  • AA: Implement smooth step 6x⁵ - 15x⁴ + 10x³ 3x² - 2x³ instead of x*x as error factor
  • AA: Allow a linear error profile for more direct response
  • AA: Remove overshoot compensation, is not needed for delta T method
  • AA: Add binary sensor to show when a temp boost is active
  • Proxy: Hide server control status from slave adapter
  • AA: Keep newly calculated setpoint max 1.5c below current setpoint
  • AA: Always enabled detailed AA logging
  • AA: Store last defrost in nvs
  • Fix incorrect independent z2 classification (in case of single zone and buffer tank)
  • AA: Always calculate flow temp for multi-zone systems when one of the circulation pump is operating
  • Proxy: fix retry handling when re-using a connection

A few updates available to my Home Assistant & MELPump users too,

  • Can now auto detect & select Outdoor Unit Capacity (via Service Code)
  • Renamed TH32 to “Water Inlet Temperature” (fixed missing data if available on your unit)
  • Can provide information on the MELCloud Adapter Status (MELCloud Adapter Connected + MELCloud Online/Offline) if using in parallel
  • Glycol default changed to 0% (first time setup)
  • Adds 23kW unit size option
  • Adds Dip Switches to HA
  • Adds Outdoor unit firmware version
  • Adds PWM Setting for Primary Water Pump

MELPump users will be getting the update automatically over the coming days in a phased rollout.

More updates in the works - happy heating season everyone! :slight_smile:

1 Like

I’ve not noticed that behaviour on an FTC5 MRC. It seems unlikely that it would enforce the DHW limit because it’s fairly annoying to change on the MRC, several layers deep in the interface, so I don’t think Mitsubishi expect it to change often. My Domoticz often sets lower DHW targets when electricity is too expensive and I haven’t noticed them being reset to 40, but I don’t touch the MRC much so I’ve not definitely tested this. I will try to remember to press the MRC the next time I’m at home with time to test during a peak rate and check what happens!

It will reset into the 40-60 range, had multiple reports of it already

  • Merge short cycle into auto adaptive yaml. (update your ecodan-esphome.yaml.
  • AA: Allow different heating min/max flow limits for z1/z2
  • Predictive: Make high delta T threshold configurable [1 - 3] in steps of 0.5c
  • Experimental: Allow 0.1c resolution in climate and AA flow setpoints. (The official AA also does 0.1c during AA)
  • Fix incorrect last_defrost_time init value, causes incorrect defrost handling
  • AA: Allow defrost mitigation to be turned off (default on)
  • AA: Limit max step down step size to 1.0c (was: 1.5c), Also monitor on change feed temp to ensure limits are enforced
  • AA: When we are nearing setpoint (0.5c), lower effect of cold factor

@F1p I’ve had all sorts of issues today with various things using MQTT. I’ve mostly resolved these (still not really sure what happened). But in the process I have spotted an issue with CRNF to MQTT in Home Assistant.

I keep getting the following:

Any ideas what I’ve done?

  • upgrade to esphome 2025.11.1
  • fix build for single core esp32 configurations
  • AA: tweak UFH profile to be more aggressive when its colder or error is high
  • AA: use linear cold factor instead of quadratic (it will have more impact when it gets colder)
  • AA: run auto adaptive every 5m instead of 10m
  • AA: remove soft landing when approaching set point (is automatically modeled in cold factor)
  • AA: After defrost, recover gradually from min delta T to calculated delta T (if defrost mitigation is enabled)
  • AA: Prevent compressor stop when switching from DHW to heating
  • remove proxy response caching

new features explained: Using Auto Adaptive Delta-T (ΔT) Control · gekkekoe/esphome-ecodan-hp · Discussion #214 · GitHub

Were you sending a change in thermostat mode from Home Assistant?

Or is it with the status from the adapter being “Heating” rather than “heating” which HA accepts?

It appears to be every couple of seconds I get the warning when a message comes in on MQTT and Home Assistant tries to process it.

2025-11-26 11:40:05.172 WARNING (MainThread) [homeassistant.components.mqtt.climate] Invalid ['cooling', 'defrosting', 'drying', 'fan', 'heating', 'idle', 'off', 'preheating'] action: {"QTY":7,"Power":"On","SystemOperationMode":"Heating","Zone1OperationMode":"Heating Fixed Flow","Zone2OperationMode":"Heating Auto Adapt","TimerProhibit":"None","Z1ActiveInput":1,"Z2ActiveInput":1,"Z1Setpoint":20.5,"Z2Setpoint":0,"ErrorCode":0,"DHWForce":"Off","Holiday":"Off","HolidayHrs":0,"RC1Input":20,"RC2Input":21.9,"RC3Input":21.4,"RC4Input":21.2,"RC5Input":20.9,"RC6Input":21.2,"RC7Input":19.8,"RC8Input":18,"HB_ID":0}

2025-11-26 11:40:08.154 WARNING (MainThread) [homeassistant.components.mqtt.climate] Invalid ['cooling', 'defrosting', 'drying', 'fan', 'heating', 'idle', 'off', 'preheating'] action: {"QTY":7,"Power":"On","SystemOperationMode":"Heating","Zone1OperationMode":"Heating Fixed Flow","Zone2OperationMode":"Heating Auto Adapt","TimerProhibit":"None","Z1ActiveInput":1,"Z2ActiveInput":1,"Z1Setpoint":20.5,"Z2Setpoint":0,"ErrorCode":0,"DHWForce":"Off","Holiday":"Off","HolidayHrs":0,"RC1Input":20,"RC2Input":21.9,"RC3Input":21.4,"RC4Input":21.2,"RC5Input":20.9,"RC6Input":21.2,"RC7Input":19.8,"RC8Input":18,"HB_ID":0}

2025-11-26 11:40:08.158 WARNING (MainThread) [homeassistant.components.mqtt.climate] Invalid ['cooling', 'defrosting', 'drying', 'fan', 'heating', 'idle', 'off', 'preheating'] action: {"QTY":7,"Power":"On","SystemOperationMode":"Heating","Zone1OperationMode":"Heating Fixed Flow","Zone2OperationMode":"Heating Auto Adapt","TimerProhibit":"None","Z1ActiveInput":1,"Z2ActiveInput":1,"Z1Setpoint":20.5,"Z2Setpoint":0,"ErrorCode":0,"DHWForce":"Off","Holiday":"Off","HolidayHrs":0,"RC1Input":20,"RC2Input":21.9,"RC3Input":21.4,"RC4Input":21.2,"RC5Input":20.9,"RC6Input":21.2,"RC7Input":19.8,"RC8Input":18,"HB_ID":0}

Thanks, i think it needs removal of the capital letter in operation mode string
I will update the CNRF GitHub

Excellent, thank you.

Updated the CNRF project for with a proposed fix

1 Like