AutomationDataset/basnijholt/basnijholt_automations.yaml

3032 lines
87 KiB
YAML

- alias: 'Adaptive lighting: turn on and off switches'
triggers:
- trigger: state
entity_id: input_select.sleep_mode
- trigger: homeassistant
event: start
variables:
sleep_mode: '{{ states(''input_select.sleep_mode'') }}'
actions:
choose:
- conditions: '{{ sleep_mode == ''off'' }}'
sequence:
- action: switch.turn_off
entity_id:
- switch.adaptive_lighting_sleep_mode_bedroom
- switch.adaptive_lighting_sleep_mode_bedroom_led
- switch.adaptive_lighting_sleep_mode_living_room
- switch.adaptive_lighting_sleep_mode_baby_room
- conditions: '{{ sleep_mode == ''half'' }}'
sequence:
- action: switch.turn_off
entity_id:
- switch.adaptive_lighting_sleep_mode_living_room
- action: switch.turn_on
entity_id:
- switch.adaptive_lighting_sleep_mode_bedroom
- switch.adaptive_lighting_sleep_mode_bedroom_led
- switch.adaptive_lighting_sleep_mode_baby_room
- conditions: '{{ sleep_mode == ''total'' }}'
sequence:
- action: switch.turn_on
entity_id:
- switch.adaptive_lighting_sleep_mode_bedroom
- switch.adaptive_lighting_sleep_mode_bedroom_led
- switch.adaptive_lighting_sleep_mode_baby_room
- alias: 'Adaptive lighting: reset manual_control after 1 hour'
mode: parallel
max: 200
triggers:
- trigger: event
event_type: adaptive_lighting.manual_control
variables:
light: '{{ trigger.event.data.entity_id }}'
switch: '{{ trigger.event.data.switch }}'
conditions: '{{ ''hall'' not in light and ''stairs'' not in light }}'
actions:
- delay: 01:00:00
- condition: template
value_template: '{{ light in state_attr(''switch'', ''manual_control'') }}'
- action: adaptive_lighting.set_manual_control
data:
entity_id: '{{ switch }}'
lights: '{{ light }}'
manual_control: false
- action: notify.iphone_bas
data:
title: 'Adaptive Ligthing: manual_control reset'
message: '{{ light }} is reset to not ''manually controlled'''
- alias: 'Adaptive lighting: notify manual_control'
mode: parallel
max: 20
triggers:
- trigger: event
event_type: adaptive_lighting.manual_control
variables:
light: '{{ trigger.event.data.entity_id }}'
conditions: '{{ ''hall'' not in light and ''stairs'' not in light }}'
actions:
- action: system_log.write
data:
message: '{{ light }} is manually controlled'
level: error
logger: yolo.yolo
- action: notify.iphone_bas
data:
title: 'Adaptive Ligthing: manual_control'
message: '{{ light }} is now ''manually controlled'', context={{ trigger.event.context
}}'
- alias: 'Alarm clock: wake up with Spotify and light'
triggers:
trigger: template
value_template: '{{ states("sensor.time")[0:5] == states("sensor.ten_minutes_before_alarm")
}}
'
conditions:
condition: state
entity_id: input_boolean.alarm_clock
state: 'on'
actions:
- action: input_boolean.turn_off
entity_id: input_boolean.alarm_clock
- action: input_boolean.turn_on
entity_id: input_boolean.wake_up_with_spotify
- action: input_boolean.turn_on
entity_id: input_boolean.wake_up_light
- action: input_select.select_option
entity_id: input_select.sleep_mode
data:
option: 'off'
- alias: 'Apple Watch: Play or Pause the TV'
triggers:
trigger: event
event_type: ios.action_fired
event_data:
actionName: Play TV
conditions:
condition: state
entity_id: media_player.tv
state: 'on'
actions:
action: media_player.media_play_pause
target:
entity_id: 'media_player.{{ ''xbox'' if is_state_attr(''media_player.tv'', ''source'',
''XBOX'') else ''tv''}}
'
- alias: 'Apple Watch: minimal lights bedroom'
triggers:
trigger: event
event_type: ios.action_fired
event_data:
actionName: Minimal lights bedroom
actions:
action: light.turn_on
data:
entity_id:
- light.philips_go
- light.bed_led
brightness: 1
color_name: red
- alias: 'Apple Watch: fix TV sound'
triggers:
trigger: event
event_type: ios.action_fired
event_data:
actionName: Fix TV sound
actions:
action: script.fix_sound
- alias: 'Apple Watch: Go to sleep'
triggers:
trigger: event
event_type: ios.action_fired
event_data:
actionName: Go to sleep
actions:
action: script.going_to_sleep
- alias: 'Apple Watch: set sleep mode'
mode: parallel
triggers:
trigger: event
event_type: ios.action_fired
event_data:
actionName: Set sleep mode
actions:
- variables:
iphone: notify.mobile_app_{{ trigger.event.data.sourceDeviceName.replace('-',
'_') }}
- action: '{{ iphone }}'
data:
message: 'Apple Watch: set sleep mode.'
data:
actions:
- action: SLEEP_OFF
title: 'Off'
- action: SLEEP_HALF
title: Half
- action: SLEEP_TOTAL
title: Total
- wait_for_trigger:
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: SLEEP_OFF
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: SLEEP_HALF
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: SLEEP_TOTAL
timeout: 00:00:20
continue_on_timeout: false
- variables:
event: '{{ wait.trigger.event.data.action.lower().split(''_'')[1] }}'
- action: input_select.select_option
data:
entity_id: input_select.sleep_mode
option: '{{ event }}'
- alias: 'Apple Watch: set lights'
mode: parallel
triggers:
trigger: event
event_type: ios.action_fired
event_data:
actionName: Set lights
actions:
- variables:
iphone: notify.mobile_app_{{ trigger.event.data.sourceDeviceName.replace('-',
'_') }}
- action: '{{ iphone }}'
data:
message: 'Apple Watch: set lights'
data:
actions:
- action: SET_LIGHTS_ALL
title: All
- action: SET_LIGHTS_BEDROOM
title: Bedroom
- action: SET_LIGHTS_LIVING_ROOM
title: Living room
- action: SET_LIGHTS_BATHROOM
title: Bathroom
- action: SET_LIGHTS_HALL
title: Hall
- action: SET_LIGHTS_TOILET
title: Toilet
- action: SET_LIGHTS_KITCHEN
title: Kitchen
- wait_for_trigger:
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: SET_LIGHTS_ALL
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: SET_LIGHTS_BEDROOM
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: SET_LIGHTS_LIVING_ROOM
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: SET_LIGHTS_BATHROOM
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: SET_LIGHTS_HALL
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: SET_LIGHTS_TOILET
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: SET_LIGHTS_KITCHEN
timeout: 00:00:20
continue_on_timeout: false
- variables:
light: "{{\n {'SET_LIGHTS_ALL': 'all',\n 'SET_LIGHTS_BEDROOM': 'light.bedroom_lights',\n\
\ 'SET_LIGHTS_LIVING_ROOM': 'light.living_room_lights',\n 'SET_LIGHTS_BATHROOM':\
\ 'light.bathroom_ceiling',\n 'SET_LIGHTS_HALL': 'light.hall_lights,light.stairs_lights',\n\
\ 'SET_LIGHTS_TOILET': 'light.toilet',\n 'SET_LIGHTS_KITCHEN': 'light.kitchen_lights',\n\
\ }[wait.trigger.event.data.action] }}\n"
- action: '{{ iphone }}'
data:
message: 'Apple Watch: choose option'
data:
actions:
- action: LIGHTS_OFF
title: 'Off'
- action: LIGHTS_ON
title: 'On'
- action: LIGHTS_FIFTY
title: 50%
- action: LIGHTS_HUNDRED
title: 100%
- action: LIGHTS_ONE
title: 1%
- action: LIGHTS_WHITE
title: White lights
- action: LIGHTS_COZY
title: Cozy lights
- wait_for_trigger:
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: LIGHTS_OFF
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: LIGHTS_ON
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: LIGHTS_FIFTY
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: LIGHTS_HUNDRED
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: LIGHTS_ONE
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: LIGHTS_WHITE
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: LIGHTS_COZY
timeout: 00:00:20
continue_on_timeout: false
- variables:
option: '{{ wait.trigger.event.data.action }}'
- choose:
- conditions: '{{ option == ''LIGHTS_OFF'' }}'
sequence:
action: light.turn_off
data:
entity_id: '{{ light }}'
- conditions: '{{ option == ''LIGHTS_ON'' }}'
sequence:
action: script.turn_on_lights
data:
entity_id: '{{ light }}'
- conditions: '{{ option == ''LIGHTS_FIFTY'' }}'
sequence:
action: light.turn_on
data:
entity_id: '{{ light }}'
brightness_pct: 50
- conditions: '{{ option == ''LIGHTS_HUNDRED'' }}'
sequence:
action: light.turn_on
data:
entity_id: '{{ light }}'
brightness_pct: 100
- conditions: '{{ option == ''LIGHTS_ONE'' }}'
sequence:
action: light.turn_on
data:
entity_id: '{{ light }}'
brightness_pct: 1
- conditions: '{{ option == ''LIGHTS_WHITE'' and light == ''light.living_room_lights''}}'
sequence:
action: script.white_lights_living_room
- conditions: '{{ option == ''LIGHTS_WHITE'' and light == ''light.bedroom_lights''}}'
sequence:
action: script.white_lights_living_room
- conditions: '{{ option == ''LIGHTS_COZY'' and light == ''light.living_room_lights''}}'
sequence:
action: script.cozy_lights_living_room
- conditions: '{{ option == ''LIGHTS_COZY'' and light == ''light.bedroom_lights''}}'
sequence:
action: script.cozy_lights_bedroom
- alias: 'Apple Watch: temperature report'
mode: parallel
triggers:
trigger: event
event_type: ios.action_fired
event_data:
actionName: Temperature report
actions:
- variables:
iphone: notify.mobile_app_{{ trigger.event.data.sourceDeviceName.replace('-',
'_') }}
- action: '{{ iphone }}'
data:
title: Temperature
message: 'Bedroom: {{ states(''sensor.temperature_bedroom'') }}°C Living room:
{{ states(''sensor.temperature_living_room'') }}°C Hall: {{ states(''sensor.temperature_hall'')
}}°C Thermostat: {{ state_attr(''climate.thermostat'', ''temperature'') }}°C
Outside: {{ state_attr(''weather.huis'', ''temperature'') }}°C and it''s {{
states(''weather.huis'') }}
'
- alias: 'Apple Watch: portfolio value'
mode: parallel
triggers:
trigger: event
event_type: ios.action_fired
event_data:
actionName: Portfolio value
actions:
- variables:
iphone: notify.iphone_bas
- action: '{{ iphone }}'
data:
title: Portfolio value
message: '€{{ states(''sensor.portfolio_value'') }}
'
- alias: 'Apple Watch: send vacuum cleaner'
mode: parallel
triggers:
trigger: event
event_type: ios.action_fired
event_data:
actionName: Vacuum
actions:
- variables:
iphone: notify.mobile_app_{{ trigger.event.data.sourceDeviceName.replace('-',
'_') }}
- action: '{{ iphone }}'
data:
message: 'Apple Watch: vacuum'
data:
actions:
- action: VACUUM_LIVING_ROOM
title: Living room
- action: VACUUM_BEDROOM
title: Bedroom
- action: VACUUM_OFFICE
title: Office
- action: VACUUM_HALL
title: Hall
- action: VACUUM_KITCHEN
title: Kitchen
- action: VACUUM_ALL
title: All
- action: VACUUM_STOP
title: Stop and return
- wait_for_trigger:
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: VACUUM_LIVING_ROOM
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: VACUUM_BEDROOM
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: VACUUM_OFFICE
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: VACUUM_HALL
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: VACUUM_KITCHEN
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: VACUUM_ALL
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: VACUUM_STOP
timeout: 00:00:20
continue_on_timeout: false
- variables:
location: '{{ wait.trigger.event.data.action.lower().split(''vacuum_'')[1] }}'
- action: script.vacuum_command
data:
option: '{{ location }}'
- alias: 'Apple Watch: movie time'
triggers:
trigger: event
event_type: ios.action_fired
event_data:
actionName: Movie time
actions:
- action: light.turn_on
data:
entity_id:
- light.living_room_lights
brightness: 5
color_name: red
- action: light.turn_off
data:
entity_id:
- light.marble
- action: light.turn_on
data:
entity_id:
- light.tv_led
brightness: 20
- alias: 'Apple Watch: reset adaptive lighting'
triggers:
trigger: event
event_type: ios.action_fired
event_data:
actionName: Reset adaptive lighting
actions:
action: script.reset_adaptive_lighting
- alias: 'Apple Watch: set temperature'
mode: parallel
triggers:
trigger: event
event_type: ios.action_fired
event_data:
actionName: Set temperature
actions:
- variables:
iphone: notify.mobile_app_{{ trigger.event.data.sourceDeviceName.replace('-',
'_') }}
- action: '{{ iphone }}'
data:
message: 'Apple Watch: set temperature'
data:
actions:
- action: T15
title: '15'
- action: T16
title: '16'
- action: T17
title: '17'
- action: T18
title: '18'
- action: T19
title: '19'
- action: T20
title: '20'
- action: T21
title: '21'
- wait_for_trigger:
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: T15
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: T16
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: T17
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: T18
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: T19
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: T20
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: T21
timeout: 00:00:20
continue_on_timeout: false
- variables:
temperature: '{{ wait.trigger.event.data.action.split(''T'')[1] | int }}'
- action: climate.set_temperature
data:
entity_id: climate.thermostat
temperature: '{{ temperature }}'
- alias: 'Apple Watch: where is other person?'
mode: parallel
triggers:
trigger: event
event_type: ios.action_fired
event_data:
actionName: Where is
variables:
phone: "{% if trigger.event.data.sourceDeviceName == 'basnijholt-iphone' %}\n\
\ basnijholt\n{% else %}\n marcella\n{% endif %}\n"
other_person: '{% if phone == ''basnijholt'' %}Marcella{% else %}Bas{% endif %}'
device_tracker: device_tracker.{{ other_person }}_iphone
actions:
action: notify.mobile_app_{{ phone }}_iphone
data:
message: '{{ other_person }} is {{ distance(''device_tracker.basnijholt_iphone'',
''device_tracker.marcella_iphone'') | round(2) }} km away'
data:
push:
category: MAP
action_data:
latitude: '{{ state_attr(device_tracker, ''latitude'') }}'
longitude: '{{ state_attr(device_tracker, ''longitude'') }}'
- alias: 'Arriving: switch music from iPhone to speakers if no one is home'
triggers:
trigger: state
entity_id: binary_sensor.openclose_front_door
from: 'off'
to: 'on'
conditions:
- condition: state
entity_id: person.marcella
state: not_home
- condition: state
entity_id: input_boolean.guest_mode
state: 'off'
- '{{ is_state_attr(''media_player.spotify'', ''source'', ''basnijholt-iphone'')
}}'
- '{{ is_state(''media_player.spotify'', ''playing'') }}'
actions:
- action: notify.iphone_bas
data:
title: Arriving
message: Switched music from phone to speakers
- action: media_player.turn_on
entity_id: media_player.kef_ls50
- action: media_player.select_source
entity_id: media_player.kef_ls50
data:
source: Spotify
- action: media_player.select_source
entity_id: media_player.spotify
data:
source: KEF LS50
- alias: 'Bike: started charging'
triggers:
trigger: state
entity_id: switch.bike_charger
to: 'on'
from: 'off'
actions:
- action: input_datetime.set_datetime
data:
entity_id: input_datetime.bike_charger_on
timestamp: '{{ now().timestamp() }}'
- action: input_datetime.set_datetime
data:
entity_id: input_datetime.bike_charger_off
timestamp: '{{ now().timestamp() + 3600 * 6 }}'
- alias: 'Bike: stop charging'
triggers:
trigger: time_pattern
minutes: /1
conditions:
condition: template
value_template: '{{ states(''sensor.time'') == states(''input_datetime.bike_charger_off'')[0:5]
}}'
actions:
action: switch.turn_off
data:
entity_id: switch.bike_charger
- alias: 'Climate: turn on the heating 30 min before waking up'
triggers:
trigger: template
value_template: '{{ states("sensor.time")[0:5] == states("sensor.half_hour_before_alarm")
}}
'
conditions:
condition: state
entity_id:
- input_boolean.alarm_clock
- input_boolean.automatic_temperature
state: 'on'
actions:
action: script.set_high_temperature
- alias: 'Climate: turn on the heating when going home'
triggers:
trigger: numeric_state
entity_id: sensor.home_nearest_distance
below: 6
above: 1
conditions:
- condition: state
entity_id: input_boolean.automatic_temperature
state: 'on'
- condition: time
after: '16:00:00'
before: '22:00:00'
- '{{ is_state(''sensor.home_nearest_direction_of_travel'', ''towards'') }}'
- '{{ not is_state_attr(''climate.thermostat'', ''temperature'', states(''input_number.temperature_high''))
}}'
- condition: state
entity_id: binary_sensor.no_one_home
state: 'on'
actions:
- action: script.set_high_temperature
- action: notify.all_iphones
data:
title: Climate
message: Automatically turned on the heating 🥵℃
- alias: 'Climate: turn off the heating at 22:00'
triggers:
trigger: time
at: '22:00'
conditions:
- condition: state
entity_id: input_boolean.automatic_temperature
state: 'on'
- condition: state
entity_id: binary_sensor.no_one_home
state: 'off'
- '{{ not is_state_attr(''climate.thermostat'', ''temperature'', states(''input_number.temperature_low'')|float(0))
}}'
actions:
- action: script.set_low_temperature
- action: notify.all_iphones
data:
message: Turned off the heating 🥶, click to turn it on again?
data:
actions:
- action: TURN_ON_HEATING
title: Turn on heating
activationMode: background
authenticationRequired: true
destructive: true
- wait_for_trigger:
trigger: event
event_type: mobile_app_notification_action
event_data:
action: TURN_ON_HEATING
timeout: 00:00:20
continue_on_timeout: false
- action: script.set_high_temperature
- alias: 'Climate: set outside temperature every hour'
triggers:
trigger: time_pattern
hours: /1
actions:
action: mqtt.publish
data:
topic: actions/otmonitor/outside
payload: '{{ state_attr("weather.huis", "temperature") }}
'
- alias: 'Climate: warning when heating on and living room door open'
triggers:
trigger: state
entity_id: binary_sensor.openclose_bedroom
to: 'on'
for: 00:05:00
conditions: '{{ state_attr(''climate.thermostat'', ''temperature'') >= 18 }}'
actions:
- repeat:
while:
- condition: state
entity_id: binary_sensor.openclose_bedroom
state: 'on'
- condition: template
value_template: '{{ repeat.index <= 6 }}'
sequence:
- action: notify.all
data:
title: Climate
message: 'The living room door is open and the heating is on! ⚠️ Warning
#{{ repeat.index }}!'
- delay: 00:05:00
- condition: state
entity_id: binary_sensor.openclose_bedroom
state: 'on'
- action: notify.all
data:
title: Climate
message: Turning off the heating!
- action: climate.set_temperature
entity_id: climate.thermostat
data:
temperature: '{{ states("input_number.temperature_low") }}
'
- alias: 'Climate: set temperature setpoint to 50 °C'
triggers:
trigger: time_pattern
hours: /2
actions:
action: mqtt.publish
data:
topic: actions/otmonitor/maxdhwsetpt
payload: '50'
- alias: 'Climate: automatically turn off spaceheater when no-one is in the guest
room'
triggers:
- trigger: time_pattern
minutes: /10
- trigger: state
entity_id: binary_sensor.activity_in_guest_room
to: 'off'
conditions:
condition: state
entity_id: binary_sensor.activity_in_guest_room
state: 'off'
actions:
action: switch.turn_off
entity_id: switch.space_heater
- alias: 'Control switches: living room Philips Hue dimmer switch'
mode: parallel
triggers:
trigger: mqtt
topic: zigbee2mqtt/Dimmer Switch (Living room)
variables:
action: '{{ trigger.payload_json.action }}'
actions:
choose:
- conditions: '{{ action == ''off_press'' }}'
sequence:
action: script.next_colors
data:
input_select: input_select.last_script_living_room
- conditions:
- '{{ action == ''up_press'' }}'
- condition: state
entity_id: light.living_room_lights
state: 'on'
sequence:
- action: script.white_lights_living_room
- action: light.turn_on
entity_id: light.living_room_lights
data:
brightness: '255'
- conditions: '{{ action == ''on_press'' }}'
sequence:
action: script.increase_brightness
data:
group: light.living_room_lights
- conditions:
- '{{ action == ''up_press'' }}'
- condition: state
entity_id: light.living_room_lights
state: 'off'
sequence:
- action: light.turn_on
entity_id: light.living_room_lights
- conditions:
- '{{ action == ''down_press'' }}'
- condition: state
entity_id: light.living_room_lights
state: 'on'
sequence:
- action: light.turn_off
entity_id: light.living_room_lights
- conditions:
- '{{ action == ''up_hold'' }}'
- '{{ trigger.payload_json.action_duration > 2 }}'
sequence:
- action: script.reset_adaptive_lighting
- alias: 'Control switches: bedroom Philips Hue dimmer switch'
mode: parallel
triggers:
trigger: mqtt
topic: zigbee2mqtt/Dimmer Switch (Bedroom)
variables:
action: '{{ trigger.payload_json.action }}'
actions:
choose:
- conditions: '{{ action == ''off_press'' }}'
sequence:
action: script.next_colors
data:
input_select: input_select.last_script_bedroom
- conditions:
- '{{ action == ''up_press'' }}'
- condition: state
entity_id: light.bedroom_lights
state: 'on'
sequence:
- action: script.white_lights_bedroom
- action: light.turn_on
entity_id: light.bedroom_lights
data:
brightness: '255'
- conditions: '{{ action == ''on_press'' }}'
sequence:
action: script.increase_brightness
data:
group: light.bedroom_lights
- conditions:
- '{{ action == ''up_press'' }}'
- condition: state
entity_id: light.bedroom_lights
state: 'off'
sequence:
- action: light.turn_on
entity_id: light.bedroom_lights
- conditions:
- '{{ action == ''down_press'' }}'
- condition: state
entity_id: light.bedroom_lights
state: 'on'
sequence:
- action: light.turn_off
entity_id: light.bedroom_lights
- conditions:
- '{{ action == ''up_hold'' }}'
- '{{ trigger.payload_json.action_duration > 2 }}'
sequence:
- action: script.reset_adaptive_lighting
- alias: 'Control switches: bedroom IKEA dimmer switch'
mode: parallel
triggers:
- trigger: mqtt
topic: zigbee2mqtt/IKEA Remote (Bedroom)
- trigger: mqtt
topic: zigbee2mqtt/IKEA Remote (Bedroom Marcella)
variables:
action: '{{ trigger.payload_json.action }}'
personal_light: "{% if trigger.topic == 'zigbee2mqtt/IKEA Remote (Bedroom)' %}\n\
\ light.bed_led\n{% elif trigger.topic == 'zigbee2mqtt/IKEA Remote (Bedroom\
\ Marcella)' %}\n light.philips_go\n{% endif %}"
actions:
choose:
- conditions:
- '{{ action == ''brightness_move_up'' }}'
- condition: state
entity_id: light.bedroom_lights
state: 'on'
sequence:
- action: script.white_lights_bedroom
- action: light.turn_on
entity_id: light.bedroom_lights
data:
brightness: '255'
kelvin: 5500
- conditions:
- '{{ action == ''on'' }}'
- condition: state
entity_id: light.bedroom_lights
state: 'on'
sequence:
action: script.increase_brightness
data:
group: light.bedroom_lights
- conditions:
- '{{ action == ''on'' }}'
- condition: state
entity_id: light.bedroom_lights
state: 'off'
sequence:
- action: light.turn_on
entity_id: light.bedroom_lights
- conditions:
- '{{ action == ''off'' }}'
- condition: state
entity_id: light.bedroom_lights
state: 'on'
sequence:
- action: light.turn_off
entity_id: light.bedroom_lights
- conditions: '{{ action == ''arrow_left_click'' }}'
sequence:
action: script.next_colors
data:
input_select: input_select.last_script_bedroom
- conditions:
- '{{ action == ''arrow_right_click'' }}'
- '{{ is_state(personal_light, ''off'') }}'
sequence:
action: light.toggle
data:
entity_id: '{{ personal_light }}'
- conditions:
- '{{ action == ''arrow_right_click'' }}'
- '{{ is_state(personal_light, ''on'') }}'
sequence:
action: script.increase_brightness
data:
group: '{{ personal_light }}'
- conditions:
- '{{ action == ''brightness_move_down'' }}'
- '{{ is_state(''input_boolean.guest_mode'', ''off'') }}'
sequence:
- action: input_select.select_option
data:
entity_id: input_select.sleep_mode
option: total
- action: script.turn_off_everything
- conditions:
- '{{ action == ''brightness_move_down'' }}'
- '{{ is_state(''input_boolean.guest_mode'', ''on'') }}'
sequence:
- action: input_select.select_option
data:
entity_id: input_select.sleep_mode
option: total
- action: light.turn_off
data:
entity_id:
- light.bedroom_lights
- light.baby_room_lights
- alias: 'Control switches: living room Aqara Wireless Mini Switch'
mode: parallel
triggers:
trigger: event
event_type: deconz_event
event_data:
id: smart_switch_living_room
actions:
choose:
- conditions: '{{ trigger.event.data.event == 1004 }}'
sequence:
action: script.next_colors
data:
input_select: input_select.last_script_living_room
- conditions: '{{ trigger.event.data.event == 1002 }}'
sequence:
action: script.increase_brightness
data:
group: light.living_room_lights
- conditions:
- '{{ trigger.event.data.event == 1007 }}'
- condition: state
entity_id: light.living_room_lights
state: 'on'
sequence:
- action: light.turn_on
data:
flash: short
entity_id: light.cabinet_led
- action: media_player.turn_off
entity_id: media_player.tv
- wait_template: '{{ is_state(''media_player.tv'', ''off'') }}'
timeout: 00:00:30
- action: media_player.turn_off
entity_id: media_player.kef_ls50
- action: light.turn_off
entity_id: light.living_room_lights
data:
transition: 30
- conditions: '{{ trigger.event.data.event == 1001 }}'
sequence:
action: script.fix_sound
- alias: 'Control switches: bedroom Aqara Wireless Mini Switch'
mode: parallel
triggers:
- trigger: event
event_type: deconz_event
event_data:
id: smart_switch_bedroom_bas
- trigger: event
event_type: deconz_event
event_data:
id: smart_switch_bedroom_marcella
actions:
choose:
- conditions: '{{ trigger.event.data.event == 1004 }}'
sequence:
action: script.next_colors
data:
input_select: input_select.last_script_bedroom
- conditions: '{{ trigger.event.data.event == 1002 }}'
sequence:
action: script.increase_brightness
data:
group: light.bedroom_lights
- conditions: '{{ trigger.event.data.event == 1001 }}'
sequence:
action: light.turn_off
entity_id:
- light.hall_lights
- light.bedroom_lights
- light.bathroom_ceiling
- light.stairs_lights
- conditions: '{{ trigger.event.data.event == 1007 }}'
sequence:
choose:
- conditions: '{% set h, m = states("sensor.ten_minutes_before_alarm").split(":")
%} {% set t_diff = as_timestamp(now()) - as_timestamp(now().replace(hour=h|int(0),
minute=m|int(0))) %} {% set is_near_alarm = (t_diff|abs) < 1800 %} {%
set is_morning = now().replace(hour=6, minute=0) < now() < now().replace(hour=12,
minute=0) %} {{ is_near_alarm or is_morning }}
'
sequence:
action: light.turn_off
entity_id: all
- conditions:
condition: state
entity_id: input_select.sleep_mode
state: 'off'
sequence:
- action: light.turn_off
entity_id:
- light.hall_lights
- light.bedroom_lights
- light.bathroom_ceiling
- light.stairs_lights
- action: input_select.select_option
entity_id: input_select.sleep_mode
data:
option: half
- conditions:
condition: state
entity_id: input_select.sleep_mode
state: half
sequence:
- action: script.turn_off_everything
- action: input_select.select_option
entity_id: input_select.sleep_mode
data:
option: total
- conditions:
condition: state
entity_id: input_select.sleep_mode
state: total
sequence:
action: light.turn_off
entity_id: all
- alias: 'Control switches: bathroom Aqara Wireless Mini Switch'
mode: parallel
triggers:
trigger: event
event_type: deconz_event
event_data:
id: smart_switch_bathroom
actions:
choose:
- conditions: '{{ trigger.event.data.event == 1002 }}'
sequence:
action: light.toggle
entity_id: light.bathroom_lights
- conditions: '{{ trigger.event.data.event == 1004 }}'
sequence:
- action: light.turn_on
data:
entity_id: light.living_room_lights
flash: short
- alias: 'Control switches: door Aqara Wireless Mini Switch'
mode: parallel
triggers:
trigger: event
event_type: deconz_event
event_data:
id: smart_switch_door
actions:
choose:
- conditions: '{{ trigger.event.data.event == 1002 }}'
sequence:
- action: light.turn_on
data:
entity_id: light.living_room_lights
flash: short
- action: script.turn_off_everything_non_automatic
- action: script.set_low_temperature
- if: '{{ is_state_attr(''media_player.spotify'', ''source'', ''KEF LS50'')
and is_state(''media_player.spotify'', ''playing'') }}'
then:
- action: media_player.media_pause
entity_id: media_player.spotify
- conditions: '{{ trigger.event.data.event == 1004 }}'
sequence:
- action: light.turn_on
data:
flash: short
entity_id: light.ceiling_kitchen
- action: script.turn_on
data:
entity_id: light.living_room_lights
- action: script.arriving
- action: script.start_spotify
data:
source: KEF LS50
id: playlist:{{ states("sensor.favorite_playlist_of_nearest_person") }}
volume: 0.25
- alias: 'Control switches: guest room IKEA Switch'
mode: parallel
triggers:
trigger: mqtt
topic: zigbee2mqtt/IKEA Switch (Guest room)
variables:
action: '{{ trigger.payload_json.action }}'
actions:
choose:
- conditions: '{{ action == ''on'' }}'
sequence:
action: light.turn_on
entity_id: light.guest_room_lights
- conditions: '{{ action == ''off'' }}'
sequence:
action: light.turn_off
entity_id: light.guest_room_lights
- alias: 'Control switches: Guest Room Light'
mode: parallel
triggers:
trigger: mqtt
topic: zigbee2mqtt/Smart Switch (Guest Room)
variables:
action: '{{ trigger.payload_json.action }}'
actions:
choose:
- conditions: '{{ action == ''single'' }}'
sequence:
action: light.toggle
data:
entity_id: light.guest_room_lights
- conditions: '{{ action == ''double'' }}'
sequence:
action: switch.toggle
entity_id: switch.adaptive_lighting_sleep_mode_guest_room
- alias: 'Control switches: Guest Room Space heater'
mode: parallel
triggers:
trigger: mqtt
topic: zigbee2mqtt/Smart Switch (Desk)
variables:
action: '{{ trigger.payload_json.action }}'
actions:
choose:
- conditions: '{{ action == ''single'' }}'
sequence:
action: switch.toggle
data:
entity_id: switch.space_heater
- alias: 'Control switches: Baby Room Light'
mode: parallel
triggers:
trigger: mqtt
topic: zigbee2mqtt/Smart Switch (Baby Room)
variables:
action: '{{ trigger.payload_json.action }}'
actions:
choose:
- conditions: '{{ action == ''single'' }}'
sequence:
action: light.toggle
data:
entity_id:
- light.baby_room_lights
- conditions: '{{ action == ''double'' }}'
sequence:
action: switch.toggle
entity_id: switch.adaptive_lighting_sleep_mode_baby_room
- alias: 'Control switches: Mid Room Changing Table Light'
mode: parallel
triggers:
trigger: mqtt
topic: zigbee2mqtt/Smart Switch (Mid Room)
variables:
action: '{{ trigger.payload_json.action }}'
actions:
choose:
- conditions: '{{ action == ''single'' }}'
sequence:
action: light.toggle
data:
entity_id: light.mid_room
brightness_pct: 100
color_temp_kelvin: 2200
- conditions: '{{ action == ''double'' }}'
sequence:
action: script.increase_brightness
data:
group: light.mid_room
- conditions: '{{ action == ''hold'' }}'
sequence:
action: script.next_colors
data:
input_select: input_select.last_script_living_room
- alias: 'Cube: perform operation'
mode: parallel
triggers:
trigger: event
event_type: deconz_event
event_data:
id: mi_magic_cube
variables:
event: '{{ trigger.event.data.event }}'
conditions: '{{ (event | string)[1:-1] == ''00'' }}'
actions:
choose:
- conditions: '{% set event = event | string %} {% set correct_start = event[:3]
in ("100", "200", "300") %} {% set first_last_different = event[0] != event[-1]
%} {% set last_is_zero = event[-1] == 0 %} {{ correct_start and (first_last_different
or last_is_zero) }}
'
sequence:
- action: input_select.select_option
entity_id: input_select.cube_mode
data:
option: '{% set event = event | string %} {{ {"100": "Volume", "200": "Hue",
"300": "Brightness"}[event[:3]] }}
'
- condition: state
entity_id: media_player.tv
state: 'on'
- action: notify.tv
data:
message: 'Cube set to {{ states("input_select.cube_mode") }}
'
- conditions:
- '{{ event == 7007 }}'
- '{{ is_state_attr(''media_player.spotify'', ''source'', ''KEF LS50'') }}'
sequence:
- action: media_player.shuffle_set
entity_id: media_player.spotify
data:
shuffle: true
- action: media_player.media_next_track
entity_id: media_player.spotify
- conditions:
- '{{ event in (1001, 2002, 3003, 4004, 5005, 6006) }}'
- '{{ is_state_attr(''media_player.spotify'', ''source'', ''KEF LS50'') }}'
sequence:
action: media_player.media_play_pause
entity_id: media_player.spotify
- conditions: '{{ event == 7008 }}'
sequence:
action: script.start_spotify_playlist_of_nearest_person
data:
source: KEF LS50
entity_id: media_player.kef_ls50
- alias: 'Cube: rotate the cube'
triggers:
trigger: event
event_type: deconz_event
event_data:
id: mi_magic_cube
variables:
event: '{{ trigger.event.data.event }}'
conditions: '{{ (event | string)[1:-1] != ''00'' or event < 0 }}'
actions:
choose:
- conditions:
condition: state
entity_id: input_select.cube_mode
state: Hue
sequence:
- variables:
hue_sat: '{{ state_attr(''light.sphere'', ''hs_color'') or [30, 56] }}'
- action: light.turn_on
entity_id: light.living_room_lights
data:
hs_color:
- '{% set delta = event / 200 %} {% set new_hue = [([0, (hue_sat[0] + delta)]|max),
360]|min %} {{ new_hue|round(3) }}
'
- '{{ hue_sat[1] }}'
- conditions:
condition: state
entity_id: input_select.cube_mode
state: Brightness
sequence:
action: light.turn_on
entity_id: light.living_room_lights
data:
brightness: '{% set brightness = state_attr(''light.sphere'', ''brightness'')
%} {% set delta = event / 450 %} {% set new_brightness = [([0, (brightness
+ delta)]|max), 255]|min %} {{ new_brightness|int(0) }}
'
- conditions:
condition: state
entity_id: input_select.cube_mode
state: Volume
sequence:
- action: media_player.volume_set
entity_id: media_player.kef_ls50
data:
volume_level: '{% set max_change = 0.15 %} {% set dV = [event / 100 / 900,
max_change] | min %} {{ (states.media_player.kef_ls50.attributes.volume_level
+ dV)|round(2) }}
'
- condition: state
entity_id: media_player.tv
state: 'on'
- action: notify.tv
data:
message: 'Volume set to {{ state_attr("media_player.kef_ls50", "volume_level")
}}
'
- alias: 'Doorbell: click the button'
initial_state: true
triggers:
trigger: event
event_type: deconz_event
event_data:
id: smart_switch_doorbell
event: 1002
actions:
- action: light.turn_on
data:
flash: short
entity_id: all
- action: notify.all_iphones
data:
title: Doorbell
message: Someone in front of the door!
- condition: state
entity_id: media_player.tv
state: 'on'
- action: notify.tv
data:
message: Someone in front of the door!
- alias: 'Frontend: turn on dark mode'
triggers:
- trigger: time
at: '20:00'
- trigger: sun
event: sunset
conditions: '{{ is_state(''input_boolean.dark_mode'', ''off'') }}'
actions:
entity_id: input_boolean.dark_mode
action: input_boolean.turn_on
- alias: 'Frontend: turn on light mode'
triggers:
- trigger: time
at: 06:00
- trigger: sun
event: sunrise
conditions: '{{ is_state(''input_boolean.dark_mode'', ''on'') }}'
actions:
entity_id: input_boolean.dark_mode
action: input_boolean.turn_off
- alias: 'Frontend: change theme'
triggers:
- trigger: state
entity_id: input_select.theme
- trigger: state
entity_id: input_boolean.dark_mode
- trigger: state
entity_id: input_boolean.theme_alternative
- trigger: homeassistant
event: start
actions:
action: frontend.set_theme
data:
name: '{% set which = "dark" if is_state("input_boolean.dark_mode", "on") else
"light" -%} {% set name = states("input_select.theme") -%} {% set suffix =
"-alternative" if is_state("input_boolean.theme_alternative", "on") else ""
-%} ios-{{ which }}-mode-{{ name }}{{ suffix }}
'
- alias: 'Leaving: automatically turn off everything'
initial_state: 'on'
triggers:
- trigger: state
entity_id: binary_sensor.someone_in_the_house_in_last_hour
from: 'on'
to: 'off'
for: 00:01:00
- trigger: time_pattern
hours: /1
conditions:
- condition: state
entity_id:
- binary_sensor.no_one_home
- binary_sensor.anything_on
state: 'on'
- condition: state
entity_id:
- binary_sensor.someone_in_the_house_in_last_hour
- input_boolean.guest_mode
state: 'off'
actions:
- action: script.leaving
- action: notify.all_iphones
data:
title: Leaving
message: Everything automatically turned off!
- alias: 'Leaving: ask to turn off everything'
initial_state: 'on'
triggers:
- trigger: state
entity_id: person.bas
from: home
- trigger: state
entity_id: person.marcella
from: home
conditions:
- condition: state
entity_id:
- binary_sensor.no_one_home
- binary_sensor.anything_on
state: 'on'
- condition: state
entity_id: input_boolean.guest_mode
state: 'off'
actions:
- delay: 00:05:00
- condition: state
entity_id: binary_sensor.no_one_home
state: 'on'
- action: notify.all_iphones
data:
message: No one is home, turn off everything?
data:
actions:
- action: TURN_OFF_EVERYTHING
title: Turn off everything
activationMode: background
authenticationRequired: false
destructive: true
- alias: 'Leaving: turn off everything after notification'
triggers:
trigger: event
event_type: mobile_app_notification_action
event_data:
action: TURN_OFF_EVERYTHING
actions:
action: script.leaving
- alias: 'Leaving: downstairs Aqara Wireless Mini Switch'
triggers:
trigger: event
event_type: deconz_event
event_data:
id: smart_switch_door
event: 1002
actions:
- wait_for_trigger:
trigger: state
entity_id: binary_sensor.openclose_front_door
from: 'on'
to: 'off'
timeout: 00:01:00
continue_on_timeout: false
- action: script.turn_off_everything
- action: notify.all_iphones
data:
title: Bye 👋
message: See you soon!
- alias: 'Light: turn on living room'
triggers:
trigger: state
entity_id: binary_sensor.activity_in_living_room
to: 'on'
conditions:
condition: state
entity_id: input_boolean.guest_mode
state: 'off'
actions:
action: light.turn_on
entity_id: light.living_room_lights
- alias: 'Light: turn off living room'
triggers:
- trigger: state
entity_id: binary_sensor.activity_in_living_room
to: 'off'
- trigger: state
entity_id: input_select.sleep_mode
from: total
conditions:
condition: state
entity_id: input_boolean.guest_mode
state: 'off'
actions:
action: light.turn_off
entity_id: light.living_room_lights
- alias: 'Light: turn on Chrismas tree'
triggers:
- trigger: state
entity_id: input_select.sleep_mode
to:
- 'off'
- half
- trigger: state
entity_id: binary_sensor.someone_in_the_house_in_last_hour
to: 'on'
conditions:
condition: state
entity_id: binary_sensor.someone_in_the_house_in_last_hour
state: 'on'
actions:
action: switch.turn_on
entity_id: switch.christmas_tree
- alias: 'Light: turn off Chrismas tree'
triggers:
- trigger: state
entity_id: input_select.sleep_mode
to: total
- trigger: state
entity_id: binary_sensor.someone_in_the_house_in_last_hour
to: 'off'
actions:
action: switch.turn_off
entity_id: switch.christmas_tree
- alias: 'Light: toggle dinner area lights'
triggers:
trigger: state
entity_id: binary_sensor.activity_in_dinner_area
conditions:
- condition: state
entity_id: input_boolean.automatic_dinner_area_light
state: 'on'
- condition: state
entity_id: input_select.sleep_mode
state: 'off'
- condition: state
entity_id: input_boolean.guest_mode
state: 'off'
actions:
action: light.turn_{{ trigger.to_state.state }}
data:
entity_id: light.dinner_area
- alias: 'Light: turn off automatic dinner area lights when turning off lights after
18:00'
conditions:
- condition: state
entity_id: input_boolean.automatic_dinner_area_light
state: 'on'
- condition: time
after: '18:00:00'
triggers:
trigger: state
entity_id: light.dinner_area
to: 'off'
actions:
action: input_boolean.turn_off
entity_id: input_boolean.automatic_dinner_area_light
- alias: 'Light: reset automatic dinner area lights at 06:00'
triggers:
trigger: time
at: 06:00:00
actions:
action: input_boolean.turn_on
entity_id: input_boolean.automatic_dinner_area_light
- alias: 'Light: turn on kitchen counter if sleep mode is off'
triggers:
trigger: state
entity_id: binary_sensor.activity_in_kitchen
to: 'on'
conditions:
condition: state
entity_id: input_select.sleep_mode
state:
- 'off'
- half
actions:
action: light.turn_on
entity_id: light.kitchen_counter
- alias: 'Light: turn off kitchen counter'
triggers:
trigger: state
entity_id: binary_sensor.activity_in_kitchen
to: 'off'
actions:
action: light.turn_off
entity_id: light.kitchen_counter
- alias: 'Light: reboot kitchen ceiling Shelly'
triggers:
trigger: time
at: 05:00:00
actions:
action: shell_command.reboot_kitchen_ceiling
- alias: 'Light: turn on bathroom'
triggers:
trigger: state
entity_id: binary_sensor.activity_in_bathroom
to: 'on'
conditions: '{{ states(''input_select.sleep_mode'') != ''total'' }}'
actions:
action: light.turn_on
data:
entity_id: light.bathroom_lights
transition: 1
- alias: 'Light: turn off bathroom'
triggers:
trigger: state
entity_id: binary_sensor.activity_in_bathroom
to: 'off'
actions:
action: light.turn_off
data:
entity_id: light.bathroom_lights
transition: 1
- alias: 'Light: turn on hall'
mode: parallel
triggers:
- trigger: state
entity_id: binary_sensor.activity_in_hall
from: 'off'
to: 'on'
- trigger: state
entity_id: binary_sensor.openclose_front_door
from: 'off'
to: 'on'
variables:
off_lights: "{% set hall_lights = [\"light.hall_2\"]\n if is_state('input_select.sleep_mode',\
\ 'total')\n else [\"light.hall_1\", \"light.hall_2\", \"light.hall_3\"] %}\n\
{{ expand(state_attr(\"light.stairs_lights\", \"entity_id\") + hall_lights)\n\
\ | selectattr(\"state\", \"eq\", \"off\")\n | map(attribute=\"entity_id\"\
)\n | list }}\n"
conditions: '{{ (off_lights | length) > 0 }}'
actions:
alias: Turn on lights that are off
repeat:
count: '{{ off_lights | length }}'
sequence:
action: script.turn_on_lights
data:
entity_id: '{{ off_lights[repeat.index - 1] }}'
- alias: 'Light: turn off hall'
triggers:
trigger: state
entity_id: binary_sensor.activity_in_hall
from: 'on'
to: 'off'
actions:
action: light.turn_off
data:
entity_id:
- light.stairs_lights
- light.hall_lights
transition: 1
- alias: 'Light: automatically turn on the bedroom'
triggers:
trigger: state
entity_id: binary_sensor.activity_in_master_bedroom
to: 'on'
variables:
off_lights: "{{ expand(state_attr(\"light.bedroom_lights\", \"entity_id\"))\n\
\ | selectattr(\"state\", \"eq\", \"off\")\n | map(attribute=\"entity_id\"\
)\n | list }}\n"
conditions:
- '{{ (off_lights | length) > 0 }}'
- condition: state
entity_id: input_select.sleep_mode
state: 'off'
- condition: state
entity_id: input_boolean.automatic_bedroom_lights
state: 'on'
actions:
- alias: Turn on lights that are off
repeat:
count: '{{ off_lights | length }}'
sequence:
action: script.turn_on_lights
data:
entity_id: '{{ off_lights[repeat.index - 1] }}'
- action: input_boolean.turn_on
entity_id: input_boolean.bedroom_lights_automatically_turned_on
- alias: 'Light: automatically turn off the bedroom'
initial_state: 'on'
triggers:
trigger: state
entity_id: binary_sensor.activity_in_master_bedroom
to: 'off'
for: 00:08:00
conditions:
- condition: state
entity_id: input_boolean.bedroom_lights_automatically_turned_on
state: 'on'
- condition: state
entity_id: light.bedroom_lights
state: 'on'
- condition: state
entity_id: input_boolean.automatic_bedroom_lights
state: 'on'
actions:
action: light.turn_off
entity_id: light.bedroom_lights
data:
transition: 10
- alias: 'Light: turn off bedroom lights auto switch'
mode: parallel
triggers:
- trigger: state
entity_id: light.bedroom_lights
to: 'off'
- trigger: event
event_type: deconz_event
event_data:
id: dimmer_switch_bedroom
- trigger: event
event_type: deconz_event
event_data:
id: smart_switch_bedroom_bas
- trigger: event
event_type: deconz_event
event_data:
id: smart_switch_bedroom_marcella
conditions:
condition: state
entity_id: input_boolean.bedroom_lights_automatically_turned_on
state: 'on'
actions:
action: input_boolean.turn_off
entity_id: input_boolean.bedroom_lights_automatically_turned_on
- alias: 'Light: turn on automatic_bedroom_lights switch'
triggers:
trigger: time
at: '12:00'
actions:
entity_id: input_boolean.automatic_bedroom_lights
action: input_boolean.turn_on
- alias: 'Light: turn off bedroom after 2 hours of inactivity'
triggers:
trigger: state
entity_id: binary_sensor.activity_in_master_bedroom
from: 'on'
to: 'off'
for: 02:00:00
conditions: '{{ is_state(''light.bedroom_lights'', ''on'') }}'
actions:
action: light.turn_off
data:
entity_id: light.bedroom_lights
- alias: 'Light: reboot bedroom ceiling Shelly'
triggers:
trigger: time
at: '13:00:00'
actions:
action: shell_command.reboot_bedroom_ceiling
- alias: 'Light: Update input_select when bedroom lights turned off'
description: Set the input_select.last_script_bedroom such that colored lights will
be chosen
triggers:
trigger: state
entity_id: light.bedroom_lights
to: 'off'
actions:
action: input_select.select_option
data:
entity_id: input_select.last_script_bedroom
option: script.white_lights_bedroom
- alias: 'Light: turn on utility room / garage outside'
triggers:
- trigger: state
to: 'on'
entity_id: binary_sensor.activity_in_utility_room
- trigger: state
to: 'on'
entity_id: binary_sensor.activity_outside_front_door
- trigger: state
to: 'on'
entity_id: binary_sensor.activity_outside_garage
actions:
- action: light.turn_on
data:
entity_id:
- light.utility_room
transition: 1
- if: '{{ state_attr(''sun.sun'', ''elevation'') < 6 }}'
then:
- action: light.turn_on
data:
entity_id:
- light.outside_front_door
- light.garage_outside
- action: switch.turn_on
data:
entity_id: switch.string_lights_outside
- alias: 'Light: turn off utility room / garage outside'
triggers:
- trigger: state
to: 'off'
entity_id: binary_sensor.activity_in_utility_room
- trigger: state
to: 'off'
entity_id: binary_sensor.activity_outside_front_door
- trigger: state
to: 'off'
entity_id: binary_sensor.activity_outside_garage
actions:
- if: '{{ is_state(''binary_sensor.activity_in_utility_room'', ''off'') }}'
then:
- action: light.turn_off
entity_id: light.utility_room
- if: '{{ is_state(''binary_sensor.activity_outside_house'', ''off'') }}'
then:
- action: light.turn_off
data:
entity_id:
- light.outside_front_door
- light.garage_outside
- action: switch.turn_off
data:
entity_id: switch.string_lights_outside
- alias: 'Light: turn on the outside front light'
triggers:
- trigger: sun
event: sunset
offset: -01:00:00
- trigger: sun
event: sunrise
offset: -02:00:00
actions:
action: light.turn_on
entity_id: light.front_house
- alias: 'Light: turn off the outside front light'
triggers:
- trigger: time
at: 01:00:00
- trigger: sun
event: sunrise
offset: +01:00:00
actions:
action: light.turn_off
entity_id: light.front_house
- alias: 'Light: toggle guest room'
triggers:
trigger: state
entity_id: binary_sensor.activity_in_guest_room
conditions:
- condition: state
entity_id: input_boolean.guest_mode
state: 'off'
actions:
action: light.turn_{{ trigger.to_state.state }}
data:
entity_id: light.guest_room_lights
transition: 1
- alias: 'Light: toggle baby room'
triggers:
trigger: state
entity_id: binary_sensor.activity_in_baby_room
actions:
- action: light.turn_{{ trigger.to_state.state }}
data:
entity_id: light.baby_sphere
- action: light.turn_{{ trigger.to_state.state }}
data:
entity_id: light.baby_room_lights
transition: 1
- alias: 'Light: turn off living room (extra check)'
description: In case the other automation failed
triggers:
trigger: time_pattern
minutes: /59
conditions:
- condition: state
entity_id: binary_sensor.activity_in_living_room
state: 'off'
- condition: state
entity_id: light.living_room_lights
state: 'on'
actions:
action: light.turn_off
entity_id: light.living_room_lights
- alias: 'Light: turn off guest room (extra check)'
description: In case the other automation failed
triggers:
trigger: time_pattern
minutes: /10
conditions:
- condition: state
entity_id: binary_sensor.activity_in_guest_room
state: 'off'
- condition: state
entity_id: light.guest_room_lights
state: 'on'
actions:
action: light.turn_off
entity_id: light.guest_room_lights
- alias: 'Light: turn off baby room (extra check)'
description: In case the other automation failed
triggers:
trigger: time_pattern
minutes: /10
conditions:
- condition: state
entity_id: binary_sensor.activity_in_baby_room
state: 'off'
- condition: or
conditions:
- condition: state
entity_id: light.baby_sphere
state: 'on'
- condition: state
entity_id: light.baby_room_lights
state: 'on'
actions:
action: light.turn_off
entity_id:
- light.baby_room_lights
- alias: 'Light: turn off bedroom (extra check)'
description: In case the other automation failed
triggers:
trigger: time_pattern
minutes: /30
conditions:
- condition: state
entity_id: binary_sensor.activity_in_master_bedroom
state: 'off'
- condition: state
entity_id: input_boolean.automatic_bedroom_lights
state: 'on'
- condition: state
entity_id: input_boolean.bedroom_lights_automatically_turned_on
state: 'on'
actions:
- action: light.turn_off
entity_id: light.bedroom_lights
- action: light.turn_off
entity_id: input_boolean.bedroom_lights_automatically_turned_on
- alias: 'Light: turn off utility room / garage (extra check)'
description: In case the other automation failed
triggers:
trigger: time_pattern
minutes: /10
conditions:
- condition: state
entity_id: binary_sensor.activity_in_utility_room
state: 'off'
- condition: state
entity_id: binary_sensor.activity_outside_front_door
state: 'off'
- condition: state
entity_id: binary_sensor.activity_outside_garage
state: 'off'
- condition: or
conditions:
- condition: state
entity_id: light.utility_room
state: 'on'
- condition: state
entity_id: light.garage_outside
state: 'on'
- condition: state
entity_id: light.outside_front_door
state: 'on'
actions:
action: light.turn_off
entity_id:
- light.utility_room
- light.garage_outside
- light.outside_front_door
- alias: 'Light: Update Zigbee2MQTT lights input_select options'
triggers:
trigger: mqtt
topic: zigbee2mqtt/bridge/devices
actions:
- variables:
devices: '{{ trigger.payload_json }}'
- variables:
z2m_lights: "{% set ns = namespace(lights=[]) %} {% for device in devices %}\n\
\ {% if device.definition is not none %}\n {% for expose in device.definition.exposes\
\ %}\n {% if expose.type == 'light' %}\n {% set light_name = device.friendly_name\
\ %}\n {% set ns.lights = ns.lights + [light_name] %}\n {% endif\
\ %}\n {% endfor %}\n {% endif %}\n{% endfor %} {{ ns.lights }}"
- action: input_select.set_options
target:
entity_id: input_select.z2m_lights
data:
options: '{{ z2m_lights }}'
- alias: 'Light: Update Zigbee2MQTT Lights State'
description: Refresh the state of all Zigbee2MQTT lights
triggers:
trigger: time_pattern
minutes: /5
actions:
action: script.sync_z2m_to_ha_lights
mode: single
- alias: 'Lovelace: convert lovelace.json to lovelace-ui.yaml'
initial_state: 'on'
triggers:
trigger: state
entity_id: sensor.lovelace
actions:
- action: shell_command.convert_lovelace
- action: shell_command.chores
- alias: 'Mailbox: the mailbox was opened'
description: 'In the UI show the `input_boolean.mailbox_full`. It needs to
be manually switched off after getting the mail."
'
triggers:
- trigger: state
entity_id: binary_sensor.mailbox_vibration
to: 'on'
conditions:
- condition: state
entity_id: input_boolean.mailbox_full
state: 'off'
actions:
- action: notify.all_iphones
data:
title: Mailbox
message: Received mail in the mailbox!
- action: input_boolean.turn_on
data:
entity_id: input_boolean.mailbox_full
- alias: 'Media player: turn on Opt when TV is on and Spotify is not playing and not
Usb'
description: 'The speaker is connected via an optical cable to the TV. Whenever
the speakers
aren''t playing Spotify (via WiFi) directly, switch the source of the speakers
to "Opt".
'
triggers:
- trigger: state
entity_id: media_player.tv
- trigger: state
entity_id: media_player.spotify
to: paused
conditions:
- condition: state
entity_id: media_player.tv
state: 'on'
- '{{ not is_state_attr(''media_player.kef_ls50'', ''source'', ''Optical Input 1'')
}}'
- '{{ not is_state_attr(''media_player.kef_ls50'', ''source'', ''HDMI ARC'') }}'
- '{{ not is_state_attr(''media_player.tv'', ''source'', ''GALLERY'') }}'
- "{{ not (is_state_attr('media_player.kef_ls50', 'source', 'Usb')\n and\
\ is_state_attr('media_player.tv', 'source', 'HDMI 3')) }}\n"
- "{{ not (is_state_attr('media_player.spotify', 'source', 'KEF LS50')\n \
\ and is_state('media_player.spotify', 'playing')) }}\n"
actions:
action: media_player.select_source
entity_id: media_player.kef_ls50
data:
source: Optical Input 1
- alias: 'Media player: turn off speakers when turning off TV'
triggers:
trigger: state
entity_id: media_player.tv
to: 'off'
conditions:
condition: state
entity_id: media_player.kef_ls50
state: 'on'
actions:
- action: homeassistant.update_entity
entity_id: media_player.kef_ls50
- condition: template
value_template: "{{ is_state_attr(\"media_player.kef_ls50\", \"source\", \"HDMI\
\ ARC\")\n or is_state_attr(\"media_player.kef_ls50\", \"source\", \"Optical\
\ Input 1\") }}\n"
- action: media_player.turn_off
entity_id: media_player.kef_ls50
- alias: 'Media player: if speakers off and TV on, turn on the speaker on TV state
change'
triggers:
trigger: state
entity_id: media_player.tv
conditions:
- condition: state
entity_id: media_player.kef_ls50
state: 'off'
- condition: state
entity_id: media_player.tv
state: 'on'
- "{{ trigger.from_state.state != trigger.to_state.state\n or trigger.from_state.attributes[\"\
volume_level\"] != trigger.to_state.attributes[\"volume_level\"]\n or trigger.from_state.attributes[\"\
source\"] != trigger.to_state.attributes[\"source\"] }}\n"
actions:
- action: media_player.turn_on
entity_id: media_player.kef_ls50
- action: media_player.select_source
entity_id: media_player.kef_ls50
data:
source: Optical Input 1
- alias: 'Media player: update Spotify entity when TV is on every 5 seconds'
triggers:
trigger: time_pattern
seconds: /5
conditions:
- condition: state
entity_id: media_player.spotify
state: playing
- condition: state
entity_id: media_player.tv
state: 'on'
actions:
action: homeassistant.update_entity
entity_id: media_player.spotify
- alias: 'Media player: sync KEF LS50 and TV volume'
mode: single
max_exceeded: silent
triggers:
- trigger: state
entity_id: media_player.kef_ls50
attribute: volume_level
- trigger: state
entity_id: media_player.tv
attribute: volume_level
conditions:
- '{{ trigger.to_state.state != ''off'' }}'
- '{{ state_attr(''media_player.kef_ls50'', ''source'') in (''Optical Input 1'',
''HDMI ARC'', ''Usb'') }}'
actions:
repeat:
sequence:
- action: media_player.volume_set
data:
entity_id: 'media_player.{{ "tv" if (trigger.entity_id == "media_player.kef_ls50")
else "kef_ls50" }}
'
volume_level: '{{ state_attr(trigger.entity_id, "volume_level") }}
'
- delay:
milliseconds: 200
until:
- "{{ state_attr(\"media_player.tv\", \"volume_level\") == state_attr(\"media_player.kef_ls50\"\
, \"volume_level\")\n or not (is_state(\"media_player.tv\", \"on\") and\
\ is_state(\"media_player.kef_ls50\", \"on\")) }}\n"
- alias: 'Media player: automatically turn off TV and Xbox after two hours of inactivity'
triggers:
trigger: state
entity_id: binary_sensor.motion_sensor_living_room_klok
to: 'off'
for: 02:00:00
actions:
- action: media_player.turn_off
entity_id: media_player.living_room_xbox
- action: media_player.turn_off
entity_id: media_player.tv
- alias: 'Media player: Turn On Living Room TV with WakeOnLan'
triggers:
trigger: webostv.turn_on
entity_id: media_player.tv
actions:
- action: wake_on_lan.send_magic_packet
data:
mac: '!secret tv_mac_address'
- alias: 'Music: start playlist'
initial_state: 'on'
triggers:
trigger: state
entity_id: input_boolean.start_the_music
from: 'off'
to: 'on'
actions:
- action: input_boolean.turn_off
entity_id: input_boolean.start_the_music
- action: script.start_spotify_playlist_of_nearest_person
data:
source: KEF LS50
entity_id: media_player.kef_ls50
- alias: 'Music: switch music from iPhone to speakers if coming home'
triggers:
trigger: state
entity_id: binary_sensor.openclose_front_door
from: 'off'
to: 'on'
conditions:
- condition: state
entity_id: person.marcella
state: not_home
- condition: state
entity_id: input_boolean.guest_mode
state: 'off'
- '{{ is_state_attr(''media_player.spotify'', ''source'', ''basnijholt-iphone'')
}}'
- '{{ is_state(''media_player.spotify'', ''playing'') }}'
- '{{ as_timestamp(now()) - as_timestamp(states.person.bas.last_changed) < 5 * 60
}}'
- condition: numeric_state
entity_id: sensor.home_nearest_distance
below: 2
actions:
- action: media_player.turn_on
entity_id: media_player.kef_ls50
- action: media_player.select_source
entity_id: media_player.kef_ls50
data:
source: Wifi
- action: media_player.select_source
entity_id: media_player.spotify
data:
source: KEF LS50
- alias: 'Notifications: Marcella leaving work'
triggers:
trigger: state
entity_id: device_tracker.marcella_iphone_se2
to: Work Marcella Kirkland
actions:
action: notify.iphone_bas
data:
title: Leaving
message: Marcella left work
- alias: 'Notifications: front door has opened'
triggers:
trigger: state
entity_id: binary_sensor.openclose_front_door
to: 'on'
conditions:
condition: state
entity_id: input_boolean.front_door_open_warning
state: 'on'
actions:
- action: notify.mobile_app_basnijholt_iphone_13
data:
title: Security
message: Front door opened!
- action: notify.iphone_bas
data:
title: Security
message: Front door opened!
- action: input_boolean.turn_off
entity_id: input_boolean.front_door_open_warning
- alias: 'Notifications: Daily New Word Notification'
triggers:
- trigger: time
at: 07:30:00
actions:
- action: notify.mobile_app_marcella_iphone_14_pro
data:
title: Daily new word
message: "{% set words = [\n \"Mama\",\n \"Baby\",\n \"Dog\",\n \"Cat\"\
,\n \"Ball\",\n \"Car\",\n \"Book\",\n \"Milk\",\n \"Juice\",\n \"Water\"\
,\n \"Apple\",\n \"Banana\",\n \"Eat\",\n \"More\",\n \"No\",\n \"Yes\"\
,\n \"Please\",\n \"Thank you\",\n \"Hi\",\n \"Bye\",\n \"Night-night\"\
,\n \"Bath\",\n \"Diaper\",\n \"Shoe\",\n \"Hat\",\n \"Ear\",\n \"Nose\"\
,\n \"Eye\",\n \"Hand\",\n] %} {% set word = words | random %} {{ word }}\n"
data:
actions:
- action: AGREE_WORD
title: Great word!
activationMode: background
authenticationRequired: true
destructive: true
- wait_for_trigger:
trigger: event
event_type: mobile_app_notification_action
event_data:
action: AGREE_WORD
timeout: 01:00:00
continue_on_timeout: false
- action: notify.mobile_app_marcella_iphone_14_pro
data:
message: We all love you! ❤️😘🥰💖💕🌷🌼🌈✨🎉🍀
- alias: 'Plant: problem with Calathea'
triggers:
- trigger: state
entity_id: plant.calathea
to: problem
- trigger: time
at: '20:00'
conditions:
condition: state
entity_id: plant.calathea
state: problem
actions:
action: notify.all_iphones
data:
title: Plant in trouble! ⚠️☢️☠️
message: 'You need to give the Calathea 🌳 attention and love: {{ state_attr("plant.calathea",
"problem") }}!
'
- alias: 'Plant: problem with Monstera'
triggers:
- trigger: state
entity_id: plant.monstera
to: problem
- trigger: time
at: '20:00'
conditions:
condition: state
entity_id: plant.monstera
state: problem
actions:
action: notify.all_iphones
data:
title: Plant in trouble! ⚠️☢️☠️
message: 'You need to give the Monstera 🌴 attention and love: {{ state_attr("plant.monstera",
"problem") }}!
'
- alias: 'Plant: problem with Peace lily'
triggers:
- trigger: state
entity_id: plant.peace_lily
to: problem
- trigger: time
at: '20:00'
conditions:
condition: state
entity_id: plant.peace_lily
state: problem
actions:
action: notify.all_iphones
data:
title: Plant in trouble! ⚠️☢️☠️
message: 'You need to give the Peace lily 🌿 attention and love: {{ state_attr("plant.peace_lily",
"problem") }}!
'
- alias: 'Security: motion detected but we are not home'
triggers:
trigger: state
entity_id: binary_sensor.motion_detected
from: 'off'
to: 'on'
conditions:
- condition: state
entity_id: group.persons
state: not_home
- condition: state
entity_id: vacuum.valetudo_vacuum
state: docked
actions:
- action: notify.all_iphones
data:
message: 'Security: motion is detected, but we are not home.'
data:
actions:
- action: SOUND_ALARM
title: Sound alarm
activationMode: background
authenticationRequired: true
destructive: true
- wait_for_trigger:
trigger: event
event_type: mobile_app_notification_action
event_data:
action: SOUND_ALARM
timeout: 01:00:00
continue_on_timeout: false
- action: light.turn_on
entity_id: all
data:
flash: long
color_name: red
- alias: 'Security: front door has been open for more than 5 minutes'
triggers:
trigger: state
entity_id: binary_sensor.openclose_front_door
from: 'off'
to: 'on'
for: 00:05:00
actions:
action: notify.all_iphones
data:
title: Security
message: The front door has been open for more than 5 minutes.
- alias: 'Security: utility room door has been open for more than 5 minutes'
triggers:
trigger: state
entity_id: binary_sensor.openclose_front_door
from: 'off'
to: 'on'
for: 00:05:00
actions:
action: notify.all_iphones
data:
title: Security
message: The utility room door has been open for more than 5 minutes.
- alias: 'Security: no one is home but high power usage'
triggers:
- trigger: state
entity_id: binary_sensor.no_one_home
to: 'on'
- trigger: time_pattern
minutes: /10
conditions:
- condition: state
entity_id: binary_sensor.no_one_home
state: 'on'
- condition: numeric_state
entity_id: sensor.power_consumption
above: 0.7
actions:
action: notify.all_iphones
data:
title: Security
message: 'No one is home and we are using a lot of energy ({{ states(''sensor.power_consumption'')
}} kW now)! ⚡️
'
- alias: 'Security: bathroom door has opened'
triggers:
trigger: state
entity_id: binary_sensor.openclose_bathroom
to: 'on'
conditions:
condition: state
entity_id: input_boolean.bathroom_door_open_warning
state: 'on'
actions:
- action: notify.bas
data:
title: Security
message: Office door opened!
- action: notify.iphone_bas
data:
title: Security
message: Office door opened!
- action: light.turn_on
data:
entity_id:
- light.philips_go
- light.desk_led
flash: short
- action: input_boolean.turn_off
entity_id: input_boolean.bathroom_door_open_warning
- alias: 'Security: activity in master bedroom'
triggers:
trigger: state
entity_id: binary_sensor.activity_in_master_bedroom
to: 'on'
conditions:
condition: state
entity_id: input_boolean.bedroom_activity_warning
state: 'on'
actions:
- action: notify.bas
data:
title: Security
message: Activity bedroom!
- action: notify.iphone_bas
data:
title: Security
message: Activity bedroom!
- action: light.turn_on
data:
entity_id: light.desk_led
flash: short
- action: input_boolean.turn_off
entity_id: input_boolean.bedroom_activity_warning
- alias: 'Security: Door to outside open'
description: ''
triggers:
- trigger: state
entity_id: binary_sensor.door_to_outside_open
to: 'on'
for:
seconds: 15
actions:
- repeat:
while:
- condition: state
entity_id: binary_sensor.door_to_outside_open
state: 'on'
sequence:
- action: light.turn_off
data:
entity_id:
- light.garage_outside
- light.outside_front_door
- light.bedroom_outside
- light.utility_room
- delay:
seconds: 1
- action: light.turn_on
data:
entity_id:
- light.garage_outside
- light.outside_front_door
- light.bedroom_outside
- light.utility_room
brightness_pct: 100
- delay:
seconds: 1
mode: single
- alias: 'Night mode: automatically turn off when alarm turns off or at 7AM'
triggers:
- trigger: time
at: 07:00
- trigger: state
entity_id: input_boolean.alarm_clock
from: 'on'
to: 'off'
conditions:
condition: state
entity_id: input_boolean.alarm_clock
state: 'off'
actions:
entity_id: input_select.sleep_mode
action: input_select.select_option
data:
option: half
- alias: 'Night mode: automatically turn off sleeping mode at 11AM'
triggers:
trigger: time
at: '11:00'
actions:
entity_id: input_select.sleep_mode
action: input_select.select_option
data:
option: 'off'
- alias: 'Night mode: turn off automatic bedroom lights'
triggers:
trigger: state
entity_id: input_select.sleep_mode
from: 'off'
actions:
action: input_boolean.turn_off
entity_id: input_boolean.automatic_bedroom_lights
- alias: 'Night mode: set low temperature when sleep mode turns on'
triggers:
trigger: state
entity_id: input_select.sleep_mode
from: 'off'
actions:
action: script.set_low_temperature
- alias: 'Night mode: go from half to total sleeping mode'
description: 'When it is half sleeping mode and there is no activity in the house
for more than an hour go to total sleeping mode.
'
triggers:
trigger: state
entity_id: binary_sensor.activity_outside_bedroom
to: 'off'
for: 01:00:00
conditions:
condition: state
entity_id: input_select.sleep_mode
state: half
actions:
- action: input_select.select_option
entity_id: input_select.sleep_mode
data:
option: total
- action: notify.iphone_bas
data:
title: Night mode
message: Automatically switched from 'half' to 'total' sleeping mode! 💤🛌
- alias: 'Night mode: set sleeping mode in the living room'
description: 'Set the living room lights to sleep mode only when no-one is there
anymore.
'
triggers:
trigger: state
entity_id: input_select.sleep_mode
to: total
actions:
choose:
- conditions: '{{ is_state(''binary_sensor.activity_in_living_room'', ''on'')
}}'
sequence:
- wait_for_trigger:
trigger: state
entity_id: binary_sensor.activity_in_living_room
from: 'on'
to: 'off'
timeout: 06:00:00
continue_on_timeout: false
- condition: state
entity_id: input_select.sleep_mode
state: total
- action: switch.turn_on
entity_id: switch.adaptive_lighting_sleep_mode_living_room
- conditions: '{{ is_state(''binary_sensor.activity_in_living_room'', ''off'')
}}'
sequence:
action: switch.turn_on
entity_id: switch.adaptive_lighting_sleep_mode_living_room
- alias: 'System: warning about high CPU usage'
triggers:
trigger: numeric_state
entity_id: sensor.processor_use
above: 70
for:
hours: 4
actions:
action: notify.iphone_bas
data:
title: System
message: CPU usage has been above 70% for 4 hours! ⚠️🖥
- alias: 'System: warning about high CPU temperature'
triggers:
trigger: numeric_state
entity_id: sensor.cpu_temperature
above: 70
for:
hours: 4
actions:
action: notify.iphone_bas
data:
title: System
message: CPU temperature has been above 70 °C for 4 hours! ⚠️
- alias: 'System: warning about high Xbox temperature'
triggers:
trigger: numeric_state
entity_id: sensor.temperature_xbox
above: 50
actions:
- action: notify.iphone_bas
data:
title: System
message: 'Temperature in the Xbox cabinet is {{ states("sensor.temperature_xbox")
}} °C! ⚠️
'
- condition: state
entity_id: media_player.tv
state: 'on'
- action: notify.tv
data:
message: 'Temperature in the Xbox cabinet is {{ states("sensor.temperature_xbox")
}} °C! ⚠️
'
- alias: 'System: update DNS'
description: Update the DNS at Gandi to point my domain to my Home Assistant instance.
triggers:
trigger: time_pattern
minutes: /15
actions:
action: script.update_dns
- alias: 'System: run chores'
description: Run shell and Python scripts in utils folder.
triggers:
trigger: time_pattern
minutes: /15
actions:
action: shell_command.chores
- alias: 'System: MQTT sensors are not updating'
description: Check whether we are receiving messages over MQTT from my other HA
instance.
triggers:
trigger: time_pattern
minutes: /5
conditions: '{{ (as_timestamp(now()) - as_timestamp(states.sensor.power_consumption.last_changed))
> 20 * 60 }}'
actions:
- action: notify.iphone_bas
data:
title: System
message: Not receiving MQTT updates, maybe reboot the other HA instance! ⚠️
- delay: 03:00:00
- alias: 'System: battery level low'
triggers:
trigger: time
at: '14:30:00'
variables:
min_battery_level: 50
notify_service: notify.iphone_bas
battery_ids: ''
current: ''
actions:
- variables:
battery_ids: "{% set ns = namespace(battery=[]) %} {% for s in states.sensor\
\ if 'battery_level' in s.entity_id %}\n {% set ns.battery = ns.battery +\
\ [s] %}\n{% endfor %} {{ ns.battery | map(attribute='entity_id') | list }}\n"
- alias: Repeat
repeat:
count: '{{ battery_ids | length }}'
sequence:
- variables:
current: '{{ battery_ids[repeat.index - 1] }}'
- condition: template
value_template: '{{ ''iphone'' not in current and ''ipad'' not in current
}}'
- condition: template
value_template: '{{ 0 < (states(current) | float) < (min_battery_level | float
) }}'
- action: '{{ notify_service }}'
data:
title: System
message: 'Battery level low of {{ current }}: {{ states(current) }}%! ⚠️'
- alias: 'Test: listen to Adaptive Lighting events'
mode: parallel
max: 100
triggers:
- trigger: event
event_type: call_service
event_data:
action: turn_on
domain: light
- trigger: event
event_type: state_changed
conditions: '{{ trigger.event.context.id.startswith(''adapt_lgt'') }}'
actions:
action: system_log.write
data:
message: '{{ trigger.event.data.entity_id }} is changed by AL: {{ trigger.event.data
}}'
level: debug
logger: yolo.yolo
- alias: 'Test: time'
triggers:
trigger: state
entity_id: sensor.time
actions:
- variables:
t_start: '{{ as_timestamp(now()) }}'
- action: system_log.write
data:
message: took {{ as_timestamp(now()) - t_start | int }}
level: debug
logger: yolo.yolo
- alias: 'Test: flash lights'
triggers:
trigger: state
entity_id: sensor.time
variables:
lights: light.bed_led,light.philips_go,light.bed_reading_up,light.hall_3,light.toilet,light.ceiling_kitchen,light.bamboo,light.lampan,light.sphere_2,light.sphere_1,light.hall_2,light.bed_reading_down,light.corner_living_room,light.tv_led,light.stairs_up,light.stairs_down,light.ceiling_bedroom,light.ceiling_living_room,light.hall_1,light.bed_reading
actions:
- alias: Turn on lights that are off
repeat:
count: '{{ lights | length }}'
sequence:
- variables:
light: '{{ lights.split('','')[repeat.index - 1] }}'
- action: light.turn_on
data:
entity_id: '{{ light }}'
- delay: 00:00:01
- action: light.turn_off
data:
entity_id: '{{ light }}'
- alias: 'Test: call update_entity after light.turn_on/turn_off'
mode: parallel
max: 100
triggers:
- trigger: event
event_type: call_service
event_data:
action: turn_on
domain: light
- trigger: event
event_type: call_service
event_data:
action: turn_off
domain: light
actions:
- delay: 00:00:01
- action: homeassistant.update_entity
data:
entity_id: '{{ trigger.event.entity_id }}'
- alias: 'Test: Light Baby Room Loop'
mode: parallel
triggers:
trigger: homeassistant
event: start
actions:
- condition: '{{ is_state(''automation.test_light_baby_room_loop'', ''on'') }}'
- action: light.turn_on
target:
entity_id: light.baby_room
- delay: 00:00:10
- action: light.turn_off
target:
entity_id: light.baby_room
- delay: 00:00:10
- action: automation.trigger
target:
entity_id: automation.test_light_baby_room_loop
- alias: 'Utilities: washing machine or dishwasher started or finished'
triggers:
- trigger: state
entity_id: binary_sensor.dishwasher
- trigger: state
entity_id: binary_sensor.washing_machine
variables:
from_state: '{{ trigger.from_state.state }}'
to_state: '{{ trigger.to_state.state }}'
name: '{{ trigger.entity_id.split(''.'', 1)[1] }}'
conditions: '{{ (to_state == ''on'' and from_state == ''off'') or (to_state == ''off''
and from_state == ''on'') }}'
actions:
action: input_datetime.set_datetime
data:
entity_id: input_datetime.{{ name }}_{{ to_state }}
timestamp: '{{ now().timestamp() }}'
- alias: 'Utilities: washing machine notification'
triggers:
trigger: state
entity_id: binary_sensor.washing_machine
from: 'off'
to: 'on'
actions:
action: script.utility_notification
data:
name: washing_machine
emojis: 👚👕
- alias: 'Utilities: dishwasher notification'
triggers:
trigger: state
entity_id: binary_sensor.dishwasher
from: 'off'
to: 'on'
actions:
action: script.utility_notification
data:
name: dishwasher
emojis: 🍽🍳
- alias: 'Vacation mode: auto turn on'
initial_state: 'on'
triggers:
trigger: state
entity_id: group.persons
from: home
to: not_home
for: '24:00:00'
conditions:
- condition: state
entity_id: input_boolean.guest_mode
state: 'off'
actions:
- action: input_boolean.turn_on
entity_id: input_boolean.vacation_mode
- action: notify.all_iphones
data:
title: Vacation mode
message: No one at home for 24 hours, switching on vacation mode.
- alias: 'Vacation mode: auto turn off'
initial_state: 'on'
triggers:
trigger: state
entity_id: group.persons
from: not_home
to: home
conditions:
- condition: state
entity_id: input_boolean.vacation_mode
state: 'on'
- condition: state
entity_id: input_boolean.guest_mode
state: 'off'
actions:
- action: input_boolean.turn_off
entity_id: input_boolean.vacation_mode
- action: notify.all_iphones
data:
title: Vacation mode
message: Welcome back! Switching off the vacation mode.
- alias: 'Vacuum: started cleaning'
triggers:
trigger: state
entity_id: vacuum.valetudo_vacuum
from: docked
to: cleaning
actions:
- action: notify.all_iphones
data:
title: Robot
message: Robot started to clean!
- action: input_datetime.set_datetime
data:
entity_id: input_datetime.vacuum_on
datetime: '{{ now().isoformat() }}'
- alias: 'Vacuum: stopped cleaning'
triggers:
trigger: state
entity_id: vacuum.valetudo_vacuum
from: returning
to: docked
actions:
- action: input_boolean.turn_on
entity_id: input_boolean.cleaned_today
- action: input_datetime.set_datetime
data:
entity_id: input_datetime.vacuum_off
datetime: '{{ now().isoformat() }}'
- action: notify.all_iphones
data:
title: Robot
message: Cleanup successful after {{ (states('sensor.robot_vacuum_last_clean_duration')
| int / 60) | round }} minutes
- alias: 'Vacuum: reminder notification'
triggers:
trigger: time
at: 08:00
conditions:
condition: state
entity_id: binary_sensor.vacuum_day
state: 'on'
actions:
action: notify.all_iphones
data:
title: Robot
message: Vacuum will go today, make sure to leave the doors open and leave nothing
on the floor!
- alias: 'Vacuum: cleanup if nobody is home'
triggers:
- trigger: time
at: '13:00'
- trigger: state
entity_id: group.persons
from: home
to: not_home
conditions:
- condition: time
after: '13:00:00'
before: '22:00:00'
- condition: state
entity_id: binary_sensor.vacuum_day
state: 'on'
- condition: state
entity_id: group.persons
state: not_home
- condition: state
entity_id: input_boolean.cleaned_today
state: 'off'
- condition: state
entity_id: input_boolean.guest_mode
state: 'off'
- condition: state
entity_id: input_boolean.vacation_mode
state: 'off'
actions:
action: vacuum.start
entity_id: vacuum.valetudo_vacuum
- alias: 'Vacuum: reset cleaned today'
initial_state: 'on'
triggers:
trigger: time
at: 00:00:00
actions:
action: input_boolean.turn_off
entity_id: input_boolean.cleaned_today
- alias: 'Vacuum: reset to standard mode'
triggers:
trigger: state
entity_id: vacuum.living_room
to: docked
actions:
action: vacuum.set_fan_speed
entity_id: vacuum.valetudo_vacuum
data:
fan_speed: Standard
- alias: 'Work: go home notification'
triggers:
trigger: state
entity_id: binary_sensor.worked_enough_today
from: 'off'
to: 'on'
conditions:
- condition: state
entity_id: binary_sensor.workday_sensor
state: 'on'
- condition: state
entity_id: input_boolean.work_hour_notification_sent
state: 'off'
actions:
- action: notify.iphone_bas
data:
title: Work
message: You have worked 8 hours today, very good! Go home 🎉
- action: input_boolean.turn_on
entity_id: input_boolean.work_hour_notification_sent
- alias: 'Work: reset input_boolean at midnight'
triggers:
trigger: time
at: 00:00
conditions:
condition: state
entity_id: input_boolean.work_hour_notification_sent
state: 'on'
actions:
action: input_boolean.turn_off
entity_id: input_boolean.work_hour_notification_sent
- alias: 'Work: Bas left work notification for Marcella'
triggers:
trigger: state
entity_id: person.bas
from: Work
conditions:
condition: time
after: '15:00:00'
before: '22:00:00'
actions:
action: notify.all_iphones
data:
title: Work
message: Bas has left work! ♥️🎉