791 lines
19 KiB
YAML
791 lines
19 KiB
YAML
- alias: Bedroom Blackout
|
|
id: bedroom_blackout
|
|
description: 'Close the bedroom blackout blinds when we''re sleeping in, and open
|
|
when we wake up.
|
|
|
|
'
|
|
mode: queued
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: sensor.weather
|
|
to: night
|
|
- trigger: state
|
|
entity_id: sensor.weather
|
|
from: night
|
|
not_to: unavailable
|
|
- trigger: state
|
|
entity_id: binary_sensor.anyone_asleep
|
|
to:
|
|
- 'on'
|
|
- 'off'
|
|
- trigger: state
|
|
entity_id: binary_sensor.bedroom_window
|
|
to: 'off'
|
|
for:
|
|
seconds: 3
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- not:
|
|
- condition: state
|
|
entity_id: sensor.weather
|
|
state: night
|
|
- condition: state
|
|
entity_id: binary_sensor.anyone_asleep
|
|
state: 'off'
|
|
sequence:
|
|
- action: scene.turn_on
|
|
target:
|
|
entity_id: scene.bedroom_blackout_open
|
|
- conditions:
|
|
- not:
|
|
- condition: state
|
|
entity_id: sensor.weather
|
|
state: night
|
|
- condition: state
|
|
entity_id: binary_sensor.anyone_asleep
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: binary_sensor.bedroom_window
|
|
state: 'off'
|
|
sequence:
|
|
- action: scene.turn_on
|
|
target:
|
|
entity_id: scene.bedroom_blackout
|
|
- conditions:
|
|
- condition: sun
|
|
before: sunrise
|
|
after: sunrise
|
|
after_offset: -03:00:00
|
|
- condition: state
|
|
entity_id: binary_sensor.anyone_asleep
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: binary_sensor.bedroom_window
|
|
state: 'off'
|
|
sequence:
|
|
- action: scene.turn_on
|
|
target:
|
|
entity_id: scene.bedroom_blackout
|
|
- alias: Bedroom Play
|
|
id: bedroom_play
|
|
description: 'Set scenes while playing in the bedroom.
|
|
|
|
'
|
|
mode: queued
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: input_boolean.bedroom_play
|
|
to:
|
|
- 'on'
|
|
- 'off'
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.bedroom_play
|
|
state: 'on'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.bedroom_bed_left
|
|
- light.bedroom_bed_right
|
|
- light.bedroom_wall_left
|
|
- light.bedroom_wall_right
|
|
- light.bedroom_left_bedside
|
|
- light.bedroom_right_bedside
|
|
- delay:
|
|
seconds: 3
|
|
- action: scene.create
|
|
data:
|
|
scene_id: bedroom_play
|
|
snapshot_entities:
|
|
- light.bedroom_bed_left
|
|
- light.bedroom_bed_right
|
|
- light.bedroom_wall_left
|
|
- light.bedroom_wall_right
|
|
- light.bedroom_left_bedside
|
|
- light.bedroom_right_bedside
|
|
- action: script.bedroom_play
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.bedroom_play
|
|
state: 'off'
|
|
sequence:
|
|
- action: scene.turn_on
|
|
target:
|
|
entity_id: scene.bedroom_play
|
|
- action: scene.delete
|
|
target:
|
|
entity_id: scene.bedroom_play
|
|
- alias: Dining Room Blinds
|
|
id: dining_room_blinds
|
|
description: 'Open and close the dining room window blinds based on the time of
|
|
day, sun position, and weather.
|
|
|
|
'
|
|
mode: queued
|
|
triggers:
|
|
- trigger: numeric_state
|
|
entity_id: sun.sun
|
|
attribute: azimuth
|
|
above: 220
|
|
- trigger: numeric_state
|
|
entity_id: sun.sun
|
|
attribute: elevation
|
|
below: 55
|
|
- trigger: numeric_state
|
|
entity_id: sun.sun
|
|
attribute: elevation
|
|
below: 45
|
|
- trigger: numeric_state
|
|
entity_id: sun.sun
|
|
attribute: elevation
|
|
below: 24
|
|
- trigger: numeric_state
|
|
entity_id: sun.sun
|
|
attribute: elevation
|
|
below: 5.5
|
|
- trigger: state
|
|
entity_id: sensor.weather
|
|
not_to: unavailable
|
|
- trigger: state
|
|
entity_id: binary_sensor.dining_room_top_windows
|
|
to: 'off'
|
|
for:
|
|
seconds: 3
|
|
id: close
|
|
- trigger: state
|
|
entity_id: binary_sensor.dining_room_bottom_windows
|
|
to: 'off'
|
|
for:
|
|
seconds: 3
|
|
id: close
|
|
- trigger: state
|
|
entity_id: media_player.loft_tv
|
|
to:
|
|
- 'on'
|
|
- 'off'
|
|
- trigger: state
|
|
entity_id: input_boolean.dining_room_play
|
|
to:
|
|
- 'on'
|
|
- 'off'
|
|
- trigger: state
|
|
entity_id: input_boolean.loft_play
|
|
to:
|
|
- 'on'
|
|
- 'off'
|
|
actions:
|
|
- variables:
|
|
target: none
|
|
- choose:
|
|
- conditions:
|
|
- condition: numeric_state
|
|
entity_id: sun.sun
|
|
attribute: azimuth
|
|
above: 220
|
|
- condition: numeric_state
|
|
entity_id: sun.sun
|
|
attribute: elevation
|
|
above: 5.5
|
|
below: 24
|
|
- condition: state
|
|
entity_id: sensor.weather
|
|
state:
|
|
- hot-day
|
|
- day
|
|
sequence:
|
|
- variables:
|
|
target: 100
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.dining_room_play
|
|
state: 'on'
|
|
sequence:
|
|
- variables:
|
|
target: 100
|
|
- conditions:
|
|
- condition: numeric_state
|
|
entity_id: sun.sun
|
|
attribute: azimuth
|
|
above: 220
|
|
- condition: numeric_state
|
|
entity_id: sun.sun
|
|
attribute: elevation
|
|
above: 24
|
|
below: 45
|
|
- condition: state
|
|
entity_id: sensor.weather
|
|
state:
|
|
- hot-day
|
|
- day
|
|
sequence:
|
|
- variables:
|
|
target: 66
|
|
- conditions:
|
|
- condition: numeric_state
|
|
entity_id: sun.sun
|
|
attribute: azimuth
|
|
above: 220
|
|
- condition: numeric_state
|
|
entity_id: sun.sun
|
|
attribute: elevation
|
|
above: 45
|
|
below: 55
|
|
- condition: state
|
|
entity_id: sensor.weather
|
|
state:
|
|
- hot-day
|
|
- day
|
|
sequence:
|
|
- variables:
|
|
target: 33
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.loft_play
|
|
state: 'on'
|
|
sequence:
|
|
- variables:
|
|
target: 33
|
|
- conditions:
|
|
- not:
|
|
- condition: state
|
|
entity_id: sensor.weather
|
|
state: night
|
|
- condition: state
|
|
entity_id: media_player.loft_tv
|
|
state: 'on'
|
|
sequence:
|
|
- variables:
|
|
target: 33
|
|
- conditions:
|
|
- not:
|
|
- condition: state
|
|
entity_id: sensor.weather
|
|
state: night
|
|
sequence:
|
|
- variables:
|
|
target: 0
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: sensor.weather
|
|
state: night
|
|
sequence:
|
|
- variables:
|
|
target: -1
|
|
- choose:
|
|
- conditions:
|
|
- '{{ target >= 100 }}'
|
|
- condition: state
|
|
entity_id: binary_sensor.dining_room_top_windows
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: binary_sensor.dining_room_bottom_windows
|
|
state: 'off'
|
|
sequence:
|
|
- action: scene.turn_on
|
|
target:
|
|
entity_id: scene.dining_room_evening_sun
|
|
- conditions:
|
|
- '{{ target >= 66 }}'
|
|
- condition: state
|
|
entity_id: binary_sensor.dining_room_top_windows
|
|
state: 'off'
|
|
sequence:
|
|
- action: scene.turn_on
|
|
target:
|
|
entity_id: scene.dining_room_late_afternoon_sun
|
|
- conditions:
|
|
- '{{ target >= 33 }}'
|
|
- condition: state
|
|
entity_id: binary_sensor.dining_room_top_windows
|
|
state: 'off'
|
|
sequence:
|
|
- action: scene.turn_on
|
|
target:
|
|
entity_id: scene.dining_room_afternoon_sun
|
|
- conditions:
|
|
- '{{ target >= 0 }}'
|
|
sequence:
|
|
- action: scene.turn_on
|
|
target:
|
|
entity_id: scene.dining_room_daytime
|
|
- conditions:
|
|
- '{{ target < 0 }}'
|
|
sequence:
|
|
- action: scene.turn_on
|
|
target:
|
|
entity_id: scene.dining_room_nighttime
|
|
- alias: Dining Room Play
|
|
id: dining_room_play
|
|
description: 'Set scenes while playing in the Dining Room.
|
|
|
|
'
|
|
mode: queued
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: input_boolean.dining_room_play
|
|
to:
|
|
- 'on'
|
|
- 'off'
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.dining_room_play
|
|
state: 'on'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.dining_room_beam
|
|
- light.dining_room_south_left
|
|
- light.dining_room_south_right
|
|
- light.dining_room_west_left
|
|
- light.dining_room_west_center
|
|
- light.dining_room_west_right
|
|
- delay:
|
|
seconds: 3
|
|
- action: scene.create
|
|
data:
|
|
scene_id: dining_room_play
|
|
snapshot_entities:
|
|
- light.dining_room_beam
|
|
- light.dining_room_south_left
|
|
- light.dining_room_south_right
|
|
- light.dining_room_west_left
|
|
- light.dining_room_west_center
|
|
- light.dining_room_west_right
|
|
- action: script.dining_room_play
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.dining_room_play
|
|
state: 'off'
|
|
sequence:
|
|
- action: scene.turn_on
|
|
target:
|
|
entity_id: scene.dining_room_play
|
|
- action: scene.delete
|
|
target:
|
|
entity_id: scene.dining_room_play
|
|
- alias: Dining Room Tabletop
|
|
id: dining_room_tabletop
|
|
description: 'Set dining room light scenes based on the tabletop TV.
|
|
|
|
'
|
|
mode: queued
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: media_player.dining_room_tabletop
|
|
to: null
|
|
id: tabletop
|
|
- trigger: state
|
|
entity_id: sensor.weather
|
|
to: night
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: media_player.dining_room_tabletop
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: sensor.weather
|
|
state: night
|
|
sequence:
|
|
- action: script.dining_room_dnd
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: media_player.dining_room_tabletop
|
|
state: 'on'
|
|
sequence:
|
|
- action: script.dining_room_game_setup
|
|
- conditions:
|
|
- condition: trigger
|
|
id: tabletop
|
|
sequence:
|
|
- action: script.dining_room_game_over
|
|
- alias: Door Opened Notification
|
|
id: door_opened_notification
|
|
description: 'Notify when a door is opened while nobody is home.
|
|
|
|
'
|
|
mode: single
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.doors_opened_while_not_occupied
|
|
to: 'on'
|
|
actions:
|
|
- action: notify.mobile_app_scottys_iphone
|
|
data:
|
|
title: Door Opened
|
|
message: '{% set door = state_attr(''binary_sensor.doors_opened_while_not_occupied'',
|
|
''door'') %}
|
|
|
|
{{ state_attr(door, ''friendly_name'') | default(door) }}
|
|
|
|
'
|
|
- alias: Gaming Power Limit
|
|
id: gaming_power_limit
|
|
description: 'Limit "Vecna" GPU power, and reduce home power consumption, while
|
|
both gaming PCs are on.
|
|
|
|
'
|
|
mode: queued
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.gaming_power_limit
|
|
to:
|
|
- 'on'
|
|
- 'off'
|
|
- trigger: state
|
|
entity_id: sensor.vecna_lastsystemstatechange
|
|
to: null
|
|
actions:
|
|
- if:
|
|
- condition: state
|
|
entity_id: binary_sensor.gaming_power_limit
|
|
state: 'on'
|
|
then:
|
|
- action: button.press
|
|
target:
|
|
entity_id: button.vecna_power_limit_enable
|
|
- action: switch.turn_off
|
|
target:
|
|
entity_id:
|
|
- switch.office_wall_desk_right_switch_top
|
|
- switch.loft_wall_south_switch_top
|
|
else:
|
|
- action: button.press
|
|
target:
|
|
entity_id: button.vecna_power_limit_disable
|
|
- action: switch.turn_on
|
|
target:
|
|
entity_id:
|
|
- switch.office_wall_desk_right_switch_top
|
|
- switch.loft_wall_south_switch_top
|
|
- alias: Home Off
|
|
id: home_off
|
|
description: 'Turn things off when the last person goes to sleep, or the home is
|
|
no longer occupied.
|
|
|
|
'
|
|
mode: single
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.anyone_home
|
|
to: 'off'
|
|
- trigger: state
|
|
entity_id: binary_sensor.anyone_asleep
|
|
to: 'on'
|
|
actions:
|
|
- action: light.turn_off
|
|
continue_on_error: true
|
|
target:
|
|
area_id:
|
|
- kitchen
|
|
- downstairs_bathroom
|
|
- bathroom
|
|
- stairs
|
|
- roof
|
|
entity_id:
|
|
- light.dining_room_chandelier
|
|
- light.dining_room_spots
|
|
- light.bedroom_left_closet
|
|
- light.bedroom_right_closet
|
|
- action: media_player.media_pause
|
|
continue_on_error: true
|
|
target:
|
|
entity_id:
|
|
- media_player.dining_room
|
|
- media_player.kitchen
|
|
- media_player.office
|
|
- media_player.bedroom
|
|
- media_player.loft
|
|
- media_player.bathroom
|
|
- media_player.downstairs_bathroom
|
|
- action: media_player.turn_off
|
|
continue_on_error: true
|
|
target:
|
|
entity_id:
|
|
- media_player.loft_tv
|
|
- alias: Kitchen Blinds
|
|
id: kitchen_blinds
|
|
description: 'Open and close the kitchen window blinds based on the time of day,
|
|
sun position, and weather.
|
|
|
|
'
|
|
mode: queued
|
|
triggers:
|
|
- trigger: numeric_state
|
|
entity_id: sun.sun
|
|
attribute: azimuth
|
|
above: 115
|
|
- trigger: numeric_state
|
|
entity_id: sun.sun
|
|
attribute: azimuth
|
|
above: 235
|
|
- trigger: state
|
|
entity_id: sensor.weather
|
|
not_to: unavailable
|
|
- trigger: state
|
|
entity_id: media_player.loft_tv
|
|
to:
|
|
- 'on'
|
|
- 'off'
|
|
- trigger: state
|
|
entity_id: input_boolean.dining_room_play
|
|
to:
|
|
- 'on'
|
|
- 'off'
|
|
- trigger: state
|
|
entity_id: input_boolean.loft_play
|
|
to:
|
|
- 'on'
|
|
- 'off'
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: numeric_state
|
|
entity_id: sun.sun
|
|
attribute: azimuth
|
|
above: 115
|
|
below: 235
|
|
- condition: state
|
|
entity_id: sensor.weather
|
|
state: hot-day
|
|
sequence:
|
|
- action: scene.turn_on
|
|
target:
|
|
entity_id: scene.kitchen_sun
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.dining_room_play
|
|
state: 'on'
|
|
sequence:
|
|
- action: scene.turn_on
|
|
target:
|
|
entity_id: scene.kitchen_sun
|
|
- conditions:
|
|
- not:
|
|
- condition: state
|
|
entity_id: sensor.weather
|
|
state: night
|
|
- condition: state
|
|
entity_id: media_player.loft_tv
|
|
state: 'on'
|
|
sequence:
|
|
- action: scene.turn_on
|
|
target:
|
|
entity_id: scene.kitchen_nighttime
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.loft_play
|
|
state: 'on'
|
|
sequence:
|
|
- action: scene.turn_on
|
|
target:
|
|
entity_id: scene.kitchen_nighttime
|
|
- conditions:
|
|
- not:
|
|
- condition: state
|
|
entity_id: sensor.weather
|
|
state: night
|
|
sequence:
|
|
- action: scene.turn_on
|
|
target:
|
|
entity_id: scene.kitchen_daytime
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: sensor.weather
|
|
state: night
|
|
sequence:
|
|
- action: scene.turn_on
|
|
target:
|
|
entity_id: scene.kitchen_nighttime
|
|
- alias: Kitchen Home at Night
|
|
id: kitchen_home_at_night
|
|
description: 'Turns on the entrance lights when anyone comes home late at night.
|
|
|
|
'
|
|
mode: restart
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.anyone_home
|
|
to: 'on'
|
|
not_from: unavailable
|
|
- trigger: zone
|
|
entity_id:
|
|
- person.scotty
|
|
zone: zone.home
|
|
event: enter
|
|
conditions:
|
|
- condition: state
|
|
entity_id: sensor.weather
|
|
state: night
|
|
actions:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.entrance
|
|
- delay:
|
|
minutes: 15
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id: light.entrance
|
|
- alias: Kitchen Lights
|
|
id: kitchen_lights
|
|
description: 'Turns on the kitchen counter lights for 15 minutes after motion is
|
|
detected, or when anyone comes home at night.
|
|
|
|
'
|
|
mode: restart
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.dining_room_motion_occupancy
|
|
to: 'on'
|
|
- trigger: state
|
|
entity_id: binary_sensor.anyone_home
|
|
to: 'on'
|
|
not_from: unavailable
|
|
- trigger: zone
|
|
entity_id:
|
|
- person.scotty
|
|
zone: zone.home
|
|
event: enter
|
|
conditions:
|
|
- condition: state
|
|
entity_id: sensor.weather
|
|
state:
|
|
- night
|
|
- cloudy-day
|
|
- or:
|
|
- condition: state
|
|
entity_id: light.kitchen_counter
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: automation.kitchen_lights
|
|
attribute: current
|
|
state: 1
|
|
- condition: state
|
|
entity_id: binary_sensor.anyone_home
|
|
state: 'on'
|
|
actions:
|
|
- if:
|
|
- condition: state
|
|
entity_id: light.kitchen_counter
|
|
state: 'off'
|
|
then:
|
|
- action: light.turn_on
|
|
data:
|
|
brightness_pct: 25
|
|
target:
|
|
entity_id: light.kitchen_counter
|
|
- delay:
|
|
seconds: 3
|
|
- wait_for_trigger:
|
|
- trigger: state
|
|
entity_id: light.kitchen_counter
|
|
timeout:
|
|
minutes: 15
|
|
- if:
|
|
- '{{ not wait.completed }}'
|
|
then:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id: light.kitchen_counter
|
|
- alias: Loft Play
|
|
id: loft_play
|
|
description: 'Set scenes while playing in the Loft.
|
|
|
|
'
|
|
mode: queued
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: input_boolean.loft_play
|
|
to:
|
|
- 'on'
|
|
- 'off'
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.loft_play
|
|
state: 'on'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.loft_balcony_left
|
|
- light.loft_balcony_center
|
|
- light.loft_balcony_right
|
|
- light.loft_wall_left
|
|
- light.loft_wall_center
|
|
- light.loft_wall_right
|
|
- light.loft_east_left
|
|
- light.loft_east_right
|
|
- light.loft_south_left
|
|
- light.loft_south_right
|
|
- delay:
|
|
seconds: 3
|
|
- action: scene.create
|
|
data:
|
|
scene_id: loft_play
|
|
snapshot_entities:
|
|
- light.loft_balcony_left
|
|
- light.loft_balcony_center
|
|
- light.loft_balcony_right
|
|
- light.loft_wall_left
|
|
- light.loft_wall_center
|
|
- light.loft_wall_right
|
|
- light.loft_east_left
|
|
- light.loft_east_right
|
|
- light.loft_south_left
|
|
- light.loft_south_right
|
|
- action: script.loft_play
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.loft_play
|
|
state: 'off'
|
|
sequence:
|
|
- action: scene.turn_on
|
|
target:
|
|
entity_id: scene.loft_play
|
|
- action: scene.delete
|
|
target:
|
|
entity_id: scene.loft_play
|
|
- alias: Loft TV
|
|
id: loft_tv
|
|
description: 'Turn loft ceiling lights off while the TV is on, and back on again
|
|
when TV is turned off.
|
|
|
|
'
|
|
mode: queued
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: media_player.loft_tv
|
|
to:
|
|
- 'on'
|
|
- 'off'
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: media_player.loft_tv
|
|
state: 'on'
|
|
sequence:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id: light.loft_ceiling
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: media_player.loft_tv
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: light.loft_wall
|
|
state: 'on'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.loft_ceiling
|