đŸ”„ Advanced Heating Control

You should make 2 automations. One for summer/cooling and one for winter/heating.

You can use the [On/Off Automation Options]> [Winter Mode / Automation Toggle] to alternate between them. (one of 2 inverted).

I also made 2 automations that do the switching of the wintermode for me. (if temp is below treshold for 60min > wintermode on & if temp i above 23 for 60 min > wintermode off)

That is a good option until I find a better solution.
In my situation it means 12 automations for heat and cooling.

Thank you for the idea

Hi, first of all, thank you for the great blueprint. The functionality is great, and I was able to activate a schedule, window and door detection, comfort and eco temperatures for each room, winter and party mode without any problems. It’s terrific to have all that in one blueprint.

However, it seems that calibration does not work, so that rooms are generally too cold. I’m using Danfoss Allys which are claimed to be supported, and external Aqara temperature sensors, both integrated via ZHA. The Allys are using an integrated quirk that seems to have come with one of the recent HA updates.

It seems that the Allys have actually never received a calibration value. I’m reading out the AHC values via a sensor, and the last_calibration value is just empty. Is there anything else that I have to set up other than the AHC integration (of course I have specified the external temp sensor there)? I believe that a separate automation that writes external temperatures onto the Ally is not needed when AHC is used, right?

I am using a calibration timeout of 1 minute and a delta of 0.5 °C. Often, the external and internal temperatures are way off, and most of the time the external temperature doesn’t change at all over half an hour or several hours, so timeout and delta should not be a problem. I have tried both covered and uncovered modes in the TRV (quirk) settings, with no noticeable change in behaviour.

What else can I try? Your help is much appreciated - thank you very much!

P.S.: Here’s the latest trace: https://controlc.com/24a4ca34

Yes, just setup the uptime integration. :wink:

Right!

Could you paste this into the template editor, edit the climate entity to yours and post the output here?

{% set climate = 'climate.YOUR_CLIMATE_ENTITY'%}

{{ device_entities(device_id(climate)) |
      expand | selectattr('domain','in','number') |
      map(attribute='entity_id') | list }}

Could you check

Sure. Here’s the output:

Ergebnistyp: list

[
  "number.thermostat_bad_regelungssollwert_offset_2",
  "number.thermostat_bad_min_heizungssollwertgrenze_2",
  "number.thermostat_bad_max_heizungssollwertgrenze_2",
  "number.thermostat_bad_laderaummittelwert_2",
  "number.thermostat_bad_externer_temperatursensor_2",
  "number.thermostat_bad_beginn_der_ubung_2"
]

Dieses Template ĂŒberwacht die folgenden Ereignisse, die einen Zustand Ă€ndern:

    EntitÀt: binary_sensor.thermostat_bad_montagemodus_aktiv_2
    EntitÀt: binary_sensor.thermostat_bad_vorheizstatus_5
    EntitÀt: binary_sensor.thermostat_bad_warmebedarf_2
    EntitÀt: button.thermostat_bad_identifizieren_2
    EntitÀt: climate.thermostat_bad_thermostat_2
    EntitÀt: number.thermostat_bad_beginn_der_ubung_2
    EntitÀt: number.thermostat_bad_externer_temperatursensor_2
    EntitÀt: number.thermostat_bad_laderaummittelwert_2
    EntitÀt: number.thermostat_bad_max_heizungssollwertgrenze_2
    EntitÀt: number.thermostat_bad_min_heizungssollwertgrenze_2
    EntitÀt: number.thermostat_bad_regelungssollwert_offset_2
    EntitÀt: select.thermostat_bad_anpassungslaufbefehl_2
    EntitÀt: select.thermostat_bad_blickrichtung_2
    EntitÀt: select.thermostat_bad_sollwert_reaktionszeit_2
    EntitÀt: select.thermostat_bad_tastatursperre_2
    EntitÀt: select.thermostat_bad_trainingstag_der_woche_2
    EntitÀt: select.thermostat_bad_ventilausrichtung_2
    EntitÀt: sensor.thermostat_bad_batterie_2
    EntitÀt: sensor.thermostat_bad_hlk_aktion_2
    EntitÀt: sensor.thermostat_bad_lastschatzung_2
    EntitÀt: sensor.thermostat_bad_lqi_9
    EntitÀt: sensor.thermostat_bad_motorschrittzahl_2
    EntitÀt: sensor.thermostat_bad_offenes_fenster_erkannt_2
    EntitÀt: sensor.thermostat_bad_pi_warmebedarf_2
    EntitÀt: sensor.thermostat_bad_quelle_der_sollwertanderung_2
    EntitÀt: sensor.thermostat_bad_rssi_9
    EntitÀt: sensor.thermostat_bad_softwarefehler_2
    EntitÀt: sensor.thermostat_bad_status_des_anpassungslaufs_2
    EntitÀt: sensor.thermostat_bad_vorheizzeit_5
    EntitÀt: switch.thermostat_bad_anpassungslauf_aktiviert_2
    EntitÀt: switch.thermostat_bad_externen_temperatursensor_priorisieren_2
    EntitÀt: switch.thermostat_bad_externer_fenstersensor_2
    EntitÀt: switch.thermostat_bad_interne_fenstererkennung_verwenden_2
    EntitÀt: switch.thermostat_bad_lastausgleich_verwenden_2
    EntitÀt: switch.thermostat_bad_montageart_2
    EntitÀt: switch.thermostat_bad_warme_verfugbar_2
    EntitÀt: update.thermostat_bad_firmware_2

Thanks again!

The automation is looking for the default exposed entity ids in your case the calibration entity needs to match the keyword external. If you put external anywhere in the following entity_id number.thermostat_bad_externer_temperatursensor_2 like number.thermostat_bad_external_temperatursensor_2 it should work as expected.

But if you like I will make this editable in the next release.

Anyone using this blueprint with tado? How should I setup? Offset? Tado integration? Tado app should be empty with no heating setting?

Thank you, this might help. However I will try your solution in the mean time. So if I understand correctly, the whole thing is “disconnected” because the “standard” entities of the Danfoss device got translated into German when I recently added this device. Do I need to “translate back” any other entities to ensure complete functionality of the blueprint, or just the single one you mentioned, given the fact that all my entities currently have German names?

Thanks again very much for your help!

@panhans
Can you explain to me why this is necessary or what advantage I gain from it? The system time is already stored. What is an uptime entity needed for?

Hi,
could you please explain the “physical temperature change” feature? I can see that the temperature is changed according to input from the thermostat, but how/when is it supposed to reset? When using the feature while ECO is set I notice that the thermostat is set back to ECO after a short while.

Thanks

can confirm Bosch radiator thermostat 2 calibration works with ZHA out of the box also

2 Likes

Hi
I get warning (from spook tool) that the automation references an action that HA doesn’t recognize.
I am not using Tado TVR. Is this a bug or can it be ignored or rectified?

(automation.advanced_heating_control_l1)

  • tado.set_climate_temperature_offset

The uptime integration provides a sensor with the timestamp of the last start of home assistant.
Home Assistant updates every entity with every restart so the last_changed attribute is at least the ha start timestamp.
Without knowing the actual ha uptime timestamp the automation waits after every restart until the durations ran out.
Let’s say you set the duration for presence activation to 5 min. Before restarting ha the presence detection is already on. After a restart the automation waits again for 5 min until the target temp will be set to comfort temp. With the uptime sensor the automation checks wether home assistant just started at kicks in heating without waiting the additional minutes.

There is no need to setup this integration. It’s just a recommendation.

In case of physical change feature I would recommend to disable reset temperature and set a reset of the temperatures by setting up an entry of the heating adjustments at night or so.
I will add this to the warnings if it’s configured like this.

It’s mentioned in the initial post under FAQ. You can ignore this warning.

Unfortunately, still doesn’t work. I have renamed my Ally’s entity to “number.thermostat_bad_external_temperatursensor_2”.

  • I should see a time stamp in the “last_calibration” section in my AHC sensor, right? That’s still empty.
  • The current temperature that’s measured by the external sensor should be written onto that entity “number.thermostat_bad_external_tempertursensor_2”, right? That just doesn’t change.

@ panhans

@CarstenJ
Could you lower the temperature delta and heat up the sensor a little bit, e.g. by holding it in your hands in order to trigger the calibration?

@Ohana_Means_family
Could you upload and share the trace log where you get the warning/error?

Hello everyone,

I have reworked the complete code base the last few days, adjusted the selectors and added some minor functions and improvements such as

  • aggressive mode over calibration
  • automatic setting for Aqara/Xiaomi thermostats for external calibration

The new code base should serve for further features and make maintenance and troubleshooting much easier.

I have also changed the file name and recommend that you setup the automation from scratch as a few selectors have changed.

If you want, you are welcome to test it and give feedback.
Thanks to all!

Links:
Advanced Heating Control v5 RC
AHC Template Sensor v5

Fixes

  • rc1_a: fix aggressive mode calibration & update template sensor
  • rc1_b: fix setting target temp when adjustments are defined
1 Like

Thanks for the reply. I didn’t set “reset termperature” however. I would really appreciate if you could comment on the way the “physical termperature change” feature is designed to work.

Thanks so much.

can you put it please into the dev version?

1 Like

@jonathanarcher

You need to setup entities for comfort or eco temperature. When changing the temperature over the thermostat card or the device the corresponding temperature entity gets set to the new target temperature. If comfort mode is currently active the entity for comfort temperature will be taken if not the eco temperature.
This triggers the automation again to change alle other thermostats to the new target temperature. This feature should be more robust in the current test version than in v4.

@stephanschleichstr13
Done!

1 Like