Files
Home-Assistant-Configs/scripts.yaml
Tony Stork 362c041b40 We need to START the med scripts by incrementing the counter
Doing it at the end means things that should happen on the third reminder will not actually happen until the fourth.

#205
2024-08-09 16:48:04 -04:00

3087 lines
88 KiB
YAML

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
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 and Motion Lighting
service: switch.turn_off
data: {}
target:
label_id:
- adaptive_lighting
- motion_lighting
- delay:
hours: 0
minutes: 0
seconds: 1
milliseconds: 0
- alias: Cancel motion timers
service: timer.cancel
data: {}
target:
label_id: motion_lighting
- 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.living_room_scenes
alias: Set scenes
- 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
- 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
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: 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
- service: switch.turn_on
metadata: {}
data: {}
target:
label_id: motion_lighting
alias: Turn on motion lighting
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_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
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
- 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
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: 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: 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.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
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: 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
alias: Early Night Mode off
- 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
alias: If Tina is home, turn on desk lights
- alias: Check if script is being called by Give Me Darkness automation
if:
- condition: template
value_template: '{{ give_me_darkness == 1 }}'
alias: If give_me_darkness = 1
then:
- alias: Set mud room light to nightlight
if:
- condition: state
entity_id: timer.mud_room_motion_timer
state: idle
then:
- service: light.turn_on
metadata: {}
data: {}
target:
entity_id: light.mud_room_overhead
- 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: {}
- alias: Set mud room light to nightlight
if:
- condition: state
entity_id: timer.mud_room_motion_timer
state: idle
then:
- service: light.turn_on
metadata: {}
data: {}
target:
entity_id: light.mud_room_overhead
- service: input_select.select_option
target:
entity_id:
- input_select.mud_room_scenes
data:
option: Nightlight
alias: Give Me Darkness on
- conditions:
- condition: state
entity_id: input_boolean.give_me_darkness
state: 'off'
sequence:
- alias: Check if script is being run by Sunset Lights flow
if:
- condition: template
value_template: '{{ sunset_lights == 1 }}'
alias: If 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
data:
option: Adaptive
- alias: Set mud room light to nightlight
if:
- condition: state
entity_id: timer.mud_room_motion_timer
state: idle
then:
- service: light.turn_on
metadata: {}
data: {}
target:
entity_id: light.mud_room_overhead
- service: input_select.select_option
target:
entity_id:
- input_select.mud_room_scenes
data:
option: Nightlight
else:
- 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
data:
option: Adaptive
- alias: Set mud room light to nightlight
if:
- condition: state
entity_id: timer.mud_room_motion_timer
state: idle
then:
- service: light.turn_on
metadata: {}
data: {}
target:
entity_id: light.mud_room_overhead
- service: input_select.select_option
target:
entity_id:
- input_select.mud_room_scenes
data:
option: Nightlight
alias: Give Me Darkness off
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:
- alias: Set hallway light to nightlight
if:
- condition: and
conditions:
- condition: state
entity_id: timer.upstairs_hallway_motion_timer
state: idle
- condition: state
entity_id: timer.stairwell_motion_timer
state: idle
alias: If hallway and stairwell motion timers are both idle
then:
- service: input_select.select_option
target:
entity_id:
- input_select.upstairs_hallway_scenes
data:
option: Nightlight
alias: Set hallway light to 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"
alias: Set upstairs bathroom scene
- service: light.turn_off
target:
area_id:
- kallen_bedroom
- emma_bedroom
data: {}
alias: Turn off kids' bedroom lights
- alias: Turn off Master Bedroom Lights
if:
- condition: state
entity_id: timer.master_bedroom_motion_timer
state: idle
then:
- service: light.turn_off
metadata: {}
data: {}
target:
area_id:
- master_bedroom
- master_bedroom_closet
- 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: {}
alias: Re-enable adaptive lighting in bedrooms
- 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: {}
alias: Turn off adaptive lighting sleep mode in bedrooms
- 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
alias: Set input texts for bedroom scenes back to Adaptive
alias: Give Me Darkness on
- conditions:
- condition: state
entity_id: input_boolean.give_me_darkness
state: 'off'
sequence:
- alias: Set hallway light to nightlight
if:
- condition: and
conditions:
- condition: state
entity_id: timer.upstairs_hallway_motion_timer
state: idle
- condition: state
entity_id: timer.stairwell_motion_timer
state: idle
alias: If hallway and stairwell motion timers are both idle
then:
- service: input_select.select_option
target:
entity_id:
- input_select.upstairs_hallway_scenes
data:
option: Nightlight
alias: Set hallway light to 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"
alias: Set upstairs bathroom scene
- alias: Check if script is being run by Sunset Lights flow
if:
- condition: template
value_template: '{{ sunset_lights == 1 }}'
alias: If sunset_lights = 1
then:
- stop: Sunset lights don't mess with bedroom light states before bedtime
else:
- service: light.turn_off
target:
area_id:
- kallen_bedroom
- emma_bedroom
data: {}
alias: Turn off kids' bedroom lights
- alias: Turn off Master Bedroom Lights
if:
- condition: state
entity_id: timer.master_bedroom_motion_timer
state: idle
then:
- service: light.turn_off
metadata: {}
data: {}
target:
area_id:
- master_bedroom
- master_bedroom_closet
- 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: {}
alias: Re-enable adaptive lighting in bedrooms
- 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: {}
alias: Turn off adaptive lighting sleep mode in bedrooms
- 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
alias: Set input texts for bedroom scenes back to Adaptive
alias: Give Me Darkness off
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:
- downstairs_bathroom
- tina_desk
entity_id: light.living_room_lights
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:
- downstairs_bathroom
- mud_room
- tina_desk
entity_id: light.living_room_lights
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
- upstairs_hallway
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
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: counter.increment
metadata: {}
data: {}
target:
entity_id: counter.tony_morning_meds_reminder_count
alias: Increment morning reminder counter
- service: script.text_notify
data:
type: alert
who: tony
message: clear_notification
tag: tony-morning-meds
alias: Clear previous morning notification
- delay:
hours: 0
minutes: 0
seconds: 5
milliseconds: 0
- alias: Send morning notifications via text, and TTS if needed
parallel:
- alias: Send text notification
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
- alias: Send TTS if reminders > 2
if:
- condition: numeric_state
entity_id: counter.tony_morning_meds_reminder_count
above: 2
alias: When reminder count > 2
then:
- service: script.speech_engine
data:
who: common_areas
type: alert
message: Tony, you need to take your morning meds. This is reminder number
{{ states('counter.tony_morning_meds_reminder_count') }} for today.
alias: Send TTS notification
tony_night_meds:
alias: Tony Night Meds
icon: mdi:medication
mode: restart
sequence:
- service: counter.increment
metadata: {}
data: {}
target:
entity_id: counter.tony_night_meds_reminder_count
alias: Increment night reminder counter
- service: script.text_notify
data:
type: alert
who: tony
message: clear_notification
tag: tony-night-meds
alias: Clear previous night notification
- delay:
hours: 0
minutes: 0
seconds: 5
milliseconds: 0
- alias: Send night notifications via text, and TTS if needed
parallel:
- alias: Send text notification
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
- alias: Send TTS if reminders > 2
if:
- condition: numeric_state
entity_id: counter.tony_night_meds_reminder_count
above: 2
alias: When reminder count > 2
then:
- service: script.speech_engine
data:
who: common_areas
type: alert
message: Tony, you need to take your night meds. This is reminder number
{{ states('counter.tony_night_meds_reminder_count') }} for today.
alias: Send TTS notification
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
icon: mdi:medication
mode: restart
sequence:
- service: counter.increment
metadata: {}
data: {}
target:
entity_id: counter.tony_afternoon_meds_reminder_count
alias: Increment afternoon reminder counter
- service: script.text_notify
data:
type: alert
who: tony
message: clear_notification
tag: tony-afternoon-meds
alias: Clear previous afternoon notification
- delay:
hours: 0
minutes: 0
seconds: 5
milliseconds: 0
- alias: Send afternoon notifications via text, and TTS if needed
parallel:
- alias: Send text notification
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
- alias: Send TTS if reminders > 2
if:
- condition: numeric_state
entity_id: counter.tony_afternoon_meds_reminder_count
above: 2
alias: When reminder count > 2
then:
- service: script.speech_engine
data:
who: common_areas
type: alert
message: Tony, you need to take your afternoon meds. This is reminder number
{{ states('counter.tony_afternoon_meds_reminder_count') }} for today.
alias: Send TTS notification
tony_ibuprofen:
alias: Tony Ibuprofen
sequence:
- alias: Turn off boolean if this is a notification
if:
- condition: template
value_template: '{{ reason != ''ibuprofen-taken'' }}'
alias: If reason is not ibuprofen-taken
then:
- service: input_boolean.turn_off
target:
entity_id: input_boolean.tony_ibuprofen_taken
data: {}
alias: Turn off boolean
- alias: Routing
choose:
- conditions:
- condition: template
value_template: '{{ reason == ''ibuprofen-notify'' }}'
alias: Ibuprofen Notify
sequence:
- service: script.text_notify
data:
type: alert
who: tony
title: Tony Ibuprofen Time
message: It is time to take your next dose of Ibuprofen
tag: tony-ibuprofen
actions:
- action: TONY_IBUPROFEN_TAKEN
title: Taken
- action: TONY_IBUPROFEN_SKIPPED
title: Skipped
- action: TONY_IBUPROFEN_ASK_LATER
title: Ask Later
alias: Send actionable text notification
- wait_for_trigger:
- platform: event
event_type: ios.notification_action_fired
event_data:
actionName: TONY_IBUPROFEN_TAKEN
id: ibuprofen-taken
alias: Ibuprofen Taken
- alias: Ibuprofen Skipped
platform: event
event_type: ios.notification_action_fired
event_data:
actionName: TONY_IBUPROFEN_SKIPPED
id: ibuprofen-skipped
- alias: Ibuprofen Ask Later
platform: event
event_type: ios.notification_action_fired
event_data:
actionName: TONY_IBUPROFEN_ASK_LATER
id: ibuprofen-ask-later
- platform: state
entity_id:
- input_boolean.tony_ibuprofen_taken
from: 'off'
to: 'on'
id: ibuprofen-manual
alias: Manual
- platform: state
entity_id:
- input_boolean.tony_ibuprofen_active
from: 'on'
to: 'off'
id: cancel
timeout:
hours: 0
minutes: 30
seconds: 0
milliseconds: 0
continue_on_timeout: true
- choose:
- conditions:
- condition: template
value_template: '{{ wait.trigger.id == ''ibuprofen-taken'' }}'
alias: Ibuprofen Taken
sequence:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.tony_ibuprofen_taken
data: {}
alias: Turn on boolean
- conditions:
- alias: Ibuprofen Skipped
condition: template
value_template: '{{ wait.trigger.id == ''ibuprofen-skipped'' }}'
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.tony_ibuprofen_notify
data:
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(8)
}}
'
alias: Set notification time
- conditions:
- alias: Ibuprofen Ask Later
condition: template
value_template: '{{ wait.trigger.id == ''ibuprofen-ask-later'' }}'
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.tony_ibuprofen_notify
data:
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0,30)
}}
'
alias: Set ibuprofen notification time
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.tony_ibuprofen_notify
data:
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(4,30)
}}
'
alias: Set ibuprofen notification time
- conditions:
- condition: template
value_template: '{{ wait.trigger == ''none'' or wait.trigger.idx is undefined
}}'
alias: No response
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.tony_ibuprofen_notify
data:
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0,30)
}}
'
alias: Set notification time
alias: Act on wait triggers
- service: script.text_notify
data:
type: alert
who: tony
message: clear_notification
tag: tony-ibuprofen
alias: Clear actionable text notification
- conditions:
- condition: template
value_template: '{{ reason == ''ibuprofen-taken'' }}'
alias: Ibuprofen Taken
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.tony_ibuprofen_taken
data:
datetime: '{% from ''time.jinja'' import current_time %} {{ current_time(''datetime'',24)
}}
'
alias: Set time taken
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.tony_ibuprofen_notify
data:
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(8)
}}
'
alias: Set ibuprofen notification time
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.tony_tylenol_notify
data:
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(4)
}}
'
alias: Set tylenol notification time
mode: queued
icon: mdi:medication
max: 10
tony_tylenol:
alias: Tony Tylenol
sequence:
- alias: Turn off boolean if this is a notification
if:
- condition: template
value_template: '{{ reason != ''tylenol-taken'' }}'
alias: If reason is not tylenol-taken
then:
- service: input_boolean.turn_off
target:
entity_id: input_boolean.tony_tylenol_taken
data: {}
alias: Turn off boolean
- alias: Routing
choose:
- conditions:
- condition: template
value_template: '{{ reason == ''tylenol-notify'' }}'
alias: Tylenol Notify
sequence:
- service: script.text_notify
data:
type: alert
who: tony
title: Tony Tylenol Time
message: It is time to take your next dose of Tylenol
tag: tony-tylenol
actions:
- action: TONY_TYLENOL_TAKEN
title: Taken
- action: TONY_TYLENOL_SKIPPED
title: Skipped
- action: TONY_TYLENOL_ASK_LATER
title: Ask Later
alias: Send actionable text notification
- wait_for_trigger:
- platform: event
event_type: ios.notification_action_fired
event_data:
actionName: TONY_TYLENOL_TAKEN
id: tylenol-taken
alias: Tylenol Taken
- alias: Tylenol Skipped
platform: event
event_type: ios.notification_action_fired
event_data:
actionName: TONY_TYLENOL_SKIPPED
id: tylenol-skipped
- alias: Tylenol Ask Later
platform: event
event_type: ios.notification_action_fired
event_data:
actionName: TONY_TYLENOL_ASK_LATER
id: tylenol-ask-later
- platform: state
entity_id:
- input_boolean.tony_tylenol_taken
from: 'off'
to: 'on'
id: tylenol-manual
alias: Manual
- platform: state
entity_id:
- input_boolean.tony_tylenol_active
from: 'on'
to: 'off'
id: cancel
timeout:
hours: 0
minutes: 30
seconds: 0
milliseconds: 0
continue_on_timeout: true
- choose:
- conditions:
- condition: template
value_template: '{{ wait.trigger.id == ''tylenol-taken'' }}'
alias: Tylenol Taken
sequence:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.tony_tylenol_taken
data: {}
alias: Turn on boolean
- conditions:
- alias: Tylenol Skipped
condition: template
value_template: '{{ wait.trigger.id == ''tylenol-skipped'' }}'
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.tony_tylenol_notify
data:
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(8)
}}
'
alias: Set notification time
- conditions:
- alias: Tylenol Ask Later
condition: template
value_template: '{{ wait.trigger.id == ''tylenol-ask-later'' }}'
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.tony_tylenol_notify
data:
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0,30)
}}
'
alias: Set tylenol notification time
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.tony_tylenol_notify
data:
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(4,30)
}}
'
alias: Set tylenol notification time
- conditions:
- condition: template
value_template: '{{ wait.trigger == ''none'' or wait.trigger.idx is undefined
}}'
alias: No response
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.tony_tylenol_notify
data:
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0,30)
}}
'
alias: Set notification time
alias: Act on wait triggers
- service: script.text_notify
data:
type: alert
who: tony
message: clear_notification
tag: tony-tylenol
alias: Clear actionable text notification
- conditions:
- condition: template
value_template: '{{ reason == ''tylenol-taken'' }}'
alias: Tylenol Taken
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.tony_tylenol_taken
data:
datetime: '{% from ''time.jinja'' import current_time %} {{ current_time(''datetime'',24)
}}
'
alias: Set time taken
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.tony_tylenol_notify
data:
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(8)
}}
'
alias: Set tylenol notification time
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.tony_ibuprofen_notify
data:
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(4)
}}
'
alias: Set ibuprofen notification time
mode: queued
icon: mdi:medication
max: 10
'1710612011154':
alias: Kallen Morning Meds
sequence:
- service: script.text_notify
data:
who: kallen
type: alert
title: Morning Meds
message: You need to take your morning meds. Go to mom or dad to confirm.
tag: kallen-morning-meds-self
- service: script.text_notify
data:
who: parents
type: alert
title: Morning Meds
message: Kallen needs to take his morning meds
tag: kallen-morning-meds-parents
actions:
- action: KALLEN_MORNING_MEDS_TAKEN
title: Taken
- action: KALLEN_MORNING_MEDS_SKIPPED
title: Skip
- action: KALLEN_MORNING_MEDS_ASK_LATER
title: Ask Later
- wait_for_trigger:
- platform: event
event_type: ios.notification_action_fired
event_data:
actionName: KALLEN_MORNING_MEDS_TAKEN
id: taken
- platform: event
event_type: ios.notification_action_fired
event_data:
actionName: KALLEN_MORNING_MEDS_SKIPPED
id: skipped
- platform: event
event_type: ios.notification_action_fired
event_data:
actionName: KALLEN_MORNING_MEDS_ASK_LATER
id: ask-later
- platform: state
entity_id: person.kallen_stork
from: home
id: left
- platform: state
entity_id: input_boolean.kallen_morning_meds_taken
to: 'on'
id: manual
timeout: 00:10:00
continue_on_timeout: true
- choose:
- conditions:
- condition: template
value_template: '{{ wait.trigger.id in [''taken'',''manual''] }}'
sequence:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.kallen_morning_meds_taken
data: {}
- conditions:
- condition: template
value_template: '{{ wait.trigger.id == ''ask-later'' }}'
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.kallen_morning_meds_notify
data:
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0,5)
}}
'
- conditions:
- condition: template
value_template: '{{ wait.trigger.id == ''left'' or wait.trigger == ''none''
or wait.trigger.idx is undefined }}'
sequence:
- if:
- condition: state
entity_id: person.kallen_stork
state: home
then:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.kallen_morning_meds_notify
data:
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0,1)
}}
'
- service: script.text_notify
data:
type: alert
who: kallen
message: clear_notification
tag: kallen-morning-meds-parents
- service: script.text_notify
data:
type: alert
who: kallen
message: clear_notification
tag: kallen-morning-meds-self
icon: mdi:medication
mode: restart
'1710612164315':
alias: Kallen Night Meds
sequence:
- service: script.text_notify
data:
who: kallen
type: alert
title: Night Meds
message: You need to take your night meds (melatonin)
tag: kallen-night-meds
actions:
- action: KALLEN_NIGHT_MEDS_TAKEN
title: Taken
- action: KALLEN_NIGHT_MEDS_SKIPPED
title: Skip
- action: KALLEN_NIGHT_MEDS_ASK_LATER
title: Ask Later
- service: script.text_notify
data:
who: "{% if states('person.christina_stork') in ['Bob Evans','BobEvans'] %}\n
\ tony\n{% else %}\n parents\n{% endif %}\n"
type: alert
title: Night Meds
message: Kallen needs to take his night meds (melatonin)
tag: kallen-night-meds
actions:
- action: KALLEN_NIGHT_MEDS_TAKEN
title: Taken
- action: KALLEN_NIGHT_MEDS_SKIPPED
title: Skip
- action: KALLEN_NIGHT_MEDS_ASK_LATER
title: Ask Later
- wait_for_trigger:
- platform: event
event_type: ios.notification_action_fired
event_data:
actionName: KALLEN_NIGHT_MEDS_TAKEN
id: taken
- platform: event
event_type: ios.notification_action_fired
event_data:
actionName: KALLEN_NIGHT_MEDS_SKIPPED
id: skipped
- platform: event
event_type: ios.notification_action_fired
event_data:
actionName: KALLEN_NIGHT_MEDS_ASK_LATER
id: ask-later
- platform: state
entity_id: input_boolean.kallen_night_meds_taken
to: 'on'
id: manual
timeout: 00:05:00
continue_on_timeout: true
- choose:
- conditions:
- condition: template
value_template: '{{ wait.trigger.id in [''taken'',''manual''] }}'
sequence:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.kallen_night_meds_taken
data: {}
- conditions:
- condition: template
value_template: '{{ wait.trigger.id == ''ask-later'' }}'
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.kallen_night_meds_notify
data:
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0,15)
}}
'
- conditions:
- condition: template
value_template: '{{ wait.trigger == ''none'' or wait.trigger.idx is undefined
}}'
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.kallen_night_meds_notify
data:
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0,1)
}}
'
- service: script.text_notify
data:
type: alert
who: all
message: clear_notification
tag: kallen-night-meds
icon: mdi:medication
mode: restart
reset_annc_switches:
alias: Reset Announcement Switches
sequence:
- service: input_boolean.turn_off
target:
entity_id:
- input_boolean.good_morning
- input_boolean.daily_briefing
- input_boolean.nightly_briefing
- input_boolean.kallen_morning_briefing
- input_boolean.kallen_nightly_briefing
- input_boolean.basement_briefing
data: {}
mode: single
icon: mdi:bullhorn-outline
emma_rainbow_lights:
alias: Emma Rainbow Lights
sequence:
- service: switch.turn_off
metadata: {}
data: {}
target:
entity_id:
- switch.adaptive_lighting_living_room
- switch.adaptive_lighting_sleep_mode_living_room
alias: Turn off adaptive lighting
- service: lifx.effect_stop
metadata: {}
data: {}
target:
entity_id: light.living_room_led_strip
alias: Stop any current light strip effects
- alias: Choose Effect
choose:
- conditions:
- condition: template
value_template: '{{ effect in [''Rainbow'',null] }}'
alias: Rainbow
sequence:
- service: light.turn_on
metadata: {}
data:
effect: prism
target:
entity_id: light.living_room_overhead
alias: Turn on living room overhead in prism effect
- service: lifx.effect_move
metadata: {}
data:
speed: 8
direction: right
theme: exciting
power_on: true
target:
entity_id: light.living_room_led_strip
alias: Turn on living room LED strip in exciting theme with move effect
- conditions:
- condition: template
value_template: '{{ effect == ''Blue'' }}'
alias: Blue
sequence:
- service: light.turn_on
metadata: {}
data:
rgb_color:
- 0
- 0
- 255
brightness_pct: 100
target:
entity_id: light.living_room_lights
alias: Turn on living room lights, set to blue
- conditions:
- condition: template
value_template: '{{ effect == ''Purple'' }}'
alias: Purple
sequence:
- service: light.turn_on
metadata: {}
data:
rgb_color:
- 134
- 0
- 211
brightness_pct: 100
target:
entity_id: light.living_room_lights
alias: Turn on living room lights, set to purple
- conditions:
- alias: Green
condition: template
value_template: '{{ effect == ''Green'' }}'
sequence:
- alias: Turn on living room lights, set to green
service: light.turn_on
metadata: {}
data:
rgb_color:
- 0
- 255
- 0
brightness_pct: 100
target:
entity_id: light.living_room_lights
- conditions:
- condition: template
value_template: '{{ effect == ''Tokyo'' }}'
alias: Tokyo
sequence:
- service: input_boolean.turn_on
metadata: {}
data: {}
target:
entity_id: input_boolean.living_room_dynamic_scenes
alias: Turn on dynamic scenes
- service: input_select.select_option
metadata: {}
data:
option: Tokyo
target:
entity_id: input_select.living_room_scenes
alias: Activate Tokyo scene in Living Room
- alias: Turn on living room LED strip in intense theme with move effect
service: lifx.effect_move
metadata: {}
data:
speed: 8
direction: right
theme: intense
power_on: true
target:
entity_id: light.living_room_led_strip
mode: restart
icon: fas:rainbow
fields:
effect:
selector:
select:
options:
- Rainbow
- Blue
- Purple
- Green
- Tokyo
multiple: false
name: Effect
description: What type of effect would you like to run?
default: Rainbow
required: true
rabbit_feeding:
alias: Rabbit Feeding
sequence:
- alias: Send notifications
parallel:
- alias: Play TTS if this is the 3rd or higher reminder
if:
- condition: numeric_state
entity_id: counter.rabbit_feeding_reminder_count
above: 2
then:
- service: script.speech_engine
data:
who: common_areas
type: alert
message: Zeus needs to be fed. This is reminder number {{ states('counter.rabbit_feeding_reminder_count')
}} for today.
alias: Play TTS announcement
- alias: Send phone notifications
service: script.text_notify
metadata: {}
data:
type: alert
who: all
title: Rabbit Feeding
message: Zeus needs to be fed, please do this ASAP!
tag: rabbit-feeding
actions:
- action: RABBIT_FEEDING_DONE
title: Fed
- action: RABBIT_FEEDING_SKIPPED
title: Skip
- action: RABBIT_FEEDING_ASK_LATER
title: Ask Later
- wait_for_trigger:
- platform: event
event_type: ios.notification_action_fired
event_data:
actionName: RABBIT_FEEDING_DONE
alias: Done
id: done
- alias: Skipped
platform: event
event_type: ios.notification_action_fired
event_data:
actionName: RABBIT_FEEDING_SKIPPED
id: skipped
- alias: Ask Later
platform: event
event_type: ios.notification_action_fired
event_data:
actionName: RABBIT_FEEDING_ASK_LATER
id: ask-later
- platform: state
entity_id:
- binary_sensor.parents_home
from: 'on'
to: 'off'
id: left
alias: Left
- platform: state
entity_id:
- input_boolean.rabbit_fed
from: 'off'
to: 'on'
alias: Manual
id: manual
timeout:
hours: 1
minutes: 0
seconds: 0
milliseconds: 0
alias: Triggers
- alias: Routing
choose:
- conditions:
- condition: template
value_template: '{{ wait.trigger.id in [''done'',''manual''] }}'
alias: Feeding done
sequence:
- service: input_boolean.turn_on
metadata: {}
data: {}
target:
entity_id: input_boolean.rabbit_fed
alias: Turn on input boolean
- alias: Clear critical notification, if it was sent
service: script.text_notify
metadata: {}
data:
type: alert
who: all
message: clear_notification
tag: rabbit-feeding-critical
- conditions:
- condition: template
value_template: '{{ wait.trigger.id == ''ask-later'' }}'
alias: Ask later
sequence:
- service: input_datetime.set_datetime
data:
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(1)
}}
'
target:
entity_id: input_datetime.rabbit_feeding_notify
alias: Bump feeding notification by an hour
- conditions:
- condition: template
value_template: '{{ wait.trigger.id == ''left'' }}'
alias: Left
sequence:
- service: script.text_notify
metadata: {}
data:
type: critical
who: parents
title: YOU DICK
message: YOU FORGOT TO FEED THE RABBIT!
tag: rabbit-feeding-critical
alias: Send critical text notification
- 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.rabbit_feeding_notify
data:
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0,1)
}}
'
alias: Notify again
- alias: Clear notification
service: script.text_notify
metadata: {}
data:
type: alert
who: all
message: clear_notification
tag: rabbit-feeding
mode: restart
icon: mdi:rabbit
rabbit_hutch_cleaning:
alias: Rabbit Hutch Cleaning
sequence:
- alias: Send notifications
parallel:
- alias: Play TTS if this is the 3rd or higher reminder
if:
- condition: numeric_state
entity_id: counter.rabbit_hutch_cleaning_reminder_count
above: 2
then:
- service: script.speech_engine
data:
who: common_areas
type: normal
message: The rabbit hutch is in need of cleaning. This is reminder number
{{ states('counter.rabbit_hutch_cleaning_reminder_count') }} for today.
alias: Play TTS announcement
- alias: Send phone notifications
service: script.text_notify
metadata: {}
data:
type: alert
who: parents
title: Rabbit Hutch Cleaning
message: The rabbit hutch is in need of cleaning. For the sake of smell, please
do this ASAP!
tag: rabbit-hutch-cleaning
actions:
- action: RABBIT_HUTCH_CLEANING_DONE
title: Cleaned
- action: RABBIT_HUTCH_CLEANING_SKIPPED
title: Skip
- action: RABBIT_HUTCH_CLEANING_ASK_LATER
title: Ask Later
- alias: Triggers
wait_for_trigger:
- alias: Done
platform: event
event_type: ios.notification_action_fired
event_data:
actionName: RABBIT_HUTCH_CLEANING_DONE
id: done
- alias: Skipped
platform: event
event_type: ios.notification_action_fired
event_data:
actionName: RABBIT_HUTCH_CLEANING_SKIPPED
id: skipped
- alias: Ask Later
platform: event
event_type: ios.notification_action_fired
event_data:
actionName: RABBIT_HUTCH_CLEANING_ASK_LATER
id: ask-later
- alias: Manual
platform: state
entity_id:
- input_boolean.rabbit_hutch_cleaned
from: 'off'
to: 'on'
id: manual
timeout:
hours: 1
minutes: 0
seconds: 0
milliseconds: 0
- alias: Routing
choose:
- conditions:
- condition: template
value_template: '{{ wait.trigger.id in [''done'',''manual''] }}'
alias: Cleaning done
sequence:
- alias: Turn on input boolean
service: input_boolean.turn_on
metadata: {}
data: {}
target:
entity_id: input_boolean.rabbit_hutch_cleaned
- conditions:
- condition: template
value_template: '{{ wait.trigger.id == ''ask-later'' }}'
alias: Ask later
sequence:
- service: input_datetime.set_datetime
data:
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(1)
}}
'
target:
entity_id: input_datetime.rabbit_hutch_cleaning_notify
alias: Bump cleaning notification by an hour
- 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.rabbit_hutch_cleaning_notify
data:
datetime: '{% from ''time.jinja'' import set_datetime %} {{ set_datetime(0,1)
}}
'
alias: Notify again
- alias: Clear notification
service: script.text_notify
metadata: {}
data:
type: alert
who: parents
message: clear_notification
tag: rabbit-hutch-cleaning
mode: restart
icon: mdi:rabbit
emma_sleep:
alias: Emma Sleep
sequence:
- if:
- condition: time
after: 04:00:00
before: '17:00:00'
then:
- service: script.emma_bedroom_scheduling_evening
data: {}
alias: Run scheduling if it hasn't already been run
- service: script.turn_off
target:
entity_id:
- script.emma_ibuprofen
- script.emma_tylenol
- script.emma_cough_meds
data: {}
alias: Reset med trackers
- service: light.turn_on
target:
entity_id:
- light.emma_bedroom_light
data: {}
alias: Turn on light
- delay:
seconds: 1
- service: input_select.select_option
target:
entity_id:
- input_select.emma_bedroom_scenes
data:
option: Adaptive
alias: Set lights to adaptive
- alias: Climate Controls
choose:
- conditions:
- alias: If Emma has napped or it is clearly bedtime
condition: or
conditions:
- condition: state
entity_id: input_boolean.emma_has_napped
state: 'on'
alias: Emma has napped
- condition: time
after: '23:00:00'
before: 04:00:00
alias: It is definitely bedtime
sequence:
- alias: Select climate mode
choose:
- conditions:
- alias: AC
condition: and
conditions:
- condition: state
entity_id: input_select.scheduled_climate_mode_emma_aircon
state: AC
alias: Scheduled mode is AC
- condition: state
entity_id: fan.emma_air_conditioner
state: 'off'
alias: Air conditioner is not already on
sequence:
- service: fan.turn_on
target:
entity_id: fan.emma_air_conditioner
data: {}
alias: Turn on air conditioner
- service: script.text_notify
data:
who: parents
title: Emma Climate Schedule
message: The air conditioner in Emma's Bedroom has been activated.
type: normal
tag: emma-climate
alias: Send AC notification
- conditions:
- alias: White Noise
condition: and
conditions:
- condition: state
entity_id: input_select.scheduled_climate_mode_emma_aircon
state: White Noise
alias: Scheduled mode is White Noise
- condition: state
entity_id: input_boolean.white_noise_emma_bedroom
state: 'off'
alias: White Noise is not already on
sequence:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.white_noise_emma_bedroom
data: {}
alias: Turn on white noise
- service: script.text_notify
data:
who: parents
title: Emma Climate Schedule
message: White noise has been activated in Emma's Bedroom.
type: normal
tag: emma-climate
alias: Send white noise notification
default:
- service: script.text_notify
data:
who: parents
title: Emma Climate Schedule
message: No option selected for Emma's climate mode. No devices will be
activated.
type: normal
tag: emma-climate
alias: Send notification that no climate mode is selected
- conditions:
- alias: If Emma has NOT napped and the time is appropriate
condition: and
conditions:
- condition: state
entity_id: input_boolean.emma_has_napped
state: 'off'
alias: Emma has not napped
- condition: time
before: '23:00:00'
after: 04:00:00
alias: It is not bedtime
sequence:
- alias: Select naptime climate mode
choose:
- conditions:
- alias: AC
condition: and
conditions:
- condition: state
entity_id: input_select.naptime_climate_mode_emma_aircon
state: AC
alias: Scheduled naptime mode is AC
- condition: state
entity_id: fan.emma_air_conditioner
state: 'off'
alias: Air conditioner is not already on
sequence:
- service: fan.turn_on
target:
entity_id: fan.emma_air_conditioner
data: {}
alias: Turn on AC
- conditions:
- alias: White Noise
condition: and
conditions:
- condition: state
entity_id: input_select.naptime_climate_mode_emma_aircon
state: White Noise
alias: Scheduled naptime mode is White Noise
- condition: state
entity_id: input_boolean.white_noise_emma_bedroom
state: 'off'
alias: White Noise is not already on
sequence:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.white_noise_emma_bedroom
data: {}
alias: Turn on white noise
icon: mdi:lightbulb-night
mode: restart