Features
🔥 heating / ❄️ cooling based on
👥 people presence
🗓️ multiple schedulers
🚶 presence sensor
↔️ proximity aka geo fencing
🏃 away temperature offset
🥶 frost protection
😡 adjustable aggressive mode
🌤️ activation based on weather, temperature or boolean entities
🎛️ granular schedule adjustments
🪟 multiple window open detection
🎈 party mode
🤝 guest mode
🧭 thermostat calibration for the most common devices (Tado, Aqara, Popp / Danfoss / Hive, Tuya)
⚙️ several tweaks for fixing your thermostat issues
🎬 custom action
🤫 calm & 💪 reliable
Development
Latest version: 4.2.11
Major Changelogs: 4.0 | 4.1 | 4.2
Development Version
Current Changes
PLANNED FEATURES
- window detection / calibration only
- calendar support
- scene based reset (last known temperature will be taken not the static one)
- more adjustable limits for aggressive mode
- firing events with calibration and heating data
- away temperature - lower temperature when scheduler is on but nobody is home
- logbook entries (temperature,mode,calibration)
- liming protection
Thanks for testing, reporting and debugging to everyone especially: sben, sourdistorne, dario2 , coldspark29 , technikhaus, tirol3, stephanschleichstr13, bandit79, Mar1us, vajdum. Ziegelsandundspucke, mukrop, k-dani, allard77, hainfelder, Appox, NikB, kitus, David883, p6Dave, fir3dragon
Hints & FAQ
FAQ
You encounter a problem?
- Check if you’re running the latest version.
- If it’s the case, describe your problem.
- What do you want to achieve?
- What doesn’t work?
- Set debug level to warning
- Trigger you automation
- Share your tace log for example here
- Give me some time to check
How do I get a trace log?
- Navigate to your automations
- Find your automation and click on three-dots-menu
- Click on traces
- Select a trace with the upper arrows
- Click on three-dots-menu again
- Click on download trace
Also you can create issues on my github repo.
Hints
To make long entering / leaving durations for persons and open / closing durations for windows work properly I recommend to setup the uptime integration.
Helpfull AHC Snippets
Calendar Based Scheduler Selector Sensor
Here is an example for my template based binary sensor for holidays. There are two calendars. One holds the national holidays for my region and the other one is my personal calendar. The sensor scans for national holidays and a catchphrase for my personal one.
template:
- trigger:
- platform: time_pattern
minutes: /10
action:
- service: calendar.get_events
data:
start_date_time: "{{ now().replace(hour=0,minute=0,second=0,microsecond=0) }}"
end_date_time: "{{ now().replace(hour=23,minute=59,second=59,microsecond=999999) }}"
target:
entity_id:
- calendar.family
- calendar.holidays
response_variable: calendar_events
binary_sensor:
- name: Holiday
icon: mdi:palm-tree
unique_id: holiday
state: >
{{
( calendar_events['calendar.family'].events | regex_search('holiday', ignorecase=True) ) or
( calendar_events['calendar.holidays'].events | count > 0 )
}}
AHC Template Sensor
If you want to create your own AHC-Sensor with all the evaluated data just add this to your template section of your configuration. You need one sensor for each of your automations so just copy the code and edit the fields next to the comments.
template:
- trigger:
- platform: event
event_type: ahc_event
event_data:
automation: automation.ahc_v4 #CHANGE YOUR AUTOMATION ENTITY-ID HERE
binary_sensor:
- name: "AHC Test Room Data" #SET A NAME FOR YOUR SENSOR
unique_id: AHC Test Room #SET A UNIQUE ID
state: "{{ trigger.event.data.is_comfort }}"
attributes:
automation: "{{ trigger.event.data.automation }}"
target_temperature: "{{ trigger.event.data.target_temperature }}"
comfort_temperature: "{{ trigger.event.data.comfort_temperature }}"
eco_temperature: "{{ trigger.event.data.eco_temperature }}"
mode: "{{ trigger.event.data.mode }}"
is_comfort: "{{ trigger.event.data.is_comfort }}"
is_away_temperature: "{{ trigger.event.data.is_away_temperature }}"
is_somebody_on_way_home_state: "{{ trigger.event.data.is_somebody_on_way_home_state }}"
is_party: "{{ trigger.event.data.is_party }}"
is_guest: "{{ trigger.event.data.is_guest }}"
is_window_open: "{{ trigger.event.data.is_window_open }}"
active_scheduler: "{{ trigger.event.data.active_scheduler }}"
state_scheduler: "{{ trigger.event.data.state_scheduler }}"
is_person_based: "{{ trigger.event.data.is_person_based }}"
is_anybody_home: "{{ trigger.event.data.is_anybody_home }}"
state_presence_sensor: "{{ trigger.event.data.state_presence_sensor }}"
state_presence_scheduler: "{{ trigger.event.data.state_presence_scheduler }}"
is_presence_on: "{{ trigger.event.data.is_presence_on }}"
is_frost_protection: "{{ trigger.event.data.is_frost_protection }}"
last_temperature_change: "{{ iif(trigger.event.data.is_change,now(),this.attributes.last_calibration) }}"
last_calibration: "{{ iif(trigger.event.data.is_calibration,now(),this.attributes.last_calibration) }}"
state_presence_sensor_presence_scheduler_combined: "{{ trigger.event.data.state_presence_sensor_presence_scheduler_combined }}"
is_presence_based: "{{ trigger.event.data.is_presence_based }}"
is_force_max_temperature: "{{ trigger.event.data.is_force_max_temperature }}"
factor: "{{ trigger.event.data.factor }}"
min_temp: "{{ trigger.event.data.min_temp }}"
AHC Latest Version Sensor
You can setup this sensor to check the latest version. For example you can use this to fire a notification when an newer version is available.
command_line:
- sensor:
command: 'curl https://raw.githubusercontent.com/panhans/HomeAssistant/main/blueprints/automation/panhans/heating_control.yaml'
name: "AHC Latest Version"
value_template: "{{ value | regex_findall('\\*\\*Version\\*\\*:(.+\\d+.\\d+.\\d+)', '\\1') | first | trim }}"
scan_interval: 3600 # every hour
If you have questions or feature request, feel free to comment this thread.
Greets!
References
UI inspired: ☀️ Cover Control Automation (CCA) - a comprehensive and highly configurable roller blind blueprint
My blueprints
Simple scene toggle
Yet not another door/window/sensor open warning notification with auto close
Zone notification extended
Advanced Heating Control