🔥 Advanced Heating Control

Yes, this is no official service. But as far as I know a custom integration is the only way to calibrate the tado thermostats since the official one does not support tado calibration.

Ah, okay. Thanks for the hint. That wasn‘t apparent for me.

Now it works again. Thanks a lot!

Could it be, that in v4.02 something’s wromng with the presence detection? I have a dummy person wich state is set, wenn me and my wife both are away. So in the AHC the duration for leaving home is set to 1:30 h

But it seems, that die automation set to minimum temp earlier.
Traces can be found here again

Hey list, thanks for that automation blueprint, it works quite well with my no name zigbee TFRs (aqara style) and the feature set is also quite nice. However, the watchman service and the spook integration are complaining about a non existent service:

+--------------------------------+---------+--------------------------------------------------------------+
| Service ID                     | State   | Location                                                     |
+--------------------------------+---------+--------------------------------------------------------------+
| tado.set_climate_temperature_o | missing | blueprints/automation/panhans/heating_control.yaml:887       |
| ffset                          |         |                                                              |
+--------------------------------+---------+--------------------------------------------------------------+

even, this is probably just cosmetics, but could be also the source of some malfunctioning? I couldn’t find any information on that in this thread, but I don’t have any tado devices and was asking myself if I can just comment that section out?
Thanks and keep up the work on this :wink:

Ah, yes. There is something missing in the logic. When automation gets triggered by another trigger this condition is ignored.

You could go with an input_boolean for guest mode. Toggle it to on if you and your wife are away and toggle it off after 1:30 h meanwhile.

@DrBando

just three posts above. :wink: Will add this to the FAQ.

1 Like

Yep, there’s an input number for comfort temperature set which I update through an automation when the temperature of the TRV is changing.

The automation itself:


alias: "Heizung: Komforttemperatur Input Number aktualisieren"
description: ""
trigger:
  - platform: state
    entity_id:
      - climate.trv_wohnzimmer
    attribute: temperature
    id: wohnzimmer
    for:
      hours: 0
      minutes: 0
      seconds: 0
  - platform: state
    entity_id:
      - climate.trv_cl
    attribute: temperature
    id: cl
    for:
      hours: 0
      minutes: 0
      seconds: 5
  - platform: state
    entity_id:
      - climate.trv_flur
    attribute: temperature
    id: flur
    for:
      hours: 0
      minutes: 0
      seconds: 5
  - platform: state
    entity_id:
      - climate.trv_kueche
    attribute: temperature
    id: küche
    for:
      hours: 0
      minutes: 0
      seconds: 5
  - platform: state
    entity_id:
      - climate.trv_bad
    attribute: temperature
    id: bad
    for:
      hours: 0
      minutes: 0
      seconds: 5
  - platform: state
    entity_id:
      - climate.trv_schlafzimmer
    attribute: temperature
    id: schlafzimmer
    for:
      hours: 0
      minutes: 0
      seconds: 5
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - wohnzimmer
        sequence:
          - service: input_number.set_value
            metadata: {}
            data:
              value: "{{ state_attr(\"climate.trv_wohnzimmer\", \"temperature\")}}"
            target:
              entity_id: input_number.heizung_komforttemperatur_wohnzimmer
      - conditions:
          - condition: trigger
            id:
              - cl
        sequence:
          - service: input_number.set_value
            metadata: {}
            data:
              value: "{{ state_attr(\"climate.trv_cl\", \"temperature\")}}"
            target:
              entity_id: input_number.heizung_komforttemperatur_cl
      - conditions:
          - condition: trigger
            id:
              - flur
        sequence:
          - service: input_number.set_value
            metadata: {}
            data:
              value: "{{ state_attr(\"climate.trv_flur\", \"temperature\")}}"
            target:
              entity_id: input_number.heizung_komforttemperatur_flur
      - conditions:
          - condition: trigger
            id:
              - küche
        sequence:
          - service: input_number.set_value
            metadata: {}
            data:
              value: "{{ state_attr(\"climate.trv_kueche\", \"temperature\")}}"
            target:
              entity_id: input_number.heizung_komforttemperatur_kuche
      - conditions:
          - condition: trigger
            id:
              - bad
        sequence:
          - service: input_number.set_value
            metadata: {}
            data:
              value: "{{ state_attr(\"climate.trv_bad\", \"temperature\")}}"
            target:
              entity_id: input_number.heizung_komforttemperatur_bad
      - conditions:
          - condition: trigger
            id:
              - schlafzimmer
        sequence:
          - service: input_number.set_value
            metadata: {}
            data:
              value: "{{ state_attr(\"climate.trv_schlafzimmer\", \"temperature\")}}"
            target:
              entity_id: input_number.heizung_komforttemperatur_schlafzimmer
mode: parallel
max: 6

Part of the automation config:

trigger_variables:
  input_mode_winter: input_boolean.hauptschalter_heizung
  input_mode_party: timer.heizung_partymode_wohnzimmer
  input_mode_guest: null
  input_force_max_temperature: null
  input_temperature_comfort: input_number.heizung_komforttemperatur_wohnzimmer
  input_temperature_minimum: null
  input_time_based_temperature_change_valve_target: '[]'
  input_schedulers:
    - schedule.heizung_schedule_bad_u_wohnzimmer
  input_scheduler_selector: null
  input_scheduler_presence: null
  input_trvs:
    - climate.trv_wohnzimmer
  input_windows:
    - binary_sensor.fs_wohnzimmer_contact
  input_temperature_sensor: sensor.tl_wohnzimmer_temperature
  input_persons:
    - person.xxx
    - person.xxx
  input_presence_sensor: null

I’ll try to have a look at it. Since those errors don’t fire a notification it could be a bit tedious to get a trace log.

Could you check if you get those errors after a restart/reboot? Maybe the integration is not initiated at this moment but the automation module is. If its the case this is nothing to worry about but I have to cach this case in code.
Could you tell me on what hardware your ha instance is running?

No reboot today, Not even a HA restart.
HA ist running on an intel nuc dn2820fykh.
It should be poweful enough.

1 Like

Since Version 4.0 my thermostat is switching the target temperature between 5 °C and 12 °C in fast succession when the corresponding window is open:

grafik

This is the automation I use:

alias: Heizung im Wohnzimmer
description: ""
use_blueprint:
  path: panhans/heating_control.yaml
  input:
    input_trvs:
      - climate.wohnzimmer
    input_temperature_minimum_static: 16
    input_temperature_comfort_static: 19
    input_temperature_comfort: input_number.komforttempertur_dynamisch
    input_persons:
      - person.stefan_borggraefe
    input_proximity: fc8d335483b6ff1784b30f74db3d28c5
    input_mode_guest: input_boolean.mehrpersonenmodus
    input_windows:
      - binary_sensor.fenster_und_turkontakt
    input_temperature_sensor: sensor.fernbedienung_temperature
    input_mode_outside_temperature: sensor.ausenthermometer_temperatur
    input_mode_outside_temperature_threshold: 17
    input_frost_protection_temp: 12
    input_log_level: warning

I really wonder where the 5°C are coming from. I never had this issue with AHC 3.x.

Please help me fix this problem. Thank you!

Hi! Is it possible to toggle eco / comfort temperature with a button? I don’t mean setting temp with input_number, but turning heating on / off.

The 5°C is mostly the minimum temperature of your thermostat. If you thermostat does not support the mode OFF it will be set to its minimum temperature.

The question is why it jumps back to 12°C.

Could you open the window and download and share 2-3 trace logs? (described here)

//EDIT: also check if there is another automation or something else that changes the temperature in your logbook.

You want to invert the result of the logic? What is the reason for this request?

1 Like

Hello,
i recently updated from v4_beta5 to 4.0.2. On Beta5 i was still able to change temps via my HomeAssistant Dashboard (by using the Climate Display of my Dashboard).
After updating to 4.0.2 the desired temperature is always being reset to my comfort temp.
I already tried to enable the “Physical Temperature Change” option cuz i thought it could help, but the issue still remains.

Blueprint-Config:

alias: "Heizung: Arbeitszimmer"
description: ""
use_blueprint:
  path: panhans/heating_control.yaml
  input:
    input_trvs:
      - climate.arbeitszimmer_wandthermostat
    input_temperature_minimum_static: 15
    input_persons:
      - person.stefan
    input_schedulers:
      - schedule.heizung
    input_mode_guest: input_boolean.gastemodus
    input_mode_winter: binary_sensor.wintermodus
    input_temperature_comfort: input_number.heizung_arbeitszimmer_temperatur
    input_temperature_minimum: input_number.heizung_basetemp

I tried to dig a bit deeper into the traces and what made me curious was the following:

  to_state:
    entity_id: climate.arbeitszimmer_wandthermostat
    state: heat
    attributes:
      hvac_modes:
        - auto
        - heat
        - 'off'
      min_temp: 5
      max_temp: 30.5
      target_temp_step: 0.5
      preset_modes:
        - boost
        - none
      current_temperature: 21.2
      temperature: 22 << desired temp

But inside the changes Element the temperature is the following

changes:
  climate.arbeitszimmer_wandthermostat:
    - mode: heat
      temp: 20 <<

This results in the following behaviour:

22°c for 5 Seconds into 20°c (which is my comfort temp).

I may be wrong if this is intended behaviour, but i liked the beta5 behaviour way more. If it´s the desired behaviour, is there anything i can do about it?

5 Likes

I’m also interested in using this feature but note this in the blueprint

HINT : This feature doesn’t work properly since there is a bug in home assistant.

1 Like

i have exactly the same problem. After changing the temperature at the valve or ui the temperature falls back to the comfort temp.

1 Like

@stefan5 @gobbli will check this soon. Sry, for that inconvenience.

2 Likes

I’ve opened a dev version for upcoming features and fixes.
Atm it contains a new logic for changing temperature over ui/automation/physical device. That means for you:

  • no need for temperature helpers anymore
  • the new logic may compensate the side effects caused by the known ha bug
  • side effects are still there when changing temperature over UI / Automation / device when you’re using generic calibration and / or aggressive mode

You can find the dev version in the initial post of this thread.

If everything is fine with the new implementation I will merge this into the main version.

//EDIT: found a bug in the new logic :smiley: → fixed

2 Likes

Hi,
since core update to v2024.1.X my calibration does not work anymore: “‘NoneType’ object is not iterable”.
I tried also the newer versions of Andvanced Heating Control but without success. (HAOS on HA Yellow) As the v3.7.3 was the latest working version with core v2023.12.X I attach a trace of it.

I would be glad if someone could help me.

Do you get the same error with the latest version? (I don’t maintain v3 any longer.)
I don’t get what results this error.

Could you send me a screenshot of the full states/attributes list of your number.heizung_bad_lokaler_temperatur_offset entity? (simply filter for it)

I get the same error in v4.0.2:

      "action/2/default/0/repeat/sequence/2": [
        {
          "path": "action/2/default/0/repeat/sequence/2",
          "timestamp": "2024-02-17T13:55:44.949462+00:00",
          "error": "'NoneType' object is not iterable",

And here is the screenshot: