🔥 Advanced Heating Control

I’m still fairly new to AHC, but really like it so far. Many thanks for your work!

I’m wondering if I need to define a scheduler in the helper section or if I can just work with a heating plan under “Adjustments / Heating Plan”. I have also defined a person and proximity.

I have defined this schedule, but have the impression it is not always observed. For example the switch to eco = 19 did not happen.

- time: "07:00"
  days:
    - Mon
    - Tue
    - Wed
    - Thu
    - Fri
  comfort: "22"
- time: "09:00"
  days:
    - Sat
    - Sun
  comfort: "21"
- time: "17:00"
  days:
    - Mon
    - Tue
    - Wed
    - Thu
    - Fri
  comfort: "21"
- time: "22:00"
  days:
    - Mon
    - Tue
    - Wed
    - Thu
    - Fri
    - Sat
    - Sun
  eco: "19"

Many thanks for some comments. :slight_smile:

I’d just tested this and it works flawlessly:

input_custom_action:
    - action: input_boolean.turn_{{ iif(set_comfort,'on','off') }}
      metadata: {}
      data: {}
      target:
        entity_id: input_boolean.comfort_on

AHC only sets the target temperature and the calibration (offset between room temperature and thermostat sensor). But it doesn’t handle if the thermostat closes if the target temperature is reached. This is the task of the thermostat itself. Some thermostats have an open/close degree entity. So you can let it open even if it should be closed.

If you set a person or proximity entity and lets say one of them is home comfort mode is always active. If that person leaves the home eco kicks in. So, if there is somebody home at 22:00 comfort mode is still active and 21°C are set. Maybe you’re looking for something room dependent like a presence sensor or maybe a light that has to be on to force the comfort mode. Or you white list the comfort mode with help of a schedule.

Many thanks for replying. But I’m not so sure if I get your response yet. :frowning: I try to be a bit more specific with my questions:

When I put something under Adjustments / Heating Plan, does this overwrite a scheduler I have defined in a helper? And if yes, what does it overwrite? All what I define in it? So let’s say my normal helper schedule is from 6:00 to 22:00 with Eco = 19 and Comfort = 21 defined in the BP. I have defined a person and proximity. When the person is home, comfort is used, when not home all goes to Eco? Right? Now I want to add a an adjustment, because I want to have my living room at 23 from 18 to 21:30. Do I then define it in Adjustments as the following?

- time: "18:00"
  days:
    - Mon
    - Tue
    - Wed
    - Thu
    - Fri
    - Sat
    - Sun
  comfort: "23"
- time: "21:30"
  days:
    - Mon
    - Tue
    - Wed
    - Thu
    - Fri
    - Sat
    - Sun
  comfort: "21"

Or am I on the wrong path? :slight_smile: Thanks!

Yes, exactly. If the proximity entity and the person are based on the same entity I would recommend to only use one of them, e.g. just the proximity entity. But yes, if you set a schedule and a person/proximity the schedule must be on and the person at home for comfort mode otherwise eco is set.

Exactly, but you can delete the days specification since you’re using the adjustments for every weekday but this is no need.

Any recommendation if to use person or proximity? I’d assume proximity is way more exact as it can sense if im coming home?

Ok, great - getting there :slight_smile: So I could create a “dummy” scheduler from 6:00 to 22:00 every day and then use the adjustments / heating plan to make more granular adjustments during this time span, e.g., such as increasing comfort by a degree during a certain time.

1 Like

Yes, proximity is fine if you like to pre heat.

1 Like

hi @panhans

What would you recommend in my case? I heat my house based on a defined schedule.
But I’d like that, when the family knows no one will be home, we could use the dashboard to set up a kind of timer to pause the heating for a certain number of hours or days — for example, lowering it to 15°C.

What do you suggest so that the last person leaving the house can use the dashboard to reduce the heating?
That person would roughly indicate how long we’ll be away, so the system can restart the heating a few hours before we return.

Thats important to have it on the dashboard

Thx for the idee :slight_smile:

try to use the force eco temperature or partymode with a timer and set the comfort temp to 15. timer and temperature can be set via the dashboard!

1 Like

Sorry that I didn’t answer
Here is the yaml config

alias: Thermostat Jana Büro
description: ""
use_blueprint:
  path: panhans/advanced_heating_control.yaml
  input:
    input_trvs:
      - climate.thermostat_jana_buro
    input_temperature_sensor: sensor.temperatur_jana_buro_temperature
    input_temperature_eco_static: 16
    input_windows:
      - binary_sensor.fenstersensor_jana_buro_contact
    input_mode_outside_temperature: sensor.gw2000a_v2_2_3_outdoor_temperature
    input_adjustments: {}
    input_hvac_mode: heat
    input_schedulers:
      - schedule.arbeitszeit_jana
    input_mode_outside_temperature_threshold: 16
    input_temperature_comfort_static: 21.5
    input_persons:
      - person.jana
    input_log_level: info
    input_window_legacy_restore: true
    input_proximity: 9856b996e072b92c075f65e4570a4dfa
    input_proximity_distance: 100
    input_away_scheduler_mode: true
    input_away_presence_mode: false
    input_away_offset: 6.5
    input_people_entering_home_duration:
      hours: 0
      minutes: 5
      seconds: 0
    input_people_leaving_home_duration:
      hours: 0
      minutes: 10
      seconds: 0

I am not sure what I have to configure in the schedule section, if the heating should be only managed by proximity

Need to ask again, really sorry… With the below, if I don’t have defined a scheduler, will this still reduce the temperature to eco when nobody is home?

- time: "06:30"
  days:
    - Mon
    - Tue
    - Wed
    - Thu
    - Fri
  mode: "comfort"
  calibration: "on"
- time: "08:00"
  days:
    - Sat
    - Sun
  mode: "comfort"
  calibration: "on"
- time: "22:00"
  days:
    - Mon
    - Tue
    - Wed
    - Thu
    - Fri
    - Sat
    - Sun
  mode: "eco"

Hello,
I am trying to switch my thermostat via scheduler between comfort and eco temperature.

But some days back it stopped working as expected and I can’t remember what I could have changed.

alias: Heizung Bad OG
description: “”
use_blueprint:
path: panhans/advanced_heating_control.yaml
input:
input_force_eco_temperature: binary_sensor.thermostat_bad_og_enforce_eco
input_trvs:
- climate.thermostat_bad_og
input_hvac_mode: heat
input_frost_protection_temp: 12
input_mode_party:
- binary_sensor.thermostat_bad_og_enforce_comfort
input_schedulers:
- schedule.zeitplan_heizen_bad_og
input_windows:
- binary_sensor.fenster_bad_og_contact
input_windows_reaction_time_open:
hours: 0
minutes: 1
seconds: 0
input_mode_winter: input_boolean.heizbetrieb
input_mode_outside_temperature: weather.forecast_h27
input_temperature_comfort: input_number.temperatur_komfort
input_temperature_eco: input_number.temperatur_oko
input_mode_guest: binary_sensor.thermostat_bad_og_enforce_away
input_away_offset: 10
input_away_presence_mode: true

schedule.zeitplan_heizen_bad_og is active
binary_sensor.thermostat_bad_og_enforce_eco is off
binary_sensor.thermostat_bad_og_enforce_away is off
binary_sensor.fenster_bad_og_contact is off

I wonder if my away configuration might cause issues, but that would set a different temperature (comfort -10)

Try to clear the schedule and the person in your configuration and just stay with the proximity entity.

No, if you set the mode eco or comfort you will force the comfort or eco mode no matter if someone is home or not. If you want the automation to set the mode dynamically by the presence of a person for example you need to set the mode to auto.

Could you set the log level in the ahc automation settings to warning and if you see/feel the automation is not working like expected, just trigger the automation manually and download the trace log to share it with me.

"trace": {
  "trigger/27": [
    {
      "path": "trigger/27",
      "timestamp": "2025-11-12T17:39:19.250222+00:00",
      "changed_variables": {
        "this": {
          "entity_id": "automation.heizung_bad_og",
          "state": "on",
          "attributes": {
            "id": "1736011028409",
            "last_triggered": "2025-11-12T16:42:33.831326+00:00",
            "mode": "queued",
            "current": 0,
            "max": 10,
            "friendly_name": "Heizung Bad OG"
          },
          "last_changed": "2025-11-12T17:39:04.785208+00:00",
          "last_reported": "2025-11-12T17:39:04.785208+00:00",
          "last_updated": "2025-11-12T17:39:04.785208+00:00",
          "context": {
            "id": "01K9WJCKE9CPPF2YCH404CF61T",
            "parent_id": null,
            "user_id": "db9c3fbfc93644759f69855bf28c41f5"
          }
        },
        "trigger": {
          "platform": "template",
          "entity_id": "binary_sensor.thermostat_bad_og_enforce_comfort",
          "from_state": {
            "entity_id": "binary_sensor.thermostat_bad_og_enforce_comfort",
            "state": "on",
            "attributes": {
              "friendly_name": "Thermostat Bad OG Enforce Comfort"
            },
            "last_changed": "2025-11-12T17:38:32.472248+00:00",
            "last_reported": "2025-11-12T17:38:32.472248+00:00",
            "last_updated": "2025-11-12T17:38:32.472248+00:00",
            "context": {
              "id": "01K9WJBKWQKXPS1SRJH5GJJ7XT",
              "parent_id": null,
              "user_id": "db9c3fbfc93644759f69855bf28c41f5"
            }
          },
          "to_state": {
            "entity_id": "binary_sensor.thermostat_bad_og_enforce_comfort",
            "state": "off",
            "attributes": {
              "friendly_name": "Thermostat Bad OG Enforce Comfort"
            },
            "last_changed": "2025-11-12T17:39:17.239725+00:00",
            "last_reported": "2025-11-12T17:39:17.239725+00:00",
            "last_updated": "2025-11-12T17:39:17.239725+00:00",
            "context": {
              "id": "01K9WJCZKQH7X4FX9DCKT09MXW",
              "parent_id": null,
              "user_id": "db9c3fbfc93644759f69855bf28c41f5"
            }
          },
          "id": "temperature_change_party_off",
          "idx": "27",
          "alias": null,
          "for": {
            "__type": "<class 'datetime.timedelta'>",
            "total_seconds": 2
          },
          "description": "binary_sensor.thermostat_bad_og_enforce_comfort via template"
        },
        "input_trvs": [
          "climate.thermostat_bad_og"
        ],
        "input_temperature_sensor": [],
        "is_temperature_sensor_defined": false,
        "input_persons": [],
        "input_mode_guest": "binary_sensor.thermostat_bad_og_enforce_away",
        "input_people_entering_home_duration": {
          "hours": 0,
          "minutes": 0,
          "seconds": 2
        },
        "input_people_leaving_home_duration": {
          "hours": 0,
          "minutes": 0,
          "seconds": 2
        },
        "input_person_count": 0,
        "is_person_defined": true,
        "is_guest_mode_defined": true,
        "input_schedulers": [
          "schedule.zeitplan_heizen_bad_og"
        ],
        "input_scheduler_selector": null,
        "input_scheduler_presence": null,
        "is_scheduler_presence_defined": false,
        "input_temperature_comfort": "input_number.temperatur_komfort",
        "input_temperature_eco": "input_number.temperatur_oko",
        "input_hvac_mode": "heat",
        "factor": 1,
        "is_heat_only_if_below_real_temp": false,
        "input_mode_winter": "input_boolean.heizbetrieb",
        "input_mode_outside_temperature": "weather.forecast_h27",
        "input_mode_outside_temperature_threshold": 15,
        "input_mode_room_temperature_threshold": 18,
        "input_mode_room_temperature": false,
        "input_invert_winter_mode_value": false,
        "input_mode_party": [
          "binary_sensor.thermostat_bad_og_enforce_comfort"
        ],
        "input_adjustments": "[]",
        "input_calibration_timeout": {
          "hours": 0,
          "minutes": 1,
          "seconds": 0
        },
        "input_windows": [
          "binary_sensor.fenster_bad_og_contact"
        ],
        "input_presence_sensor": null,
        "is_presence_sensor_defined": false,
        "input_presence_reaction_on_time": {
          "hours": 0,
          "minutes": 5,
          "seconds": 0
        },
        "input_presence_reaction_off_time": {
          "hours": 0,
          "minutes": 5,
          "seconds": 0
        },
        "input_proximity": null,
        "input_proximity_duration": {
          "hours": 0,
          "minutes": 2,
          "seconds": 0
        },
        "input_proximity_distance": 500,
        "input_frost_protection_duration": {
          "days": 0,
          "hours": 0,
          "minutes": 0,
          "seconds": 0
        },
        "input_liming_protection": false,
        "input_liming_protection_day": "Mon",
        "input_liming_protection_time": "12:00:00",
        "input_liming_in_winter": false,
        "input_liming_protection_duration": 1,
        "input_temperature_comfort_entity": "input_number.temperatur_komfort",
        "input_temperature_comfort_static": 22,
        "input_temperature_eco_entity": "input_number.temperatur_oko",
        "input_temperature_eco_static": 19,
        "input_frost_protection_temp": 12,
        "input_windows_reaction_time_open": {
          "hours": 0,
          "minutes": 1,
          "seconds": 0
        },
        "input_windows_reaction_time_close": {
          "hours": 0,
          "minutes": 0,
          "seconds": 30
        },
        "input_window_open_temperature": 0,
        "input_party_legacy_restore": false,
        "input_window_legacy_restore": false,
        "is_legacy_restore": false,
        "input_force_max_temperature": [],
        "input_force_eco_temperature": "binary_sensor.thermostat_bad_og_enforce_eco",
        "input_calibration_delta": 0.5,
        "input_calibration_generic": false,
        "input_calibration_step_size": "auto",
        "input_calibration_key_word": "calibration",
        "input_generic_calibration_offset": 5,
        "input_aggressive_mode_offset": 0,
        "input_aggressive_mode_range": 0,
        "input_aggressive_mode_calibration": false,
        "input_away_offset": 10,
        "is_scheduler_away_mode": false,
        "is_presence_away_mode": true,
        "presence_ignor_people": false,
        "is_reset_temperature": false,
        "is_off_instead_min": false,
        "is_not_off_but_min": false,
        "is_fahrenheit": false,
        "is_physical_change_enabled": false,
        "is_off_if_nobody_home": false,
        "input_action_call_delay": {
          "hours": 0,
          "minutes": 0,
          "seconds": 2
        },
        "input_custom_action": null,
        "input_startup_delay": {
          "hours": 0,
          "minutes": 0,
          "seconds": 0
        },
        "input_fully_open_difference": 1,
        "input_valve_opening_keyword": "valve_opening_degree",
        "input_valve_positioning_step_size": "10",
        "input_valve_positioning_mode": "off",
        "input_valve_positioning_timeout": {
          "hours": 0,
          "minutes": 20,
          "seconds": 0
        },
        "input_valve_positioning_max_opening": 100,
        "invalid_states": [
          "unknown",
          "unavailable"
        ],
        "value_temperature_sensor": "unknown",
        "valid_temperature_sensor": false,
        "current_time_stamp": "2025-11-12 18:39:19.242959+01:00",
        "is_metric": true,
        "up_time_sensor": "sensor.uptime",
        "is_uptime_defined": true,
        "uptime": "2025-11-11 12:49:31+00:00",
        "startup_delay": null,
        "state_outside_temp": true,
        "state_ahc": true,
        "is_proximity_defined": false,
        "state_proximity_arrived": false,
        "state_proximity_way_home": false,
        "is_guest_mode": false,
        "is_anybody_home": false,
        "is_anybody_home_or_proximity": false,
        "active_scheduler": "schedule.zeitplan_heizen_bad_og",
        "is_scheduler_defined": true,
        "state_scheduler": true,
        "is_presence_scheduler_defined": false,
        "state_presence_scheduler": false,
        "state_presence_sensor": false,
        "state_presence": false,
        "is_force_max_temperature": false,
        "is_force_eco_temperature": false,
        "active_party_entity": null,
        "state_party": false,
        "party_temp": null,
        "is_away": false,
        "state_window": false,
        "is_aggressive_mode": false,
        "is_aggressive_mode_calibration": false,
        "is_frost_protection": false,
        "is_liming_protection": false,
        "valves": [
          "climate.thermostat_bad_og"
        ],
        "valves_unsupported": [],
        "valves_off_mode": [
          "climate.thermostat_bad_og"
        ],
        "valves_without_off_mode": [],
        "valves_tado": [],
        "valves_xiaomi_xiaomi": [],
        "valves_xiaomi_aqara": [
          "climate.thermostat_bad_og"
        ],
        "valves_xiaomi": [
          "climate.thermostat_bad_og"
        ],
        "valves_danfoss": [],
        "valves_popp": [],
        "valves_hive": [],
        "valves_dph": [],
        "valves_calibration_common": [],
        "last_comfort_entity_change": "2025-11-11 12:49:29.900362+00:00",
        "last_eco_entity_change": "2025-11-11 12:49:29.900471+00:00",
        "latest_entry_today": null,
        "latest_entry_day_before": null,
        "entry": null,
        "entry_time": "",
        "entry_comfort_temp": null,
        "entry_eco_temp": null,
        "entry_calibration": true,
        "entry_mode": "auto",
        "trigger_id_defined": true,
        "is_calibration_trigger": false,
        "is_generic_calibration_trigger": false,
        "is_generic_calibration": false,
        "is_aggressive_mode_trigger": false,
        "is_change_trigger": false,
        "set_max_temperature": false,
        "is_pysical_change": false,
        "is_adjustment_trigger": false,
        "is_reset": false,
        "is_changes_trigger": true,
        "is_scene_create_trigger": false,
        "is_scene_apply_trigger": true,
        "is_scene_destroy_trigger": false,
        "scene_entities": [
          "climate.thermostat_bad_og"
        ],
        "scene_window_id": "scene.heizung_bad_og_window",
        "scene_party_id": "scene.heizung_bad_og_party",
        "scenes_all": [
          "scene.heizung_bad_og_window",
          "scene.heizung_bad_og_party"
        ],
        "scene_to_apply": "scene.heizung_bad_og_party",
        "scenes_to_destroy": [],
        "scene_to_create": "scene.heizung_bad_og_party",
        "set_comfort": false,
        "mode": "heat",
        "temperature_comfort_of_entity": 21,
        "temperature_eco_of_entity": 17,
        "temperature_comfort": 21,
        "temperature_away": 11,
        "temperature_eco": 17,
        "target_temperature": 17,
        "changes": {},
        "positioning": [],
        "reset_data": [],
        "is_reset_trigger": false,
        "is_native_calibration": false,
        "is_native_calibration_trigger": false,
        "rounding_mode": "auto",
        "calibration_tado": {},
        "calibration_xiaomi": {},
        "calibration_dph": {},
        "calibration_common": {},
        "calibration_value_set": {},
        "no_changes": false,
        "scene_trigger": true,
        "change_trigger": false,
        "reset_trigger": false,
        "calibration_trigger": false,
        "positioning_trigger": false,
        "automation_name": "Heizung Bad OG",
        "warnings": [],
        "climates_information": [
          {
            "entity_id": "climate.thermostat_bad_og",
            "state": "heat",
            "temperature": 17,
            "current_temperature": 19.8
          }
        ]
      }
    }
  ],
  "condition/0": [
    {
      "path": "condition/0",
      "timestamp": "2025-11-12T17:39:19.250259+00:00",
      "result": {
        "result": true
      }
    }
  ],
  "condition/0/conditions/0": [
    {
      "path": "condition/0/conditions/0",
      "timestamp": "2025-11-12T17:39:19.250294+00:00",
      "result": {
        "result": false,
        "entities": []
      }
    }
  ],
  "condition/0/conditions/1": [
    {
      "path": "condition/0/conditions/1",
      "timestamp": "2025-11-12T17:39:19.250437+00:00",
      "result": {
        "result": true,
        "entities": []
      }
    }
  ],
  "action/0": [
    {
      "path": "action/0",
      "timestamp": "2025-11-12T17:39:19.250831+00:00",
      "changed_variables": {
        "context": {
          "id": "01K9WJD1JAWNNSR87SYEM17CRW",
          "parent_id": "01K9WJCZKQH7X4FX9DCKT09MXW",
          "user_id": null
        },
        "is_delayed": false
      }
    }
  ],
  "action/1": [
    {
      "path": "action/1",
      "timestamp": "2025-11-12T17:39:19.251402+00:00",
      "result": {
        "params": {
          "domain": "system_log",
          "service": "write",
          "service_data": {
            "message": "AHC - Heizung Bad OG \n automation delayed: False",
            "level": "warning",
            "logger": "blueprints.panhans.heatingcontrol"
          },
          "target": {}
        },
        "running_script": false
      }
    }
  ],
  "action/2": [
    {
      "path": "action/2",
      "timestamp": "2025-11-12T17:39:19.252146+00:00",
      "changed_variables": {
        "wait": {
          "remaining": null,
          "completed": true
        }
      },
      "result": {
        "wait": {
          "remaining": null,
          "completed": true
        }
      }
    }
  ],
  "action/3": [
    {
      "path": "action/3",
      "timestamp": "2025-11-12T17:39:19.252752+00:00",
      "changed_variables": {
        "scene_to_apply_tmp": null
      },
      "result": {
        "choice": "default"
      }
    }
  ],
  "action/3/choose/0": [
    {
      "path": "action/3/choose/0",
      "timestamp": "2025-11-12T17:39:19.252895+00:00",
      "result": {
        "result": false
      }
    }
  ],
  "action/3/choose/0/conditions/0": [
    {
      "path": "action/3/choose/0/conditions/0",
      "timestamp": "2025-11-12T17:39:19.253199+00:00",
      "result": {
        "result": false,
        "entities": []
      }
    }
  ],
  "action/3/default/0": [
    {
      "path": "action/3/default/0",
      "timestamp": "2025-11-12T17:39:19.253835+00:00"
    }
  ],
  "action/3/default/0/if": [
    {
      "path": "action/3/default/0/if",
      "timestamp": "2025-11-12T17:39:19.253976+00:00",
      "result": {
        "result": false
      }
    }
  ],
  "action/3/default/0/if/condition/0": [
    {
      "path": "action/3/default/0/if/condition/0",
      "timestamp": "2025-11-12T17:39:19.254282+00:00",
      "result": {
        "result": false,
        "entities": []
      }
    }
  ],
  "action/3/default/1": [
    {
      "path": "action/3/default/1",
      "timestamp": "2025-11-12T17:39:19.254988+00:00",
      "result": {
        "event": "ahc_event",
        "event_data": {
          "state": true,
          "mode": "eco",
          "automation": "automation.heizung_bad_og",
          "is_person_defined": true,
          "is_anybody_home": false,
          "is_proximity_defined": false,
          "is_anybody_home_or_proximity": false,
          "is_guest_mode": false,
          "active_scheduler": "schedule.zeitplan_heizen_bad_og",
          "state_scheduler": true,
          "state_presence_sensor": false,
          "state_presence_scheduler": false,
          "state_presence": false,
          "state_proximity_arrived": false,
          "state_proximity_way_home": false,
          "is_force_max_temperature": false,
          "is_force_eco_temperature": false,
          "active_party_entity": null,
          "party_temp": null,
          "is_away": false,
          "state_window": false,
          "is_aggressive_mode": false,
          "is_frost_protection": false,
          "is_liming_protection": false,
          "state_outside_temp": true,
          "entry_time": "",
          "thermostats": [
            "climate.thermostat_bad_og"
          ],
          "hvac_mode": "heat",
          "temperature_comfort": 21,
          "temperature_eco": 17,
          "target_temperature": 17,
          "set_max_temperature": false,
          "last_trigger_id": "temperature_change_party_off",
          "calibration_trigger": false,
          "change_trigger": false,
          "warnings": false
        }
      }
    }
  ],
  "action/3/default/2": [
    {
      "path": "action/3/default/2",
      "timestamp": "2025-11-12T17:39:19.263778+00:00"
    }
  ],
  "action/3/default/2/if": [
    {
      "path": "action/3/default/2/if",
      "timestamp": "2025-11-12T17:39:19.263918+00:00",
      "result": {
        "result": false
      }
    }
  ],
  "action/3/default/2/if/condition/0": [
    {
      "path": "action/3/default/2/if/condition/0",
      "timestamp": "2025-11-12T17:39:19.264227+00:00",
      "result": {
        "result": false,
        "entities": []
      }
    }
  ],
  "action/3/default/3": [
    {
      "path": "action/3/default/3",
      "timestamp": "2025-11-12T17:39:19.264937+00:00"
    }
  ],
  "action/3/default/3/if": [
    {
      "path": "action/3/default/3/if",
      "timestamp": "2025-11-12T17:39:19.265067+00:00",
      "result": {
        "result": false
      }
    }
  ],
  "action/3/default/3/if/condition/0": [
    {
      "path": "action/3/default/3/if/condition/0",
      "timestamp": "2025-11-12T17:39:19.265372+00:00",
      "result": {
        "result": false,
        "entities": []
      }
    }
  ],
  "action/3/default/4": [
    {
      "path": "action/3/default/4",
      "timestamp": "2025-11-12T17:39:19.266071+00:00"
    }
  ],
  "action/3/default/4/if": [
    {
      "path": "action/3/default/4/if",
      "timestamp": "2025-11-12T17:39:19.266200+00:00",
      "result": {
        "result": false
      }
    }
  ],
  "action/3/default/4/if/condition/0": [
    {
      "path": "action/3/default/4/if/condition/0",
      "timestamp": "2025-11-12T17:39:19.266532+00:00",
      "result": {
        "result": false,
        "entities": []
      }
    }
  ],
  "action/3/default/5": [
    {
      "path": "action/3/default/5",
      "timestamp": "2025-11-12T17:39:19.267202+00:00"
    }
  ],
  "action/3/default/5/if": [
    {
      "path": "action/3/default/5/if",
      "timestamp": "2025-11-12T17:39:19.267331+00:00",
      "result": {
        "result": false
      }
    }
  ],
  "action/3/default/5/if/condition/0": [
    {
      "path": "action/3/default/5/if/condition/0",
      "timestamp": "2025-11-12T17:39:19.267666+00:00",
      "result": {
        "result": false,
        "entities": []
      }
    }
  ],
  "action/3/default/6": [
    {
      "path": "action/3/default/6",
      "timestamp": "2025-11-12T17:39:19.268342+00:00",
      "changed_variables": {
        "scene_to_apply_tmp": null
      }
    }
  ],
  "action/3/default/7": [
    {
      "path": "action/3/default/7",
      "timestamp": "2025-11-12T17:39:19.269550+00:00",
      "result": {
        "choice": "else"
      }
    }
  ],
  "action/3/default/7/if": [
    {
      "path": "action/3/default/7/if",
      "timestamp": "2025-11-12T17:39:19.269684+00:00",
      "result": {
        "result": false
      }
    }
  ],
  "action/3/default/7/if/condition/0": [
    {
      "path": "action/3/default/7/if/condition/0",
      "timestamp": "2025-11-12T17:39:19.269988+00:00",
      "result": {
        "result": true,
        "entities": []
      }
    }
  ],
  "action/3/default/7/if/condition/1": [
    {
      "path": "action/3/default/7/if/condition/1",
      "timestamp": "2025-11-12T17:39:19.270549+00:00",
      "result": {
        "result": false,
        "entities": []
      }
    }
  ],
  "action/3/default/7/else/0": [
    {
      "path": "action/3/default/7/else/0",
      "timestamp": "2025-11-12T17:39:19.271162+00:00"
    }
  ],
  "action/3/default/7/else/0/if": [
    {
      "path": "action/3/default/7/else/0/if",
      "timestamp": "2025-11-12T17:39:19.271299+00:00",
      "result": {
        "result": false
      }
    }
  ],
  "action/3/default/7/else/0/if/condition/0": [
    {
      "path": "action/3/default/7/else/0/if/condition/0",
      "timestamp": "2025-11-12T17:39:19.271627+00:00",
      "result": {
        "result": false,
        "entities": []
      }
    }
  ],
  "action/3/default/7/else/1": [
    {
      "path": "action/3/default/7/else/1",
      "timestamp": "2025-11-12T17:39:19.272277+00:00"
    }
  ],
  "action/3/default/7/else/1/if": [
    {
      "path": "action/3/default/7/else/1/if",
      "timestamp": "2025-11-12T17:39:19.272412+00:00",
      "result": {
        "result": false
      }
    }
  ],
  "action/3/default/7/else/1/if/condition/0": [
    {
      "path": "action/3/default/7/else/1/if/condition/0",
      "timestamp": "2025-11-12T17:39:19.272731+00:00",
      "result": {
        "result": true
      }
    }
  ],
  "action/3/default/7/else/1/if/condition/1": [
    {
      "path": "action/3/default/7/else/1/if/condition/1",
      "timestamp": "2025-11-12T17:39:19.273026+00:00",
      "result": {
        "result": false,
        "entities": []
      }
    }
  ],
  "action/3/default/8": [
    {
      "path": "action/3/default/8",
      "timestamp": "2025-11-12T17:39:19.273839+00:00"
    }
  ],
  "action/3/default/8/if": [
    {
      "path": "action/3/default/8/if",
      "timestamp": "2025-11-12T17:39:19.273966+00:00",
      "result": {
        "result": false
      }
    }
  ],
  "action/3/default/8/if/condition/0": [
    {
      "path": "action/3/default/8/if/condition/0",
      "timestamp": "2025-11-12T17:39:19.274265+00:00",
      "result": {
        "result": false,
        "entities": []
      }
    }
  ],
  "action/3/default/9": [
    {
      "path": "action/3/default/9",
      "timestamp": "2025-11-12T17:39:19.274938+00:00"
    }
  ],
  "action/3/default/9/if": [
    {
      "path": "action/3/default/9/if",
      "timestamp": "2025-11-12T17:39:19.275063+00:00",
      "result": {
        "result": false
      }
    }
  ],
  "action/3/default/9/if/condition/0": [
    {
      "path": "action/3/default/9/if/condition/0",
      "timestamp": "2025-11-12T17:39:19.275363+00:00",
      "result": {
        "result": false,
        "entities": []
      }
    }
  ]
},

I changed the temperature to 16 degrees on the thermostat and then triggered the automation.

step config sill says:

variables:
  is_delayed: >-
    {{ not (not is_uptime_defined or (now() | as_datetime -
    states(up_time_sensor) | as_datetime) > timedelta(**input_startup_delay)) }}

and the Trace Log I hope this helps and thank you so much for your time!

What might matter for my issue:
I use an input select helper for Thermostat Modus with options plan, eco, comfort, away.

Also I have binary sensors for each of them, based on templates that read selected modus.
away → binary_sensor.thermostat_bad_og_enforce_away
comfort → binary_sensor.thermostat_bad_og_enforce_comfort
eco → binary_sensor.thermostat_bad_og_enforce_eco
plan → no sensor consumed by automation, but since none of the above sensors is set anymore, I expected the scheduler not to be overruled anymore.

So am I wrong here?

Hi panhans,

I set the thermostat manually via HA to 11,5°C and then run the Blueprint. Same beavor:

Define variables is_delayed
Executed: November 13, 2025 at 1:11:02 PM

variables:
  is_delayed: >-
    {{ not (not is_uptime_defined or (now() | as_datetime -
    states(up_time_sensor) | as_datetime) > timedelta(**input_startup_delay)) }}

trace automation.flur_eg_heizung 2025-11-13T12_11_02.776223+00_00.json

The logic detects following changes after triggering the automation:

"changes": {
  "climate.heizung_arbeitszimmer": [
  {
    "mode": "off",
    "temp": 17.5
  }
 ]
}

Off because outside it’s warmer than your specified thresh:

"input_mode_outside_temperature": "sensor.outdoor_module_temperature",
"input_mode_outside_temperature_threshold": 10,

Here is the result: “state_outside_temp”: false

That means the AHC should turn off your thermostat.

There is also a warning:

"warnings": ["The temperature sensorsensor.indoor_module_arbeitszimmer_temperature has an invalid state: unavailable"]

Please check the state of your temperature sensor.

"input": {
          "input_trvs": [
            "climate.eve_thermo_20ebp1701_5"
          ],
          "input_temperature_eco_static": 18,
          "input_adjustments": [
            {
              "time": "08:05",
              "comfort": "20"
            },
            {
              "time": "22:00",
              "eco": "17"
            }
          ],
          "input_temperature_comfort_static": 21,
          "input_temperature_comfort": "input_number.flur_comfort_temperature",
          "input_temperature_eco": "input_number.flur_eco_temperature",
          "input_mode_outside_temperature": "sensor.temperature_158d00022cada9",
          "input_mode_winter": "input_boolean.heizung"

There is no schedule, proximity, person ect. that toggles between comfort mode and eco mode. With your configuration the automation is in eco mode forever. I don’t know what’s your aim but if you want to heat to 20° from 08:00 to 22:00 and want to set the target temp to 17 at night just set a schedule where you whitelist the comfort time window.

Hmm, I just can read your trace log. But maybe you should describe what you expect in the moment you’ve downloaded it.

All your sensors return false. You defined an entity for guest mode. This entity is treaten like a person. It’s off. Your schedule is set and active but nobody of your defined persons - in your case the guest mode entity - is at home or enabled. So the automation stays in eco mode.

Ah, ok :slight_smile: That explains it. I changed it now to auto except for the night time, and now it’s going to the eco temp set, if nobody is home.

1 Like