Home Assistant Automations When to Use This Skill Use this skill when... Use ha-configuration instead when... Creating automation rules Editing configuration.yaml Writing triggers/conditions/actions Setting up integrations Working with scripts and scenes Managing secrets Using blueprints Organizing packages Device trigger setup General YAML configuration Automation Structure automation : - id : "unique_automation_id" alias : "Descriptive Name" description : "What this automation does" mode : single
single, restart, queued, parallel
trigger : - platform : state entity_id : binary_sensor.motion to : "on" condition : - condition : time after : "08:00:00" before : "22:00:00" action : - service : light.turn_on target : entity_id : light.living_room Trigger Types State Triggers trigger :
Basic state change
- platform : state entity_id : binary_sensor.door to : "on" from : "off"
With duration
- platform : state entity_id : binary_sensor.motion to : "off" for : minutes : 5
Attribute change
- platform : state entity_id : climate.thermostat attribute : current_temperature Time Triggers trigger :
Specific time
- platform : time at : "07:00:00"
Input datetime
- platform : time at : input_datetime.alarm_time
Time pattern (every hour)
- platform : time_pattern hours : "*" minutes : 0 seconds : 0
Every 15 minutes
- platform : time_pattern minutes : "/15" Other trigger types (numeric state, sun, device, event, webhook, template, zone) are documented in REFERENCE.md . Condition Types State Conditions condition :
Single entity
- condition : state entity_id : binary_sensor.door state : "off"
Multiple states allowed
- condition : state entity_id : alarm_control_panel.home state : - armed_home - armed_away
Check for duration
- condition : state entity_id : binary_sensor.motion state : "off" for : minutes : 10 Time Conditions condition :
Time range
- condition : time after : "08:00:00" before : "22:00:00"
Weekdays only
- condition : time weekday : - mon - tue - wed - thu - fri
Combined
- condition : time after : "09:00:00" before : "17:00:00" weekday : - mon - tue - wed - thu - fri Other condition types (numeric state, sun, template, zone, logical, shorthand) are documented in REFERENCE.md . Action Types Service Calls action :
Basic service call
- service : light.turn_on target : entity_id : light.living_room data : brightness_pct : 80 color_temp : 350
Multiple targets
- service : light.turn_off target : entity_id : - light.bedroom - light.bathroom area_id : upstairs Delays and Waits action : - service : light.turn_on target : entity_id : light.living_room
Fixed delay
- delay : seconds : 30
Wait for trigger
- wait_for_trigger : - platform : state entity_id : binary_sensor.motion to : "off" timeout : minutes : 5 continue_on_timeout : true
Wait for template
- wait_template : "{{ is_state('light.bedroom', 'off') }}" timeout : "00:05:00" If/Then/Else (Modern) action : - if : - condition : state entity_id : binary_sensor.motion state : "on" then : - service : light.turn_on target : entity_id : light.hallway else : - service : light.turn_off target : entity_id : light.hallway For advanced action patterns (choose, repeat, variables, parallel execution), scripts, scenes, and common automation patterns, see REFERENCE.md . Automation Modes Mode Behavior single Ignore new triggers while running restart Stop current run, start new queued Queue up to max runs parallel Run up to max in parallel automation : - alias : "Motion Light" mode : restart max : 10
For queued/parallel
max_exceeded : silent
silent, warning, error
Agentic Optimizations Context Command Find automation grep -r "alias:" config/automations.yaml Find triggers grep -r "platform: state" config/ --include=".yaml" List scripts grep -r "^ [a-z_]:" config/scripts.yaml Find scenes grep -r "^ - name:" config/scenes.yaml Check automation IDs grep -r "^ - id:" config/automations.yaml