2323 lines
64 KiB
YAML
2323 lines
64 KiB
YAML
start_netflix:
|
|
alias: Start Netflix (Living Room)
|
|
sequence:
|
|
- service: media_player.select_source
|
|
target:
|
|
entity_id: media_player.living_room_tv
|
|
data:
|
|
source: com.netflix.ninja
|
|
mode: single
|
|
icon: mdi:netflix
|
|
stop_netflix:
|
|
alias: Stop Netflix (Living Room)
|
|
sequence:
|
|
- service: media_player.select_source
|
|
target:
|
|
entity_id: media_player.living_room_tv
|
|
data:
|
|
source: '!com.netflix.ninja'
|
|
mode: single
|
|
icon: mdi:netflix
|
|
give_me_darkness:
|
|
alias: Give Me Darkness
|
|
sequence:
|
|
- service: input_boolean.turn_on
|
|
data: {}
|
|
target:
|
|
entity_id: input_boolean.give_me_darkness
|
|
alias: Turn on input boolean
|
|
- delay:
|
|
hours: 0
|
|
minutes: 0
|
|
seconds: 1
|
|
milliseconds: 0
|
|
- service: script.volume_reset
|
|
data: {}
|
|
- service: script.evening_on_first_floor
|
|
data:
|
|
give_me_darkness: 1
|
|
- service: script.evening_on_second_floor
|
|
data: {}
|
|
- service: mqtt.publish
|
|
data:
|
|
qos: '2'
|
|
retain: true
|
|
topic: house/time/give_me_darkness
|
|
payload: 'on'
|
|
- alias: Security decision
|
|
if:
|
|
- condition: and
|
|
conditions:
|
|
- condition: state
|
|
entity_id: person.tony_stork
|
|
state: home
|
|
- condition: state
|
|
entity_id: person.christina_stork
|
|
state: home
|
|
- condition: state
|
|
entity_id: input_boolean.guest_mode
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: alarm_control_panel.nerdhome_alarm_panel
|
|
state: disarmed
|
|
alias: Both adults are home, guest mode off, security disarmed
|
|
then:
|
|
- alias: Auto or manual trigger?
|
|
if:
|
|
- condition: template
|
|
value_template: '{{ auto == 1 }}'
|
|
alias: Triggered by automation
|
|
then:
|
|
- service: alarm_control_panel.alarm_arm_home
|
|
data: {}
|
|
target:
|
|
entity_id: alarm_control_panel.nerdhome_alarm_panel
|
|
alias: Arm security
|
|
else:
|
|
- service: script.activate_alexa_actionable_notification
|
|
data:
|
|
text: <voice name='Joanna'><prosody rate='150%'>Would you like me to arm
|
|
the security system?</prosody></voice>
|
|
event_id: actionable_notification_night_security_arm
|
|
alexa_device: media_player.living_room_echo_dot
|
|
alias: Ask to arm security
|
|
mode: single
|
|
icon: mdi:weather-night
|
|
start_youtube:
|
|
alias: Start Youtube (Living Room)
|
|
sequence:
|
|
- service: media_player.select_source
|
|
target:
|
|
entity_id: media_player.living_room_tv
|
|
data:
|
|
source: com.google.android.youtube.tv
|
|
mode: single
|
|
icon: mdi:youtube
|
|
stop_youtube:
|
|
alias: Stop Youtube (Living Room)
|
|
sequence:
|
|
- service: media_player.select_source
|
|
target:
|
|
entity_id: media_player.living_room_tv
|
|
data:
|
|
source: '!com.google.android.youtube.tv'
|
|
mode: single
|
|
icon: mdi:youtube
|
|
start_twitch:
|
|
alias: Start Twitch (Living Room)
|
|
sequence:
|
|
- service: media_player.select_source
|
|
target:
|
|
entity_id: media_player.living_room_tv
|
|
data:
|
|
source: tv.twitch.android.app
|
|
mode: single
|
|
icon: mdi:twitch
|
|
stop_twitch:
|
|
alias: Stop Twitch (Living Room)
|
|
sequence:
|
|
- service: media_player.select_source
|
|
data:
|
|
source: '!tv.twitch.android.app'
|
|
target:
|
|
entity_id: media_player.living_room_tv
|
|
mode: single
|
|
icon: mdi:twitch
|
|
start_spotify:
|
|
alias: Start Spotify (Living Room)
|
|
sequence:
|
|
- service: media_player.select_source
|
|
target:
|
|
entity_id: media_player.living_room_tv
|
|
data:
|
|
source: com.spotify.tv.android
|
|
mode: single
|
|
icon: mdi:spotify
|
|
stop_spotify:
|
|
alias: Stop Spotify (Living Room)
|
|
sequence:
|
|
- service: media_player.select_source
|
|
target:
|
|
entity_id: media_player.living_room_tv
|
|
data:
|
|
source: '!com.spotify.tv.android'
|
|
mode: single
|
|
icon: mdi:spotify
|
|
alexa_tts_test:
|
|
alias: Alexa TTS Test
|
|
sequence:
|
|
- service: notify.alexa_media
|
|
data:
|
|
data:
|
|
method: all
|
|
type: announce
|
|
target: Living Room Echo Dot
|
|
message: I farted
|
|
mode: single
|
|
icon: mdi:test-tube
|
|
kallen_timer_cancel:
|
|
sequence:
|
|
- service: timer.cancel
|
|
target:
|
|
entity_id: timer.kallen_timer
|
|
mode: single
|
|
alias: Kallen Timer - Cancel
|
|
icon: mdi:cancel
|
|
global_off:
|
|
alias: Global Off
|
|
sequence:
|
|
- service: light.turn_off
|
|
data: {}
|
|
target:
|
|
entity_id: all
|
|
- service: fan.turn_off
|
|
data: {}
|
|
target:
|
|
entity_id: all
|
|
- service: input_boolean.turn_off
|
|
data: {}
|
|
target:
|
|
entity_id: input_boolean.tina_desk_lights
|
|
mode: single
|
|
icon: mdi:earth-off
|
|
global_on:
|
|
alias: Global On
|
|
sequence:
|
|
- service: light.turn_on
|
|
data: {}
|
|
target:
|
|
entity_id: all
|
|
mode: single
|
|
icon: mdi:earth
|
|
max_brightness:
|
|
sequence:
|
|
- service: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.tina_desk_lights
|
|
data: {}
|
|
alias: Turn on Tina Desk Lights
|
|
- alias: Turn off Adaptive Lighting
|
|
service: switch.turn_off
|
|
target:
|
|
entity_id:
|
|
- switch.adaptive_lighting_basement_studio
|
|
- switch.adaptive_lighting_kallen_bedroom
|
|
- switch.adaptive_lighting_living_room
|
|
- switch.adaptive_lighting_master_bedroom
|
|
- switch.adaptive_lighting_mud_room
|
|
- switch.adaptive_lighting_emma_bedroom
|
|
- switch.adaptive_lighting_upstairs_hallway
|
|
- switch.adaptive_lighting_dining_room_lamp
|
|
- switch.adaptive_lighting_upstairs_bathroom
|
|
- switch.adaptive_lighting_downstairs_bathroom
|
|
- switch.adaptive_lighting_tina_lamp
|
|
- switch.adaptive_lighting_front_porch
|
|
data: {}
|
|
- delay:
|
|
hours: 0
|
|
minutes: 0
|
|
seconds: 1
|
|
milliseconds: 0
|
|
- service: automation.turn_off
|
|
data:
|
|
stop_actions: true
|
|
target:
|
|
entity_id: automation.living_room_night_lighting
|
|
alias: Turn off Living Room night automation
|
|
- alias: Cancel living room motion timer
|
|
service: timer.cancel
|
|
data: {}
|
|
target:
|
|
entity_id:
|
|
- timer.living_room_motion_timer
|
|
- timer.upstairs_bathroom_motion_timer
|
|
- service: input_boolean.turn_off
|
|
data: {}
|
|
target:
|
|
entity_id: input_boolean.front_porch_light_on
|
|
alias: Turn off Front Porch automation
|
|
- service: light.turn_on
|
|
data:
|
|
kelvin: 5000
|
|
brightness_pct: 100
|
|
target:
|
|
entity_id: all
|
|
alias: Turn on ALL LIGHTS to maximum brightness
|
|
mode: single
|
|
alias: Max Brightness
|
|
icon: mdi:brightness-7
|
|
going_upstairs:
|
|
alias: Going Upstairs
|
|
sequence:
|
|
- service: mqtt.publish
|
|
data:
|
|
qos: '2'
|
|
retain: true
|
|
topic: house/time/night_mode
|
|
payload: 'on'
|
|
alias: Tell MQTT that it is night mode now
|
|
- service: input_select.select_option
|
|
data:
|
|
option: Adaptive
|
|
target:
|
|
entity_id:
|
|
- input_select.basement_studio_scenes
|
|
- input_select.tina_lamp_scenes
|
|
- input_select.mud_room_scenes
|
|
- input_select.upstairs_hallway_scenes
|
|
- input_select.living_room_scenes
|
|
alias: Set scenes
|
|
- service: script.stairwell_led_strip
|
|
data:
|
|
brightness: 255
|
|
alias: Turn up the stairwell LED strip
|
|
- service: input_boolean.turn_on
|
|
entity_id: input_boolean.night_mode
|
|
alias: Turn on Night Mode
|
|
- alias: Turn off Studio Quiet and Gaming Mode
|
|
service: input_boolean.turn_off
|
|
data: {}
|
|
target:
|
|
entity_id:
|
|
- input_boolean.studio_quiet
|
|
- input_boolean.gaming_mode
|
|
- alias: Thermostat reminder
|
|
if:
|
|
- alias: If triggered from basement
|
|
condition: state
|
|
entity_id: sensor.last_alexa_name
|
|
state: Basement Echo Dot
|
|
then:
|
|
- alias: Remind in basement
|
|
service: script.speech_engine
|
|
data:
|
|
who: basement
|
|
message: Remember to set the thermostat for the night
|
|
type: alert
|
|
else:
|
|
- alias: Remind in living room
|
|
service: script.speech_engine
|
|
data:
|
|
who: living_room
|
|
message: Remember to set the thermostat for the night
|
|
type: alert
|
|
enabled: false
|
|
- if:
|
|
- condition: not
|
|
conditions:
|
|
- condition: state
|
|
entity_id: media_player.basement_tv
|
|
state: playing
|
|
then:
|
|
- service: media_player.turn_off
|
|
target:
|
|
entity_id: media_player.basement_tv
|
|
data: {}
|
|
alias: Turn basement TV off, unless something is playing
|
|
- if:
|
|
- condition: state
|
|
entity_id: input_boolean.kallen_computer_updates
|
|
state: 'off'
|
|
then:
|
|
- service: script.kallen_desktop_shutdown
|
|
data: {}
|
|
alias: Shut down Kallen desktop
|
|
alias: Shutdown Kallen Desktop, unless it is updating
|
|
- service: script.asus_laptop_shutdown
|
|
data: {}
|
|
alias: Shut down laptop
|
|
- choose:
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: sensor.last_alexa_name
|
|
state: Living Room Echo Dot
|
|
alias: If triggered from living room
|
|
sequence:
|
|
- service: script.activate_alexa_actionable_notification
|
|
data:
|
|
text: <voice name='Joanna'><prosody rate='150%'>Would you like me to shut
|
|
down your computer?</prosody></voice>
|
|
event_id: actionable_notification_shutdown_computer
|
|
alexa_device: media_player.living_room_echo_dot
|
|
response_variable: shutdown
|
|
alias: Ask in living room
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: sensor.last_alexa_name
|
|
state: Master Bedroom Echo Dot
|
|
alias: If triggered from master bedroom
|
|
sequence:
|
|
- service: script.activate_alexa_actionable_notification
|
|
data:
|
|
text: <voice name='Joanna'><prosody rate='150%'>Would you like me to shut
|
|
down your computer?</prosody></voice>
|
|
event_id: actionable_notification_shutdown_computer
|
|
alexa_device: media_player.master_bedroom_echo_dot
|
|
response_variable: shutdown
|
|
alias: Ask in master bedroom
|
|
default:
|
|
- service: script.activate_alexa_actionable_notification
|
|
data:
|
|
text: <voice name='Joanna'><prosody rate='150%'>Would you like me to shut
|
|
down your computer?</prosody></voice>
|
|
event_id: actionable_notification_shutdown_computer
|
|
alexa_device: media_player.basement_echo_dot
|
|
response_variable: shutdown
|
|
alias: Ask in basement
|
|
alias: Ask about shutting down main computer
|
|
- wait_for_trigger:
|
|
- platform: state
|
|
entity_id:
|
|
- binary_sensor.basement_studio_door
|
|
from: 'off'
|
|
to: 'on'
|
|
id: door
|
|
- platform: state
|
|
entity_id:
|
|
- input_boolean.goodnight
|
|
from: 'off'
|
|
to: 'on'
|
|
id: goodnight
|
|
- platform: state
|
|
entity_id: light.master_bedroom_lights
|
|
to: 'on'
|
|
id: lights
|
|
timeout:
|
|
hours: 0
|
|
minutes: 30
|
|
seconds: 0
|
|
milliseconds: 0
|
|
alias: Figure out where I am
|
|
- service: light.turn_off
|
|
data: {}
|
|
target:
|
|
entity_id: light.basement_studio_lights
|
|
alias: Turn off the lights
|
|
- service: input_datetime.set_datetime
|
|
data:
|
|
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0,2)
|
|
}}
|
|
|
|
'
|
|
target:
|
|
entity_id: input_datetime.tony_night_meds_notify
|
|
alias: Schedule the night meds notification
|
|
- if:
|
|
- condition: template
|
|
value_template: '{{ wait.trigger.id in [''goodnight'',''lights''] }}'
|
|
then:
|
|
- service: script.text_notify
|
|
data:
|
|
type: alert
|
|
who: tony
|
|
title: Basement Shutdown
|
|
message: Would you like me to shut down your computer?
|
|
tag: going-upstairs-pc-shutdown
|
|
actions:
|
|
- action: GU_PC_SHUTDOWN_YES
|
|
title: Shutdown
|
|
- action: GU_PC_SHUTDOWN_LOCK
|
|
title: Lock
|
|
- action: GU_PC_SHUTDOWN_NOTHING
|
|
title: Do Nothing
|
|
alias: Send an actionable notification
|
|
- wait_for_trigger:
|
|
- platform: event
|
|
event_type: ios.notification_action_fired
|
|
event_data:
|
|
actionName: GU_PC_SHUTDOWN_YES
|
|
id: shutdown-yes
|
|
alias: Shutdown Yes
|
|
- platform: event
|
|
event_type: ios.notification_action_fired
|
|
event_data:
|
|
actionName: GU_PC_SHUTDOWN_LOCK
|
|
id: shutdown-lock
|
|
alias: Shutdown Lock
|
|
- platform: event
|
|
event_type: ios.notification_action_fired
|
|
event_data:
|
|
actionName: GU_PC_SHUTDOWN_NOTHING
|
|
alias: Shutdown Nothing
|
|
id: shutdown-nothing
|
|
timeout:
|
|
hours: 0
|
|
minutes: 20
|
|
seconds: 0
|
|
milliseconds: 0
|
|
alias: Wait for response to notification
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ wait.trigger.id == ''shutdown-yes'' }}'
|
|
sequence:
|
|
- service: script.tony_desktop_shutdown
|
|
data: {}
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ wait.trigger.id == ''shutdown-lock'' }}'
|
|
sequence:
|
|
- service: script.tony_desktop_lock
|
|
data: {}
|
|
alias: Run the desired action
|
|
- service: script.text_notify
|
|
data:
|
|
type: alert
|
|
who: tony
|
|
message: clear_notification
|
|
tag: going-upstairs-pc-shutdown
|
|
alias: Clear the notification
|
|
- stop: Automation steps skipped
|
|
alias: If I was not in the basement, ask about shutdown via text and then skip
|
|
the rest
|
|
- wait_for_trigger:
|
|
- platform: state
|
|
entity_id:
|
|
- binary_sensor.upstairs_bathroom_motion
|
|
to: 'on'
|
|
id: bathroom
|
|
- platform: state
|
|
entity_id:
|
|
- input_boolean.goodnight
|
|
to: 'on'
|
|
id: goodnight
|
|
- platform: state
|
|
entity_id:
|
|
- light.master_bedroom_lights
|
|
to: 'on'
|
|
id: lights
|
|
continue_on_timeout: false
|
|
timeout:
|
|
hours: 0
|
|
minutes: 20
|
|
seconds: 0
|
|
milliseconds: 0
|
|
alias: Wait until I am in the bathroom, or in bed, or the lights are manually
|
|
turned on
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ wait.trigger.id == ''bathroom'' }}'
|
|
sequence:
|
|
- service: input_select.select_option
|
|
data:
|
|
option: Side Nightlight
|
|
target:
|
|
entity_id: input_select.master_bedroom_scenes
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ wait.trigger.id in [''lights'',''goodnight''] }}'
|
|
sequence:
|
|
- variables:
|
|
stop_reason: '{{ wait.trigger.id }}'
|
|
- stop: Bedroom lighting not needed
|
|
response_variable: stop_reason
|
|
alias: Turn on lights, or not
|
|
mode: single
|
|
icon: hue:room-stairs
|
|
start_youtube_basement:
|
|
alias: Start Youtube (Basement)
|
|
sequence:
|
|
- service: media_player.select_source
|
|
data:
|
|
source: com.google.android.youtube.tv
|
|
target:
|
|
entity_id: media_player.basement_tv
|
|
mode: single
|
|
icon: mdi:youtube
|
|
stop_youtube_basement:
|
|
alias: Stop Youtube (Basement)
|
|
sequence:
|
|
- service: media_player.select_source
|
|
data:
|
|
source: '!com.google.android.youtube.tv'
|
|
target:
|
|
entity_id: media_player.basement_tv
|
|
mode: single
|
|
icon: mdi:youtube
|
|
start_netflix_basement:
|
|
alias: Start Netflix (Basement)
|
|
sequence:
|
|
- service: media_player.select_source
|
|
data:
|
|
source: com.netflix.ninja
|
|
target:
|
|
entity_id: media_player.basement_tv
|
|
mode: single
|
|
icon: mdi:netflix
|
|
stop_netflix_basement:
|
|
alias: Stop Netflix (Basement)
|
|
sequence:
|
|
- service: media_player.select_source
|
|
data:
|
|
source: '!com.netflix.ninja'
|
|
target:
|
|
entity_id: media_player.basement_tv
|
|
mode: single
|
|
icon: mdi:netflix
|
|
start_twitch_basement:
|
|
alias: Start Twitch (Basement)
|
|
sequence:
|
|
- service: media_player.select_source
|
|
data:
|
|
source: tv.twitch.android.app
|
|
target:
|
|
entity_id: media_player.basement_tv
|
|
mode: single
|
|
icon: mdi:twitch
|
|
stop_twitch_basement:
|
|
alias: Stop Twitch (Basement)
|
|
sequence:
|
|
- service: media_player.select_source
|
|
data:
|
|
source: '!tv.twitch.android.app'
|
|
target:
|
|
entity_id: media_player.basement_tv
|
|
mode: single
|
|
icon: mdi:twitch
|
|
start_spotify_basement:
|
|
alias: Start Spotify (Basement)
|
|
sequence:
|
|
- service: media_player.select_source
|
|
data:
|
|
source: com.spotify.tv.android
|
|
target:
|
|
entity_id: media_player.basement_tv
|
|
mode: single
|
|
icon: mdi:spotify
|
|
stop_spotify_basement:
|
|
alias: Stop Spotify (Basement)
|
|
sequence:
|
|
- service: media_player.select_source
|
|
data:
|
|
source: '!com.spotify.tv.android'
|
|
target:
|
|
entity_id: media_player.basement_tv
|
|
mode: single
|
|
icon: mdi:spotify
|
|
max_brightness_cleanup:
|
|
alias: Max Brightness Cleanup
|
|
sequence:
|
|
- service: input_boolean.turn_on
|
|
data: {}
|
|
target:
|
|
entity_id: input_boolean.front_porch_light_on
|
|
alias: Turn on Front Porch automation
|
|
- alias: Turn on Adaptive Lighting on front porch
|
|
service: switch.turn_on
|
|
target:
|
|
entity_id:
|
|
- switch.adaptive_lighting_front_porch
|
|
data: {}
|
|
- service: automation.turn_on
|
|
data: {}
|
|
target:
|
|
entity_id: automation.living_room_night_lighting
|
|
alias: Turn on Living Room night automation
|
|
- service: script.adaptive_on_first_floor
|
|
data: {}
|
|
alias: Adaptive on first floor
|
|
- service: script.adaptive_on_second_floor
|
|
data: {}
|
|
alias: Adaptive on second floor
|
|
- service: input_select.select_option
|
|
data:
|
|
option: Adaptive
|
|
target:
|
|
entity_id: input_select.basement_studio_scenes
|
|
alias: Set basement lights to adaptive
|
|
mode: single
|
|
icon: mdi:broom
|
|
cleanup_crash:
|
|
alias: Cleanup Crash
|
|
sequence:
|
|
- service: switch.turn_off
|
|
data: {}
|
|
target:
|
|
entity_id:
|
|
- switch.presence_simulation
|
|
- switch.basement_echo_dot_do_not_disturb_switch
|
|
- switch.living_room_echo_dot_do_not_disturb_switch
|
|
- switch.master_bedroom_echo_dot_do_not_disturb_switch
|
|
alias: Turn off switches
|
|
- if:
|
|
- condition: time
|
|
after: input_datetime.master_bedroom_wakeup
|
|
before: input_datetime.master_bedroom_cooling
|
|
then:
|
|
- service: input_boolean.turn_off
|
|
data: {}
|
|
target:
|
|
entity_id: input_boolean.master_bedroom_cooling_on
|
|
- service: button.press
|
|
data: {}
|
|
target:
|
|
entity_id: button.master_bedroom_day_mode
|
|
else:
|
|
- service: input_boolean.turn_on
|
|
data: {}
|
|
target:
|
|
entity_id: input_boolean.master_bedroom_cooling_on
|
|
- service: button.press
|
|
data: {}
|
|
target:
|
|
entity_id: button.master_bedroom_night_mode
|
|
alias: Set climate state
|
|
- if:
|
|
- condition: state
|
|
entity_id: sensor.twitch_ironnerd24
|
|
state: online
|
|
then:
|
|
- service: input_boolean.turn_on
|
|
data: {}
|
|
target:
|
|
entity_id: input_boolean.studio_quiet
|
|
else:
|
|
- service: input_boolean.turn_off
|
|
data: {}
|
|
target:
|
|
entity_id: input_boolean.studio_quiet
|
|
alias: Set studio quiet if Twitch stream is live
|
|
- if:
|
|
- condition: state
|
|
entity_id: calendar.family_tinawork
|
|
state: 'on'
|
|
- condition: time
|
|
before: input_datetime.tina_workday_end
|
|
after: input_datetime.tina_workday_start
|
|
then:
|
|
- service: input_boolean.turn_on
|
|
data: {}
|
|
target:
|
|
entity_id: input_boolean.work_today
|
|
else:
|
|
- service: input_boolean.turn_off
|
|
data: {}
|
|
target:
|
|
entity_id: input_boolean.work_today
|
|
alias: Set Tina Work booleans
|
|
- if:
|
|
- condition: state
|
|
entity_id: calendar.kallen_school_days
|
|
state: 'on'
|
|
- condition: time
|
|
before: input_datetime.kallen_school_day_end
|
|
after: input_datetime.kallen_school_day_start
|
|
then:
|
|
- service: input_boolean.turn_on
|
|
data: {}
|
|
target:
|
|
entity_id:
|
|
- input_boolean.kallen_school_today
|
|
- input_boolean.kallen_school_today_extended
|
|
- input_boolean.kallen_at_school
|
|
else:
|
|
- service: input_boolean.turn_off
|
|
data: {}
|
|
target:
|
|
entity_id:
|
|
- input_boolean.kallen_school_today
|
|
- input_boolean.kallen_school_today_extended
|
|
- input_boolean.kallen_at_school
|
|
alias: Set Kallen School booleans
|
|
- if:
|
|
- condition: time
|
|
before: input_datetime.audible_notification_on
|
|
after: input_datetime.audible_notification_off
|
|
then:
|
|
- service: input_boolean.turn_off
|
|
data: {}
|
|
target:
|
|
entity_id: input_boolean.audible_notifications
|
|
else:
|
|
- service: input_boolean.turn_on
|
|
data: {}
|
|
target:
|
|
entity_id: input_boolean.audible_notifications
|
|
alias: Set audible notifications
|
|
- service: switch.turn_on
|
|
data: {}
|
|
target:
|
|
entity_id:
|
|
- switch.adaptive_lighting_basement_studio
|
|
- switch.adaptive_lighting_dining_room_lamp
|
|
- switch.adaptive_lighting_downstairs_bathroom
|
|
- switch.adaptive_lighting_front_porch
|
|
- switch.adaptive_lighting_kallen_bedroom
|
|
- switch.adaptive_lighting_living_room
|
|
- switch.adaptive_lighting_master_bedroom
|
|
- switch.adaptive_lighting_mud_room
|
|
- switch.adaptive_lighting_tina_lamp
|
|
- switch.adaptive_lighting_emma_bedroom
|
|
- switch.adaptive_lighting_upstairs_bathroom
|
|
- switch.adaptive_lighting_upstairs_hallway
|
|
alias: Turn on all adaptive lighting
|
|
- service: input_text.set_value
|
|
data:
|
|
value: Adaptive
|
|
target:
|
|
entity_id:
|
|
- input_text.basement_studio_selected_scene
|
|
- input_text.downstairs_bathroom_selected_scene
|
|
- input_text.front_porch_selected_scene
|
|
- input_text.kallen_bedroom_selected_scene
|
|
- input_text.living_room_selected_scene
|
|
- input_text.master_bedroom_selected_scene
|
|
- input_text.mud_room_selected_scene
|
|
- input_text.emma_bedroom_selected_scene
|
|
- input_text.tina_lamp_selected_scene
|
|
- input_text.upstairs_bathroom_selected_scene
|
|
- input_text.upstairs_hallway_selected_scene
|
|
- input_text.dining_room_lamp_selected_scene
|
|
alias: Reset input texts to adaptive
|
|
- service: script.volume_reset
|
|
data: {}
|
|
alias: Reset all speaker volumes
|
|
- service: button.press
|
|
data: {}
|
|
target:
|
|
entity_id: button.cleanup
|
|
alias: Run Node-RED cleanup flow
|
|
mode: single
|
|
icon: mdi:truck-snowflake
|
|
basement_shutdown:
|
|
alias: Basement Shutdown
|
|
sequence:
|
|
- alias: Turn off any active modes
|
|
service: input_boolean.turn_off
|
|
data: {}
|
|
target:
|
|
entity_id:
|
|
- input_boolean.studio_quiet
|
|
- input_boolean.recliner_mode
|
|
- input_boolean.gaming_mode
|
|
- if:
|
|
- condition: not
|
|
conditions:
|
|
- condition: state
|
|
entity_id: media_player.basement_tv
|
|
state:
|
|
- playing
|
|
then:
|
|
- service: media_player.turn_off
|
|
data: {}
|
|
target:
|
|
entity_id: media_player.basement_tv
|
|
alias: If TV is not being used, turn it off
|
|
- service: script.turn_on
|
|
data: {}
|
|
target:
|
|
entity_id:
|
|
- script.asus_laptop_shutdown
|
|
alias: Shut down the laptop
|
|
- if:
|
|
- condition: state
|
|
entity_id: input_boolean.kallen_computer_updates
|
|
state: 'off'
|
|
then:
|
|
- service: script.kallen_desktop_shutdown
|
|
data: {}
|
|
else:
|
|
- service: script.kallen_desktop_lock
|
|
data: {}
|
|
- service: input_boolean.turn_off
|
|
data: {}
|
|
target:
|
|
entity_id: input_boolean.kallen_computer_updates
|
|
alias: Turn off Kallen Desktop unless updates are scheduled
|
|
- service: script.text_notify
|
|
data:
|
|
type: alert
|
|
who: tony
|
|
title: Basement Shutting Down
|
|
message: Would you like to shut down your computer?
|
|
tag: tony-pc-shutdown
|
|
actions:
|
|
- action: TONY_COMPUTER_SHUTDOWN
|
|
title: Shutdown
|
|
- action: TONY_COMPUTER_LOCK
|
|
title: Lock
|
|
- action: TONY_COMPUTER_IGNORE
|
|
title: Do Nothing
|
|
alias: Ask about shutting down main computer
|
|
response_variable: tony_computer
|
|
- wait_for_trigger:
|
|
- platform: state
|
|
entity_id:
|
|
- binary_sensor.basement_studio_door
|
|
to: 'on'
|
|
timeout:
|
|
hours: 0
|
|
minutes: 5
|
|
seconds: 0
|
|
milliseconds: 0
|
|
alias: Wait for the door to open
|
|
- service: fan.turn_off
|
|
data: {}
|
|
target:
|
|
entity_id: fan.basement_fan
|
|
- service: light.turn_off
|
|
data: {}
|
|
target:
|
|
entity_id: light.basement_lights
|
|
alias: Turn off the lights
|
|
- wait_for_trigger:
|
|
- platform: state
|
|
entity_id:
|
|
- binary_sensor.basement_studio_door
|
|
to: 'off'
|
|
for:
|
|
hours: 0
|
|
minutes: 0
|
|
seconds: 10
|
|
timeout:
|
|
hours: 0
|
|
minutes: 1
|
|
seconds: 0
|
|
milliseconds: 0
|
|
alias: Wait for the door to close
|
|
- service: timer.cancel
|
|
data: {}
|
|
target:
|
|
entity_id: timer.basement_studio_door_timer
|
|
alias: Cancel the door timer since the lights are already off
|
|
mode: restart
|
|
icon: mdi:power
|
|
stairwell_led_strip:
|
|
alias: Stairwell LED Strip
|
|
sequence:
|
|
- variables:
|
|
brt1: 50
|
|
brt2: 100
|
|
brt3: 150
|
|
brtmax: 255
|
|
colortemp: "{% if is_state('input_boolean.goodnight','off') and\n is_state('input_boolean.give_me_darkness','off')
|
|
and\n is_state('binary_sensor.early_night_mode','off')\n%}\n 4000\n{%
|
|
else %}\n 2000\n{% endif %}\n"
|
|
- if:
|
|
- condition: template
|
|
value_template: '{{ brightness == ''reset'' }}'
|
|
then:
|
|
- service: light.turn_on
|
|
target:
|
|
entity_id: light.stairwell_led_strip
|
|
data:
|
|
brightness: "{% if is_state('input_boolean.goodnight','on') %}\n {{ brt1
|
|
}}\n{% elif is_state('input_boolean.give_me_darkness','on') %}\n {{ brt2
|
|
}}\n{% elif is_state('binary_sensor.early_night_mode','on') %}\n {{ brt3
|
|
}}\n{% else %}\n {{ brtmax }}\n{% endif %}\n"
|
|
color_temp_kelvin: '{{ colortemp }}'
|
|
else:
|
|
- service: light.turn_on
|
|
target:
|
|
entity_id: light.stairwell_led_strip
|
|
data:
|
|
brightness: '{{ brightness|default(brt3) }}'
|
|
color_temp_kelvin: '{{ color_temp_kelvin|default(colortemp) }}'
|
|
description: This script handles a few settings for the stairwell LED strip, for
|
|
convenience
|
|
mode: restart
|
|
adaptive_on_first_floor:
|
|
alias: Adaptive on First Floor
|
|
sequence:
|
|
- if:
|
|
- condition: state
|
|
entity_id: light.living_room_lights
|
|
state: 'on'
|
|
then:
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id: input_select.living_room_scenes
|
|
data:
|
|
option: Adaptive
|
|
alias: Set adaptive
|
|
else:
|
|
- service: switch.turn_on
|
|
target:
|
|
entity_id: switch.adaptive_lighting_living_room
|
|
data: {}
|
|
- service: switch.turn_off
|
|
target:
|
|
entity_id: switch.adaptive_lighting_sleep_mode_living_room
|
|
data: {}
|
|
- service: input_text.set_value
|
|
target:
|
|
entity_id: input_text.living_room_selected_scene
|
|
data:
|
|
value: Adaptive
|
|
alias: If living room lights are on
|
|
- if:
|
|
- condition: state
|
|
entity_id: light.dining_room_lamp
|
|
state: 'on'
|
|
then:
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id: input_select.dining_room_lamp_scenes
|
|
data:
|
|
option: Adaptive
|
|
alias: Set adaptive
|
|
else:
|
|
- service: switch.turn_on
|
|
target:
|
|
entity_id: switch.adaptive_lighting_dining_room_lamp
|
|
data: {}
|
|
- service: switch.turn_off
|
|
target:
|
|
entity_id: switch.adaptive_lighting_sleep_mode_dining_room_lamp
|
|
data: {}
|
|
- service: input_text.set_value
|
|
target:
|
|
entity_id: input_text.dining_room_lamp_selected_scene
|
|
data:
|
|
value: Adaptive
|
|
alias: If dining room lamp is on
|
|
- if:
|
|
- condition: or
|
|
conditions:
|
|
- condition: state
|
|
entity_id: light.tina_lamp
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: light.tina_desk_strip
|
|
state: 'on'
|
|
then:
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id: input_select.tina_desk_scenes
|
|
data:
|
|
option: Reset
|
|
alias: Set Adaptive
|
|
else:
|
|
- service: switch.turn_on
|
|
target:
|
|
entity_id: switch.adaptive_lighting_tina_lamp
|
|
data: {}
|
|
- service: switch.turn_off
|
|
target:
|
|
entity_id: switch.adaptive_lighting_sleep_mode_tina_lamp
|
|
data: {}
|
|
alias: If Tina's desk lights are on
|
|
- if:
|
|
- condition: state
|
|
entity_id: light.downstairs_bathroom_lights
|
|
state: 'on'
|
|
then:
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id: input_select.downstairs_bathroom_scenes
|
|
data:
|
|
option: Adaptive
|
|
alias: Set adaptive
|
|
else:
|
|
- service: switch.turn_on
|
|
target:
|
|
entity_id: switch.adaptive_lighting_downstairs_bathroom
|
|
data: {}
|
|
- service: switch.turn_off
|
|
target:
|
|
entity_id: switch.adaptive_lighting_sleep_mode_downstairs_bathroom
|
|
data: {}
|
|
- service: input_text.set_value
|
|
target:
|
|
entity_id: input_text.downstairs_bathroom_selected_scene
|
|
data:
|
|
value: Adaptive
|
|
alias: If downstairs bathroom lights are on
|
|
- if:
|
|
- condition: state
|
|
entity_id: light.mud_room_overhead
|
|
state: 'on'
|
|
then:
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id: input_select.mud_room_scenes
|
|
data:
|
|
option: Adaptive
|
|
alias: Set adaptive
|
|
else:
|
|
- service: switch.turn_on
|
|
target:
|
|
entity_id: switch.adaptive_lighting_mud_room
|
|
data: {}
|
|
- service: switch.turn_off
|
|
target:
|
|
entity_id: switch.adaptive_lighting_sleep_mode_mud_room
|
|
data: {}
|
|
- service: input_text.set_value
|
|
target:
|
|
entity_id: input_text.mud_room_selected_scene
|
|
data:
|
|
value: Adaptive
|
|
alias: If mud room light is on
|
|
mode: single
|
|
adaptive_on_second_floor:
|
|
alias: Adaptive on Second Floor
|
|
sequence:
|
|
- if:
|
|
- condition: state
|
|
entity_id: binary_sensor.early_night_mode
|
|
state: 'on'
|
|
then:
|
|
- service: script.stairwell_led_strip
|
|
data:
|
|
brightness: reset
|
|
alias: If early night mode is on
|
|
- if:
|
|
- condition: state
|
|
entity_id: light.hallway_overhead
|
|
state: 'on'
|
|
then:
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id: input_select.upstairs_hallway_scenes
|
|
data:
|
|
option: Adaptive
|
|
alias: Set adaptive
|
|
else:
|
|
- service: switch.turn_on
|
|
target:
|
|
entity_id: switch.adaptive_lighting_upstairs_hallway
|
|
data: {}
|
|
- service: switch.turn_off
|
|
target:
|
|
entity_id: switch.adaptive_lighting_sleep_mode_upstairs_hallway
|
|
data: {}
|
|
- service: input_text.set_value
|
|
target:
|
|
entity_id: input_text.upstairs_hallway_selected_scene
|
|
data:
|
|
value: Adaptive
|
|
alias: If hallway light is on
|
|
- if:
|
|
- condition: state
|
|
entity_id: light.master_bedroom_lights
|
|
state: 'on'
|
|
then:
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id: input_select.master_bedroom_scenes
|
|
data:
|
|
option: Adaptive
|
|
alias: Set adaptive
|
|
else:
|
|
- service: switch.turn_on
|
|
target:
|
|
entity_id: switch.adaptive_lighting_master_bedroom
|
|
data: {}
|
|
- service: switch.turn_off
|
|
target:
|
|
entity_id: switch.adaptive_lighting_sleep_mode_master_bedroom
|
|
data: {}
|
|
- service: input_text.set_value
|
|
target:
|
|
entity_id: input_text.master_bedroom_selected_scene
|
|
data:
|
|
value: Adaptive
|
|
alias: If master bedroom lights are on
|
|
- if:
|
|
- condition: state
|
|
entity_id: light.kallen_bedroom_lights
|
|
state: 'on'
|
|
then:
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id: input_select.kallen_bedroom_scenes
|
|
data:
|
|
option: Adaptive
|
|
alias: Set adaptive
|
|
else:
|
|
- service: switch.turn_on
|
|
target:
|
|
entity_id: switch.adaptive_lighting_kallen_bedroom
|
|
data: {}
|
|
- service: switch.turn_off
|
|
target:
|
|
entity_id: switch.adaptive_lighting_sleep_mode_kallen_bedroom
|
|
data: {}
|
|
- service: input_text.set_value
|
|
target:
|
|
entity_id: input_text.kallen_bedroom_selected_scene
|
|
data:
|
|
value: Adaptive
|
|
alias: If Kallen's bedroom lights are on
|
|
- if:
|
|
- condition: state
|
|
entity_id: light.emma_bedroom_light
|
|
state: 'on'
|
|
then:
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id: input_select.emma_bedroom_scenes
|
|
data:
|
|
option: Adaptive
|
|
alias: Set adaptive
|
|
else:
|
|
- service: switch.turn_on
|
|
target:
|
|
entity_id: switch.adaptive_lighting_emma_bedroom
|
|
data: {}
|
|
- service: switch.turn_off
|
|
target:
|
|
entity_id: switch.adaptive_lighting_sleep_mode_emma_bedroom
|
|
data: {}
|
|
- service: input_text.set_value
|
|
target:
|
|
entity_id: input_text.emma_bedroom_selected_scene
|
|
data:
|
|
value: Adaptive
|
|
alias: If Emma's bedroom light is on
|
|
- if:
|
|
- condition: state
|
|
entity_id: input_boolean.shower_mode
|
|
state: 'off'
|
|
then:
|
|
- if:
|
|
- condition: state
|
|
entity_id: binary_sensor.upstairs_bathroom_occupied
|
|
state: 'on'
|
|
then:
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id: input_select.upstairs_bathroom_scenes
|
|
data:
|
|
option: Adaptive
|
|
else:
|
|
- if:
|
|
- condition: state
|
|
entity_id: binary_sensor.early_night_mode
|
|
state: 'on'
|
|
then:
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id: input_select.upstairs_bathroom_scenes
|
|
data:
|
|
option: Nightlight
|
|
else:
|
|
- service: light.turn_off
|
|
target:
|
|
entity_id: light.upstairs_bathroom_lights
|
|
data: {}
|
|
- service: switch.turn_on
|
|
target:
|
|
entity_id: switch.adaptive_lighting_upstairs_bathroom
|
|
data: {}
|
|
- service: switch.turn_off
|
|
target:
|
|
entity_id: switch.adaptive_lighting_sleep_mode_upstairs_bathroom
|
|
data: {}
|
|
- service: input_text.set_value
|
|
target:
|
|
entity_id: input_text.upstairs_bathroom_selected_scene
|
|
data:
|
|
value: Adaptive
|
|
alias: Upstairs bathroom handling
|
|
bright_on_first_floor:
|
|
alias: Bright on First Floor
|
|
sequence:
|
|
- service: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.living_room_lights
|
|
- light.downstairs_bathroom_lights
|
|
- light.dining_room_lamp
|
|
- light.mud_room_overhead
|
|
data: {}
|
|
- service: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.tina_desk_lights
|
|
data: {}
|
|
- delay:
|
|
seconds: 1
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id:
|
|
- input_select.living_room_scenes
|
|
- input_select.downstairs_bathroom_scenes
|
|
- input_select.mud_room_scenes
|
|
- input_select.dining_room_lamp_scenes
|
|
data:
|
|
option: Bright
|
|
- service: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.tina_desk_strip
|
|
- light.tina_lamp
|
|
data:
|
|
color_temp_kelvin: 2700
|
|
- service: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.tina_lamp
|
|
- light.tina_desk_strip
|
|
data:
|
|
brightness: 255
|
|
bright_on_second_floor:
|
|
alias: Bright on Second Floor
|
|
sequence:
|
|
- service: script.stairwell_led_strip
|
|
data:
|
|
brightness: 255
|
|
- service: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.hallway_overhead
|
|
- light.master_bedroom_lights
|
|
data: {}
|
|
- if:
|
|
- condition: state
|
|
entity_id: input_boolean.shower_mode
|
|
state: 'off'
|
|
then:
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id: input_select.upstairs_bathroom_scenes
|
|
data:
|
|
option: Bright
|
|
- if:
|
|
- condition: state
|
|
entity_id: input_boolean.kallen_sleeping
|
|
state: 'off'
|
|
then:
|
|
- service: light.turn_on
|
|
target:
|
|
entity_id: light.kallen_bedroom_lights
|
|
data: {}
|
|
- if:
|
|
- condition: state
|
|
entity_id: input_boolean.emma_sleeping
|
|
state: 'off'
|
|
then:
|
|
- service: light.turn_on
|
|
target:
|
|
entity_id: light.emma_bedroom_light
|
|
data: {}
|
|
- delay:
|
|
seconds: 1
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id:
|
|
- input_select.upstairs_hallway_scenes
|
|
- input_select.master_bedroom_scenes
|
|
data:
|
|
option: Bright
|
|
- if:
|
|
- condition: state
|
|
entity_id: input_boolean.shower_mode
|
|
state: 'off'
|
|
then:
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id: input_select.upstairs_bathroom_scenes
|
|
data:
|
|
option: Bright
|
|
- if:
|
|
- condition: template
|
|
value_template: '{{ is_state(''input_boolean.kallen_sleeping'',''off'') or (is_state(''input_boolean.kallen_sleeping'',''on'')
|
|
and is_state(''light.kallen_bedroom_lights'',''on'')) }}'
|
|
then:
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id: input_select.kallen_bedroom_scenes
|
|
data:
|
|
option: Bright
|
|
- if:
|
|
- condition: template
|
|
value_template: '{{ is_state(''input_boolean.emma_sleeping'',''off'') or (is_state(''input_boolean.emma_sleeping'',''on'')
|
|
and is_state(''light.emma_bedroom_light'',''on'')) }}'
|
|
then:
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id: input_select.emma_bedroom_scenes
|
|
data:
|
|
option: Bright
|
|
evening_on_first_floor:
|
|
alias: Evening on First Floor
|
|
sequence:
|
|
- choose:
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: binary_sensor.early_night_mode
|
|
state: 'off'
|
|
sequence:
|
|
- stop: This scene does nothing during daytime
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.give_me_darkness
|
|
state: 'on'
|
|
sequence:
|
|
- if:
|
|
- condition: state
|
|
entity_id: person.christina_stork
|
|
state: home
|
|
then:
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id: input_select.tina_desk_scenes
|
|
data:
|
|
option: Night Mode
|
|
- choose:
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.guest_mode
|
|
state: 'off'
|
|
sequence:
|
|
- if:
|
|
- condition: template
|
|
value_template: '{{ give_me_darkness == 1 }}'
|
|
then:
|
|
- if:
|
|
- condition: state
|
|
entity_id: timer.downstairs_bathroom_lights_timer
|
|
state: idle
|
|
then:
|
|
- service: light.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.downstairs_bathroom_lights
|
|
data: {}
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id:
|
|
- input_select.mud_room_scenes
|
|
data:
|
|
option: Nightlight
|
|
else:
|
|
- service: light.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.living_room_lights
|
|
data: {}
|
|
- if:
|
|
- condition: state
|
|
entity_id: timer.downstairs_bathroom_lights_timer
|
|
state: idle
|
|
then:
|
|
- service: light.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.downstairs_bathroom_lights
|
|
data: {}
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id:
|
|
- input_select.mud_room_scenes
|
|
- input_select.dining_room_lamp_scenes
|
|
data:
|
|
option: Nightlight
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.guest_mode
|
|
state: 'on'
|
|
sequence:
|
|
- if:
|
|
- condition: state
|
|
entity_id: timer.downstairs_bathroom_lights_timer
|
|
state: idle
|
|
then:
|
|
- service: light.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.downstairs_bathroom_lights
|
|
data: {}
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.give_me_darkness
|
|
state: 'off'
|
|
sequence:
|
|
- if:
|
|
- condition: template
|
|
value_template: '{{ sunset_lights == 1 }}'
|
|
then:
|
|
- service: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.living_room_lights
|
|
- light.mud_room_overhead
|
|
data: {}
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id:
|
|
- input_select.living_room_scenes
|
|
- input_select.mud_room_scenes
|
|
data:
|
|
option: Adaptive
|
|
else:
|
|
- service: light.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.dining_room_lamp
|
|
data: {}
|
|
- if:
|
|
- condition: state
|
|
entity_id: timer.downstairs_bathroom_lights_timer
|
|
state: idle
|
|
then:
|
|
- service: light.turn_off
|
|
target:
|
|
entity_id: light.downstairs_bathroom_lights
|
|
data: {}
|
|
- service: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.tina_desk_lights
|
|
data: {}
|
|
- service: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.living_room_lights
|
|
- light.mud_room_overhead
|
|
data: {}
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id:
|
|
- input_select.living_room_scenes
|
|
- input_select.mud_room_scenes
|
|
data:
|
|
option: Adaptive
|
|
evening_on_second_floor:
|
|
alias: Evening on Second Floor
|
|
sequence:
|
|
- condition: state
|
|
entity_id: binary_sensor.early_night_mode
|
|
state: 'on'
|
|
- choose:
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.give_me_darkness
|
|
state: 'on'
|
|
sequence:
|
|
- service: script.stairwell_led_strip
|
|
data:
|
|
color_temp_kelvin: 2000
|
|
brightness: 100
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id:
|
|
- input_select.upstairs_hallway_scenes
|
|
data:
|
|
option: Nightlight
|
|
- if:
|
|
- condition: state
|
|
entity_id: input_boolean.shower_mode
|
|
state: 'off'
|
|
then:
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id: input_select.upstairs_bathroom_scenes
|
|
data:
|
|
option: "{% if is_state('binary_sensor.upstairs_bathroom_occupied','on')
|
|
%}\n Adaptive\n{% else %}\n Nightlight\n{% endif %}\n"
|
|
- service: light.turn_off
|
|
target:
|
|
area_id:
|
|
- kallen_bedroom
|
|
- master_bedroom
|
|
- emma_bedroom
|
|
data: {}
|
|
- delay:
|
|
seconds: 1
|
|
- service: switch.turn_on
|
|
target:
|
|
entity_id:
|
|
- switch.adaptive_lighting_kallen_bedroom
|
|
- switch.adaptive_lighting_master_bedroom
|
|
- switch.adaptive_lighting_emma_bedroom
|
|
data: {}
|
|
- service: switch.turn_off
|
|
target:
|
|
entity_id:
|
|
- switch.adaptive_lighting_sleep_mode_kallen_bedroom
|
|
- switch.adaptive_lighting_sleep_mode_master_bedroom
|
|
- switch.adaptive_lighting_sleep_mode_emma_bedroom
|
|
data: {}
|
|
- service: input_text.set_value
|
|
target:
|
|
entity_id:
|
|
- input_text.kallen_bedroom_selected_scene
|
|
- input_text.master_bedroom_selected_scene
|
|
- input_text.emma_bedroom_selected_scene
|
|
data:
|
|
value: Adaptive
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.give_me_darkness
|
|
state: 'off'
|
|
sequence:
|
|
- service: script.stairwell_led_strip
|
|
data:
|
|
color_temp_kelvin: 2000
|
|
brightness: 150
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id: input_select.upstairs_hallway_scenes
|
|
data:
|
|
option: Nightlight
|
|
- if:
|
|
- condition: state
|
|
entity_id: input_boolean.shower_mode
|
|
state: 'off'
|
|
then:
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id: input_select.upstairs_bathroom_scenes
|
|
data:
|
|
option: "{% if is_state('binary_sensor.upstairs_bathroom_occupied','on')
|
|
%}\n Adaptive\n{% else %}\n Nightlight\n{% endif %}\n"
|
|
- if:
|
|
- condition: template
|
|
value_template: '{{ sunset_lights == 1 }}'
|
|
then:
|
|
- stop: Sunset lights don't mess with bedroom light states before bedtime
|
|
else:
|
|
- service: light.turn_off
|
|
target:
|
|
area_id:
|
|
- master_bedroom
|
|
- kallen_bedroom
|
|
- emma_bedroom
|
|
data: {}
|
|
- delay:
|
|
seconds: 1
|
|
- service: switch.turn_on
|
|
target:
|
|
entity_id:
|
|
- switch.adaptive_lighting_kallen_bedroom
|
|
- switch.adaptive_lighting_master_bedroom
|
|
- switch.adaptive_lighting_emma_bedroom
|
|
data: {}
|
|
- service: switch.turn_off
|
|
target:
|
|
entity_id:
|
|
- switch.adaptive_lighting_sleep_mode_kallen_bedroom
|
|
- switch.adaptive_lighting_sleep_mode_master_bedroom
|
|
- switch.adaptive_lighting_sleep_mode_emma_bedroom
|
|
data: {}
|
|
- service: input_text.set_value
|
|
target:
|
|
entity_id:
|
|
- input_text.kallen_bedroom_selected_scene
|
|
- input_text.master_bedroom_selected_scene
|
|
- input_text.emma_bedroom_selected_scene
|
|
data:
|
|
value: Adaptive
|
|
goodnight_in_basement:
|
|
alias: Goodnight in Basement
|
|
sequence:
|
|
- service: light.turn_off
|
|
target:
|
|
area_id:
|
|
- basement_studio
|
|
- furnace_room
|
|
data: {}
|
|
- service: fan.turn_off
|
|
target:
|
|
entity_id: fan.basement_fan
|
|
data: {}
|
|
goodnight_on_first_floor:
|
|
alias: Goodnight on First Floor
|
|
sequence:
|
|
- if:
|
|
- condition: state
|
|
entity_id: input_boolean.guest_mode
|
|
state: 'on'
|
|
then:
|
|
- service: light.turn_off
|
|
target:
|
|
area_id:
|
|
- dining_room
|
|
- downstairs_bathroom
|
|
- living_room
|
|
- tina_desk
|
|
data: {}
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id: input_select.mud_room_scenes
|
|
data:
|
|
option: Nightlight
|
|
else:
|
|
- service: light.turn_off
|
|
target:
|
|
area_id:
|
|
- dining_room
|
|
- downstairs_bathroom
|
|
- living_room
|
|
- mud_room
|
|
- tina_desk
|
|
data: {}
|
|
goodnight_on_second_floor:
|
|
alias: Goodnight on Second Floor
|
|
sequence:
|
|
- service: light.turn_off
|
|
target:
|
|
area_id:
|
|
- emma_bedroom
|
|
- kallen_bedroom
|
|
- master_bedroom
|
|
- master_bedroom_closet
|
|
data: {}
|
|
- if:
|
|
- condition: state
|
|
entity_id: input_boolean.guest_mode
|
|
state: 'on'
|
|
then:
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id: input_select.upstairs_hallway_scenes
|
|
data:
|
|
option: Nightlight
|
|
else:
|
|
- service: light.turn_off
|
|
target:
|
|
entity_id: light.hallway_overhead
|
|
data: {}
|
|
- if:
|
|
- condition: state
|
|
entity_id: input_boolean.kallen_overnight
|
|
state: 'on'
|
|
then:
|
|
- service: light.turn_off
|
|
target:
|
|
area_id: upstairs_bathroom
|
|
data: {}
|
|
else:
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id: input_select.upstairs_bathroom_scenes
|
|
data:
|
|
option: Single Nightlight
|
|
- service: script.stairwell_led_strip
|
|
data:
|
|
color_temp_kelvin: 2000
|
|
brightness: 50
|
|
morning_scene:
|
|
alias: Morning Scene
|
|
sequence:
|
|
- service: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.master_bedroom_sleeping
|
|
data: {}
|
|
- if:
|
|
- condition: template
|
|
value_template: '{% set weather = states(''weather.iron_nerd_weather_station'')
|
|
%} {{ weather in [''cloudy'',''partlycloudy'',''rainy'',''snowy'',''hail'',''lightning'',''lightning-rainy'',''pouring'',''snowy-rainy'']
|
|
}}
|
|
|
|
'
|
|
then:
|
|
- if:
|
|
- condition: template
|
|
value_template: '{{ is_state(''input_boolean.kallen_sleeping'',''off'') and
|
|
is_state(''person.kallen_stork'',''home'') }}'
|
|
then:
|
|
- service: light.turn_on
|
|
target:
|
|
entity_id: light.kallen_bedroom_lights
|
|
data: {}
|
|
- if:
|
|
- condition: state
|
|
entity_id: input_boolean.emma_sleeping
|
|
state: 'off'
|
|
then:
|
|
- service: light.turn_on
|
|
target:
|
|
entity_id: light.emma_bedroom_light
|
|
data: {}
|
|
day_mode_in_tina_desk:
|
|
alias: Day Mode in Tina Desk
|
|
sequence:
|
|
- parallel:
|
|
- service: light.turn_on
|
|
target:
|
|
entity_id: light.tina_lamp_top
|
|
data: {}
|
|
- service: light.turn_off
|
|
target:
|
|
entity_id: light.tina_lamp_side
|
|
data: {}
|
|
- service: light.turn_on
|
|
target:
|
|
entity_id: light.tina_desk_strip
|
|
data:
|
|
rgb_color:
|
|
- 0
|
|
- 255
|
|
- 255
|
|
brightness: 89
|
|
- wait_template: '{{ is_state(''light.tina_lamp_side'',''off'') }}'
|
|
timeout:
|
|
seconds: 15
|
|
continue_on_timeout: true
|
|
- alias: Apply adaptive lighting to lamp
|
|
if:
|
|
- condition: state
|
|
entity_id: switch.adaptive_lighting_tina_lamp
|
|
state: 'off'
|
|
alias: If switch is off
|
|
then:
|
|
- service: switch.turn_on
|
|
data: {}
|
|
target:
|
|
entity_id: switch.adaptive_lighting_tina_lamp
|
|
alias: Turn on the switch
|
|
else:
|
|
- alias: Apply adaptive lighting
|
|
service: adaptive_lighting.apply
|
|
data:
|
|
entity_id: switch.adaptive_lighting_tina_lamp
|
|
adapt_brightness: true
|
|
adapt_color: true
|
|
mode: restart
|
|
icon: mdi:palette
|
|
evening_mode_in_tina_desk:
|
|
alias: Evening Mode in Tina Desk
|
|
sequence:
|
|
- alias: Turn on all lights
|
|
parallel:
|
|
- service: light.turn_on
|
|
data: {}
|
|
target:
|
|
entity_id:
|
|
- light.tina_lamp_top
|
|
- light.tina_lamp_side
|
|
- service: light.turn_on
|
|
target:
|
|
entity_id: light.tina_desk_strip
|
|
data:
|
|
rgb_color:
|
|
- 127
|
|
- 0
|
|
- 255
|
|
brightness: 128
|
|
- alias: Apply adaptive lighting to lamp
|
|
if:
|
|
- condition: state
|
|
entity_id: switch.adaptive_lighting_tina_lamp
|
|
state: 'off'
|
|
alias: If switch is off
|
|
then:
|
|
- service: switch.turn_on
|
|
data: {}
|
|
target:
|
|
entity_id: switch.adaptive_lighting_tina_lamp
|
|
alias: Turn on the switch
|
|
else:
|
|
- service: adaptive_lighting.apply
|
|
data:
|
|
entity_id: switch.adaptive_lighting_tina_lamp
|
|
adapt_brightness: true
|
|
adapt_color: true
|
|
turn_on_lights: true
|
|
alias: Apply adaptive lighting
|
|
mode: restart
|
|
icon: mdi:palette
|
|
night_mode_in_tina_desk:
|
|
alias: Night Mode in Tina Desk
|
|
sequence:
|
|
- service: switch.turn_off
|
|
target:
|
|
entity_id: switch.adaptive_lighting_tina_lamp
|
|
data: {}
|
|
- parallel:
|
|
- service: light.turn_on
|
|
target:
|
|
entity_id: light.tina_lamp
|
|
data:
|
|
rgb_color:
|
|
- 127
|
|
- 0
|
|
- 255
|
|
brightness: 128
|
|
- service: light.turn_on
|
|
target:
|
|
entity_id: light.tina_desk_strip
|
|
data:
|
|
rgb_color:
|
|
- 127
|
|
- 0
|
|
- 255
|
|
brightness: 128
|
|
mode: restart
|
|
icon: mdi:palette
|
|
bright_mode_in_tina_desk:
|
|
alias: Bright Mode in Tina Desk
|
|
sequence:
|
|
- service: switch.turn_off
|
|
target:
|
|
entity_id: switch.adaptive_lighting_tina_lamp
|
|
data: {}
|
|
- parallel:
|
|
- service: light.turn_on
|
|
target:
|
|
entity_id: light.tina_lamp
|
|
data:
|
|
rgb_color:
|
|
- 255
|
|
- 210
|
|
- 175
|
|
brightness: 255
|
|
- service: light.turn_on
|
|
target:
|
|
entity_id: light.tina_desk_strip
|
|
data:
|
|
rgb_color:
|
|
- 255
|
|
- 210
|
|
- 175
|
|
brightness: 255
|
|
mode: restart
|
|
icon: mdi:palette
|
|
tony_morning_meds:
|
|
alias: Tony Morning Meds
|
|
icon: mdi:medication
|
|
mode: restart
|
|
sequence:
|
|
- service: script.text_notify
|
|
data:
|
|
who: tony
|
|
type: alert
|
|
title: Morning Meds
|
|
message: You need to take your morning meds
|
|
tag: tony-morning-meds
|
|
actions:
|
|
- action: TONY_MORNING_MEDS_TAKEN
|
|
title: Taken
|
|
- action: TONY_MORNING_MEDS_SKIPPED
|
|
title: Skip
|
|
- action: TONY_MORNING_MEDS_ASK_LATER
|
|
title: Ask Later
|
|
- wait_for_trigger:
|
|
- platform: event
|
|
event_type: ios.notification_action_fired
|
|
event_data:
|
|
actionName: TONY_MORNING_MEDS_TAKEN
|
|
id: taken
|
|
alias: Taken
|
|
- platform: event
|
|
event_type: ios.notification_action_fired
|
|
event_data:
|
|
actionName: TONY_MORNING_MEDS_SKIPPED
|
|
id: skipped
|
|
alias: Skipped
|
|
- platform: event
|
|
event_type: ios.notification_action_fired
|
|
event_data:
|
|
actionName: TONY_MORNING_MEDS_ASK_LATER
|
|
id: ask-later
|
|
alias: Ask Later
|
|
- platform: state
|
|
entity_id: person.tony_stork
|
|
from: home
|
|
id: left
|
|
alias: Left
|
|
- platform: state
|
|
entity_id: input_boolean.tony_morning_meds_taken
|
|
to: 'on'
|
|
id: manual
|
|
alias: Manual
|
|
timeout: 00:30:00
|
|
continue_on_timeout: true
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ wait.trigger.id in [''taken'',''manual''] }}'
|
|
alias: Taken, Manual
|
|
sequence:
|
|
- service: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.tony_morning_meds_taken
|
|
data: {}
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ wait.trigger.id == ''ask-later'' }}'
|
|
alias: Ask Later
|
|
sequence:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.tony_morning_meds_notify
|
|
data:
|
|
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0,30)
|
|
}}
|
|
|
|
'
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ wait.trigger.id == ''left'' }}'
|
|
alias: Left
|
|
sequence:
|
|
- service: script.text_notify
|
|
data:
|
|
who: tony
|
|
type: critical
|
|
title: HEY DUMBASS
|
|
message: YOU FORGOT TO TAKE YOUR MORNING MEDS!!!!!
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ wait.trigger == ''none'' or wait.trigger.idx is undefined
|
|
}}'
|
|
alias: None or undefined
|
|
sequence:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.tony_morning_meds_notify
|
|
data:
|
|
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0,1)
|
|
}}
|
|
|
|
'
|
|
- service: script.text_notify
|
|
data:
|
|
type: alert
|
|
who: tony
|
|
message: clear_notification
|
|
tag: tony-morning-meds
|
|
tony_night_meds:
|
|
alias: Tony Night Meds
|
|
icon: mdi:medication
|
|
mode: restart
|
|
sequence:
|
|
- service: script.text_notify
|
|
data:
|
|
who: tony
|
|
type: alert
|
|
title: Night Meds
|
|
message: You need to take your night meds
|
|
tag: tony-night-meds
|
|
actions:
|
|
- action: TONY_NIGHT_MEDS_TAKEN
|
|
title: Taken
|
|
- action: TONY_NIGHT_MEDS_SKIPPED
|
|
title: Skip
|
|
- action: TONY_NIGHT_MEDS_ASK_LATER
|
|
title: Ask Later
|
|
- wait_for_trigger:
|
|
- platform: event
|
|
event_type: ios.notification_action_fired
|
|
event_data:
|
|
actionName: TONY_NIGHT_MEDS_TAKEN
|
|
id: taken
|
|
alias: Taken
|
|
- platform: event
|
|
event_type: ios.notification_action_fired
|
|
event_data:
|
|
actionName: TONY_NIGHT_MEDS_SKIPPED
|
|
id: skipped
|
|
alias: Skipped
|
|
- platform: event
|
|
event_type: ios.notification_action_fired
|
|
event_data:
|
|
actionName: TONY_NIGHT_MEDS_ASK_LATER
|
|
id: ask-later
|
|
alias: Ask Later
|
|
- platform: state
|
|
entity_id: input_boolean.tony_night_meds_taken
|
|
to: 'on'
|
|
id: manual
|
|
alias: Manual
|
|
timeout: 00:30:00
|
|
continue_on_timeout: true
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ wait.trigger.id in [''taken'',''manual''] }}'
|
|
alias: Taken, Manual
|
|
sequence:
|
|
- service: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.tony_night_meds_taken
|
|
data: {}
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ wait.trigger.id == ''ask-later'' }}'
|
|
alias: Ask Later
|
|
sequence:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.tony_night_meds_notify
|
|
data:
|
|
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0,30)
|
|
}}
|
|
|
|
'
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ wait.trigger == ''none'' or wait.trigger.idx is undefined
|
|
}}'
|
|
alias: None or undefined
|
|
sequence:
|
|
- if:
|
|
- condition: and
|
|
conditions:
|
|
- condition: state
|
|
entity_id: person.tony_stork
|
|
state: home
|
|
- condition: state
|
|
entity_id: binary_sensor.morning
|
|
state: 'off'
|
|
then:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.tony_night_meds_notify
|
|
data:
|
|
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0,1)
|
|
}}
|
|
|
|
'
|
|
- service: script.text_notify
|
|
data:
|
|
type: alert
|
|
who: tony
|
|
message: clear_notification
|
|
tag: tony-night-meds
|
|
tony_stream_today:
|
|
alias: Tony Stream Today
|
|
sequence:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.tony_streaming_start_time
|
|
data:
|
|
time: '{% from ''time.jinja'' import time_from_calendar %} {{ time_from_calendar(''calendar.tony_s_twitch_schedule'',''start_time'',''set'')
|
|
}}
|
|
|
|
'
|
|
- service: input_boolean.turn_on
|
|
entity_id: input_boolean.tony_streaming_today
|
|
mode: single
|
|
timer_modify:
|
|
alias: Timer Modify
|
|
description: For adding/subtracting time from a running timer
|
|
mode: restart
|
|
sequence:
|
|
- service: timer.pause
|
|
target:
|
|
entity_id: '{{ timer }}'
|
|
- delay:
|
|
seconds: 1
|
|
- variables:
|
|
modify: '{% set x = state_attr(timer, ''remaining'') ~ ''-0000'' %} {% set y
|
|
= strptime(x, ''%H:%M:%S%z'') %} {{ (as_timestamp(y) + change) | timestamp_custom(''%H:%M:%S'',
|
|
false) }}
|
|
|
|
'
|
|
- service: timer.start
|
|
target:
|
|
entity_id: '{{ timer }}'
|
|
data:
|
|
duration: '{{ modify }}'
|
|
tony_custom_meds:
|
|
alias: Tony Custom Meds
|
|
sequence:
|
|
- variables:
|
|
reason: '{{ reason }}'
|
|
num: '{{ num }}'
|
|
active: '{{ ''input_boolean.tony_custom_meds_tracker_'' + num }}'
|
|
taken: '{{ ''input_boolean.tony_custom_meds_taken_'' + num }}'
|
|
taken_at: '{{ ''input_datetime.tony_custom_meds_taken_'' + num }}'
|
|
notify_at: '{{ ''input_datetime.tony_custom_meds_notify_'' + num }}'
|
|
type: '{{ states(''input_select.tony_custom_meds_type_'' + num) }}'
|
|
name: '{{ states(''input_text.tony_custom_med_name_'' + num) }}'
|
|
interval: '{{ states(''input_number.tony_custom_meds_interval_'' + num) }}'
|
|
tag: '{{ ''tony-custom-meds-'' + num }}'
|
|
alias: Set Variables
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ reason == ''notify'' }}'
|
|
alias: Notify
|
|
sequence:
|
|
- service: script.text_notify
|
|
data:
|
|
who: tony
|
|
type: alert
|
|
title: '{{ name + '' Tracker'' }}'
|
|
message: You need to take your {{ name }}
|
|
tag: '{{ tag }}'
|
|
alias: Send text notification
|
|
- wait_for_trigger:
|
|
- platform: state
|
|
entity_id:
|
|
- person.tony_stork
|
|
id: left
|
|
alias: Left
|
|
from: home
|
|
- platform: template
|
|
value_template: '{{ is_state(taken,''on'') }}'
|
|
alias: Manual
|
|
id: manual
|
|
timeout: 00:30:00
|
|
continue_on_timeout: true
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ wait.trigger.id in [''manual'',''left''] }}'
|
|
alias: Manual or Left
|
|
sequence:
|
|
- stop: Automation cancelled
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ wait.trigger == ''none'' or wait.trigger.idx is undefined
|
|
}}'
|
|
alias: None or undefined
|
|
sequence:
|
|
- service: script.text_notify
|
|
data:
|
|
who: tony
|
|
type: alert
|
|
message: clear_notification
|
|
tag: '{{ tag }}'
|
|
alias: Clear Notification
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.tony_custom_meds_notify_p1
|
|
data:
|
|
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0,1)
|
|
}}
|
|
|
|
'
|
|
alias: Reset notification time
|
|
alias: Choose depending on the wait trigger
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ reason == ''taken'' }}'
|
|
alias: Taken
|
|
sequence:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: '{{ taken_at }}'
|
|
data:
|
|
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0)
|
|
}}
|
|
|
|
'
|
|
alias: Set time the meds were taken
|
|
- if:
|
|
- condition: template
|
|
value_template: '{{ type == ''Interval'' }}'
|
|
alias: Is it an interval med?
|
|
then:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: '{{ notify_at }}'
|
|
data:
|
|
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(interval)
|
|
}}
|
|
|
|
'
|
|
alias: Set notification for next dose
|
|
alias: If an interval med, then set time for next dose
|
|
- service: script.text_notify
|
|
data:
|
|
who: tony
|
|
type: alert
|
|
message: clear_notification
|
|
tag: '{{ tag }}'
|
|
alias: Clear Notification
|
|
alias: Routing
|
|
icon: mdi:medication
|
|
mode: parallel
|
|
tony_afternoon_meds:
|
|
alias: Tony Afternoon Meds
|
|
sequence:
|
|
- service: script.text_notify
|
|
data:
|
|
who: tony
|
|
type: alert
|
|
title: Afternoon Meds
|
|
message: You need to take your afternoon meds
|
|
tag: tony-afternoon-meds
|
|
actions:
|
|
- action: TONY_AFTERNOON_MEDS_TAKEN
|
|
title: Taken
|
|
- action: TONY_AFTERNOON_MEDS_SKIPPED
|
|
title: Skip
|
|
- action: TONY_AFTERNOON_MEDS_ASK_LATER
|
|
title: Ask Later
|
|
- wait_for_trigger:
|
|
- alias: Taken
|
|
platform: event
|
|
event_type: ios.notification_action_fired
|
|
event_data:
|
|
actionName: TONY_AFTERNOON_MEDS_TAKEN
|
|
id: taken
|
|
- alias: Skipped
|
|
platform: event
|
|
event_type: ios.notification_action_fired
|
|
event_data:
|
|
actionName: TONY_AFTERNOON_MEDS_SKIPPED
|
|
id: skipped
|
|
- alias: Ask Later
|
|
platform: event
|
|
event_type: ios.notification_action_fired
|
|
event_data:
|
|
actionName: TONY_AFTERNOON_MEDS_ASK_LATER
|
|
id: ask-later
|
|
- platform: state
|
|
entity_id: person.tony_stork
|
|
from: home
|
|
id: left
|
|
alias: Left
|
|
- alias: Manual
|
|
platform: state
|
|
entity_id:
|
|
- input_boolean.tony_afternoon_meds_taken
|
|
to: 'on'
|
|
id: manual
|
|
from: 'off'
|
|
timeout: 00:30:00
|
|
continue_on_timeout: true
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ wait.trigger.id in [''taken'',''manual''] }}'
|
|
alias: Taken, Manual
|
|
sequence:
|
|
- service: input_boolean.turn_on
|
|
data: {}
|
|
target:
|
|
entity_id: input_boolean.tony_afternoon_meds_taken
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ wait.trigger.id == ''ask-later'' }}'
|
|
alias: Ask Later
|
|
sequence:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.tony_afternoon_meds_notify
|
|
data:
|
|
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0,30)
|
|
}}
|
|
|
|
'
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ wait.trigger.id == ''left'' }}'
|
|
alias: Left
|
|
sequence:
|
|
- service: script.text_notify
|
|
data:
|
|
who: tony
|
|
type: critical
|
|
title: HEY DUMBASS
|
|
message: YOU FORGOT TO TAKE YOUR AFTERNOON MEDS!!!!!
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ wait.trigger == ''none'' or wait.trigger.idx is undefined
|
|
}}'
|
|
alias: None or undefined
|
|
sequence:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.tony_afternoon_meds_notify
|
|
data:
|
|
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0,1)
|
|
}}
|
|
|
|
'
|
|
- service: script.text_notify
|
|
data:
|
|
type: alert
|
|
who: tony
|
|
message: clear_notification
|
|
tag: tony-afternoon-meds
|
|
icon: mdi:medication
|
|
mode: restart
|