Files
Home-Assistant-Configs/packages/emmalynn.yaml

1182 lines
38 KiB
YAML

# This file is for entities/automations that are specific to Emmalynn
input_boolean:
emma_sleeping:
name: Emma Sleeping
icon: mdi:sleep
emma_has_napped:
name: Emma Has Napped
icon: mdi:check
emma_alternating_meds_active:
name: Emma Alternating Meds Active
icon: mdi:medical-bag
emma_cough_meds_active:
name: Emma Cough Meds Active
icon: mdi:medical-bag
emma_ibuprofen:
name: Emma Ibuprofen
icon: mdi:medical-bag
emma_tylenol:
name: Emma Tylenol
icon: mdi:medical-bag
emma_cough_meds:
name: Emma Cough Meds
icon: mdi:medical-bag
emma_alarm_clock:
name: Emma Alarm Clock
icon: mdi:alarm
input_datetime:
emma_bedtime:
name: Emma Bedtime
has_date: false
has_time: true
icon: mdi:fan-auto
emma_wakeup:
name: Emma Wakeup
has_date: false
has_time: true
icon: mdi:fan-off
emma_asleep_at:
name: Emma Asleep At
has_date: false
has_time: true
icon: mdi:weather-night
emma_awake_at:
name: Emma Awake At
has_date: false
has_time: true
icon: mdi:weather-sunset-up
emma_down_for_nap:
name: Emma Down For Nap
has_date: true
has_time: true
icon: mdi:sleep
emma_up_from_nap:
name: Emma Up From Nap
has_date: true
has_time: true
icon: mdi:eye
# These are for use in remembering which medications she has had when she is sick, and when to safely give them again
emma_ibuprofen:
name: Emma Ibuprofen
has_date: true
has_time: true
icon: mdi:medical-bag
emma_ibuprofen_notify:
name: Emma Ibuprofen Notify
has_date: false
has_time: true
icon: mdi:medical-bag
emma_tylenol:
name: Emma Tylenol
has_date: true
has_time: true
icon: mdi:medical-bag
emma_tylenol_notify:
name: Emma Tylenol Notify
has_date: false
has_time: true
icon: mdi:medical-bag
emma_cough_meds:
name: Emma Cough Meds
has_date: true
has_time: true
icon: mdi:medical-bag
emma_cough_meds_notify:
name: Emma Cough Meds Notify
has_date: false
has_time: true
icon: mdi:medical-bag
emma_alarm_clock:
name: Emma Alarm Clock
has_date: false
has_time: true
icon: mdi:alarm
automation:
- id: 4f01dff7-be22-4850-a05e-1906e3151441
alias: 'Emma Sleeping'
description: "Handles the response to the Emma Sleeping toggle"
mode: restart
trigger:
- platform: state
entity_id: input_boolean.emma_sleeping
from: 'off'
to: 'on'
id: sleep-on
- platform: state
entity_id: input_boolean.emma_sleeping
from: 'on'
to: 'off'
id: sleep-off
condition:
- condition: state
entity_id: binary_sensor.parents_home
state: 'on'
action:
- choose:
- conditions:
- condition: trigger
id: sleep-on
sequence:
- service: script.emma_sleep
- if:
- condition: and
conditions:
- condition: state
entity_id: input_boolean.emma_has_napped
state: 'off'
- condition: time
before: "23:00:00"
after: "07:00:00"
then:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_down_for_nap
data:
datetime: >
{% from 'time.jinja' import current_time %}
{{ current_time(24,'withdate') }}
else:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_asleep_at
data:
time: >
{% from 'time.jinja' import current_time %}
{{ current_time(24) }}
- delay:
seconds: 1
- service: script.text_notify
data:
who: parents
type: alert
title: Emma Sleeping
message: >
{% from 'status.jinja' import emma_sleep_notification %}
{% from 'formatting.jinja' import cleanup %}
{{ cleanup(emma_sleep_notification()) }}
tag: emma-sleep
- conditions:
- condition: trigger
id: sleep-off
sequence:
- if:
- condition: and
conditions:
- condition: state
entity_id: input_boolean.emma_has_napped
state: 'off'
- condition: time
after: "15:00:00"
then:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_up_from_nap
data:
datetime: >
{% from 'time.jinja' import current_time %}
{{ current_time(24,'withdate') }}
- delay:
milliseconds: 500
- if:
- condition: template
value_template: >
{% from 'time.jinja' import ct %}
{% set ct = ct() | int %}
{% set proposed = ct + 10800 %}
{{ proposed < 82800 }}
then:
- service: script.emma_bedroom_scheduling_evening
else:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_bedtime
data:
time: "{{ (state_attr('input_datetime.emma_up_from_nap','timestamp') + 14400) | timestamp_custom('%H:%M') }}"
- service: input_boolean.turn_on
target:
entity_id: input_boolean.emma_has_napped
- delay:
seconds: 1
- service: script.text_notify
data:
who: parents
type: alert
title: Emma Awakens
message: >
{% from 'status.jinja' import emma_sleep_notification %}
{% from 'formatting.jinja' import cleanup %}
{{ cleanup(emma_sleep_notification()) }}
tag: emma-wake
- service: script.emma_wakeup
- id: '1655415573165'
alias: Emma Bedroom Handling
description: "For scheduled operations in Emma's bedroom"
mode: restart
trigger:
- platform: time
at: input_datetime.emma_wakeup
id: emma-wakeup
- platform: time
at: input_datetime.emma_bedtime
id: emma-bedtime
condition:
- condition: state
entity_id: input_boolean.vacation_mode
state: 'off'
action:
- choose:
- conditions:
- condition: trigger
id: emma-wakeup
sequence:
- service: input_boolean.turn_off
target:
entity_id: input_boolean.emma_sleeping
- conditions:
- condition: trigger
id: emma-bedtime
sequence:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.emma_sleeping
- id: e44c2ab8-00cd-40ab-9b42-824511ac20aa
alias: Emma Naptime Climate
description: Sets the climate mode for when Emma goes down for nap
mode: restart
trigger:
- platform: time_pattern
minutes: "/5"
- platform: state
entity_id: input_number.emma_naptime_aircon_threshold
- platform: state
entity_id: input_boolean.hot_day
condition:
- condition: state
entity_id: input_boolean.emma_sleeping
state: 'off'
- condition: state
entity_id: input_boolean.emma_bedroom_climate_override
state: 'off'
action:
- service: input_select.select_option
target:
entity_id: input_select.naptime_climate_mode_emma_aircon
data:
option: >
{% set temp = state_attr('weather.iron_nerd_weather_station','temperature') | int %}
{% set threshold = states('input_number.emma_naptime_aircon_threshold') | int %}
{% if (temp >= threshold) or is_state('input_boolean.hot_day','on') %}
AC
{% else %}
White Noise
{% endif %}
- id: 5b45eeb2-171e-4bac-825b-8ac7aa672dab
alias: Emma Bedtime Update
description: Attempt to make readouts of when Emma went to bed more accurate
mode: restart
trigger:
- platform: state
entity_id: input_boolean.emma_sleeping
from: 'off'
to: 'on'
id: initial
- platform: event
event_type: timer.finished
event_data:
entity_id: timer.emma_bedtime_update
id: bedtime-timer-finished
- platform: event
event_type: timer.finished
event_data:
entity_id: timer.emma_naptime_update
id: naptime-timer-finished
- platform: state
entity_id: light.emma_bedroom_light
to: 'off'
id: lights-off
action:
- choose:
- conditions:
- condition: trigger
id: initial
sequence:
- choose:
- conditions:
- condition: and
conditions:
- condition: state
entity_id: input_boolean.emma_has_napped
state: 'off'
- condition: time
before: "23:00:00"
after: "07:00:00"
sequence:
- service: timer.start
target:
entity_id: timer.emma_naptime_update
data:
duration: "01:00:00"
- conditions:
- condition: or
conditions:
- condition: state
entity_id: input_boolean.emma_has_napped
state: 'on'
- condition: time
after: "23:00:00"
before: "07:00:00"
sequence:
- service: timer.start
target:
entity_id: timer.emma_bedtime_update
data:
duration: "01:00:00"
- conditions:
- condition: trigger
id: lights-off
sequence:
- service: timer.cancel
target:
entity_id:
- timer.emma_bedtime_update
- timer.emma_naptime_update
- if:
- condition: state
entity_id: input_boolean.emma_sleeping
state: 'on'
then:
- choose:
- conditions:
- condition: and
conditions:
- condition: state
entity_id: input_boolean.emma_has_napped
state: 'off'
- condition: time
before: "23:00:00"
after: "07:00:00"
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_down_for_nap
data:
datetime: >
{% from 'time.jinja' import current_time %}
{{ current_time(24,'withdate') }}
- conditions:
- condition: or
conditions:
- condition: state
entity_id: input_boolean.emma_has_napped
state: 'on'
- condition: time
after: "23:00:00"
before: "07:00:00"
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_asleep_at
data:
time: >
{% from 'time.jinja' import current_time %}
{{ current_time(24) }}
- conditions:
- condition: trigger
id: naptime-timer-finished
sequence:
- if:
- condition: state
entity_id: light.emma_bedroom_light
state: 'on'
then:
- delay:
seconds: 1
- service: timer.start
target:
entity_id: timer.emma_naptime_update
data:
duration: "01:00:00"
else:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_down_for_nap
data:
datetime: >
{% from 'time.jinja' import current_time %}
{{ current_time(24,'withdate') }}
- conditions:
- condition: trigger
id: bedtime-timer-finished
sequence:
- if:
- condition: state
entity_id: light.emma_bedroom_light
state: 'on'
then:
- delay:
seconds: 1
- service: timer.start
target:
entity_id: timer.emma_bedtime_update
data:
duration: "01:00:00"
else:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_asleep_at
data:
datetime: >
{% from 'time.jinja' import current_time %}
{{ current_time(24) }}
- id: e59f638a-519f-4619-bf7d-b13251b3a374
alias: Emma Meds Handler
description: Handles reminders for Emma taking her meds when sick or teething
mode: parallel
max: 30
trigger:
- platform: state
entity_id: input_boolean.emma_alternating_meds_active
from: 'off'
to: 'on'
id: alt-active
- platform: state
entity_id: input_boolean.emma_alternating_meds_active
from: 'on'
to: 'off'
id: alt-inactive
- platform: state
entity_id: input_boolean.emma_cough_meds_active
from: 'off'
to: 'on'
id: cough-active
- platform: state
entity_id: input_boolean.emma_cough_meds_active
from: 'on'
to: 'off'
id: cough-inactive
- platform: time
at: input_datetime.emma_ibuprofen_notify
id: ibuprofen-notify
- platform: time
at: input_datetime.emma_tylenol_notify
id: tylenol-notify
- platform: time
at: input_datetime.emma_cough_meds_notify
id: cough-notify
- platform: state
entity_id: input_boolean.emma_ibuprofen
from: 'off'
to: 'on'
id: ibuprofen-on
- platform: state
entity_id: input_boolean.emma_tylenol
from: 'off'
to: 'on'
id: tylenol-on
- platform: state
entity_id: input_boolean.emma_cough_meds
from: 'off'
to: 'on'
id: cough-on
action:
- choose:
- conditions:
- condition: trigger
id:
- alt-active
- alt-inactive
sequence:
- service: input_boolean.turn_off
target:
entity_id:
- input_boolean.emma_tylenol
- input_boolean.emma_ibuprofen
- conditions:
- condition: trigger
id:
- cough-active
- cough-inactive
sequence:
- service: input_boolean.turn_off
target:
entity_id: input_boolean.emma_cough_meds
- conditions:
- condition: and
conditions:
- condition: trigger
id:
- ibuprofen-notify
- ibuprofen-on
- condition: state
entity_id: input_boolean.emma_alternating_meds_active
state: 'on'
sequence:
- service: script.emma_ibuprofen
data:
reason: "{{ trigger.id }}"
- conditions:
- condition: and
conditions:
- condition: trigger
id:
- tylenol-notify
- tylenol-on
- condition: state
entity_id: input_boolean.emma_alternating_meds_active
state: 'on'
sequence:
- service: script.emma_tylenol
data:
reason: "{{ trigger.id }}"
- conditions:
- condition: and
conditions:
- condition: trigger
id:
- cough-notify
- cough-on
- condition: state
entity_id: input_boolean.emma_cough_meds_active
state: 'on'
sequence:
- service: script.emma_cough_meds
data:
reason: "{{ trigger.id }}"
script:
emma_ibuprofen:
alias: Emma Ibuprofen
icon: mdi:medical-bag
mode: queued
max: 10
sequence:
- choose:
- conditions: "{{ reason == 'ibuprofen-notify' and is_state('input_boolean.emma_sleeping','off') }}"
sequence:
- service: input_boolean.turn_off
target:
entity_id: input_boolean.emma_ibuprofen
- service: script.text_notify
data:
who: >
{% if is_state('input_boolean.work_today','on') and states('person.christina_stork') in ['Bob Evans','BobEvans'] %}
tony
{% else %}
parents
{% endif %}
type: alert
title: Emma Ibuprofen Time
message: It is time to give Emma her next dose of ibuprofen
tag: emma-ibuprofen
actions:
- action: "EMMA_IBUPROFEN_GIVEN"
title: Given
- action: "EMMA_IBUPROFEN_SKIPPED"
title: Skipped
- action: "EMMA_IBUPROFEN_ASK_LATER"
title: Ask Later
- wait_for_trigger:
- platform: event
event_type: ios.notification_action_fired
event_data:
actionName: "EMMA_IBUPROFEN_GIVEN"
id: ibuprofen-given
- platform: event
event_type: ios.notification_action_fired
event_data:
actionName: "EMMA_IBUPROFEN_SKIPPED"
id: ibuprofen-skipped
- platform: event
event_type: ios.notification_action_fired
event_data:
actionName: "EMMA_IBUPROFEN_ASK_LATER"
id: ibuprofen-ask-later
- platform: state
entity_id: input_boolean.emma_ibuprofen
from: 'off'
to: 'on'
id: ibuprofen-manual
- platform: state
entity_id: input_boolean.emma_alternating_meds_active
to: 'off'
id: cancel
timeout: "00:30:00"
continue_on_timeout: true
- choose:
- conditions: "{{ wait.trigger.id == 'ibuprofen-given' }}"
sequence:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.emma_ibuprofen
- conditions: "{{ wait.trigger.id == 'ibuprofen-skipped' }}"
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_ibuprofen_notify
data:
datetime: >
{% from 'time.jinja' import set_datetime %}
{{ set_datetime(8) }}
- conditions: "{{ wait.trigger.id == 'ibuprofen-ask-later' }}"
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_ibuprofen_notify
data:
datetime: >
{% from 'time.jinja' import set_datetime %}
{{ set_datetime(0,30) }}
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_tylenol_notify
data:
datetime: >
{% from 'time.jinja' import set_datetime %}
{{ set_datetime(4,30) }}
- conditions: "{{ wait.trigger == 'none' or wait.trigger.idx is undefined }}"
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_ibuprofen_notify
data:
datetime: >
{% from 'time.jinja' import set_datetime %}
{{ set_datetime(0,30) }}
- service: script.text_notify
data:
who: parents
type: alert
message: clear_notification
tag: emma-ibuprofen
- conditions: "{{ reason == 'ibuprofen-on' }}"
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_ibuprofen
data:
datetime: >
{% from 'time.jinja' import current_time %}
{{ current_time(24,'withdate') }}
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_ibuprofen_notify
data:
datetime: >
{% from 'time.jinja' import set_datetime %}
{{ set_datetime(8) }}
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_tylenol_notify
data:
datetime: >
{% from 'time.jinja' import set_datetime %}
{{ set_datetime(4) }}
emma_tylenol:
alias: Emma Tylenol
icon: mdi:medical-bag
mode: queued
max: 10
sequence:
- choose:
- conditions: "{{ reason == 'tylenol-notify' and is_state('input_boolean.emma_sleeping','off') }}"
sequence:
- service: input_boolean.turn_off
target:
entity_id: input_boolean.emma_tylenol
- service: script.text_notify
data:
who: >
{% if is_state('input_boolean.work_today','on') and states('person.christina_stork') in ['Bob Evans','BobEvans'] %}
tony
{% else %}
parents
{% endif %}
type: alert
title: Emma Tylenol Time
message: It is time to give Emma her next dose of tylenol
tag: emma-tylenol
actions:
- action: "EMMA_TYLENOL_GIVEN"
title: Given
- action: "EMMA_TYLENOL_SKIPPED"
title: Skipped
- action: "EMMA_TYLENOL_ASK_LATER"
title: Ask Later
- wait_for_trigger:
- platform: event
event_type: ios.notification_action_fired
event_data:
actionName: "EMMA_TYLENOL_GIVEN"
id: tylenol-given
- platform: event
event_type: ios.notification_action_fired
event_data:
actionName: "EMMA_TYLENOL_SKIPPED"
id: tylenol-skipped
- platform: event
event_type: ios.notification_action_fired
event_data:
actionName: "EMMA_TYLENOL_ASK_LATER"
id: tylenol-ask-later
- platform: state
entity_id: input_boolean.emma_tylenol
from: 'off'
to: 'on'
id: tylenol-manual
- platform: state
entity_id: input_boolean.emma_alternating_meds_active
to: 'off'
id: cancel
timeout: "00:30:00"
continue_on_timeout: true
- choose:
- conditions: "{{ wait.trigger.id == 'tylenol-given' }}"
sequence:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.emma_tylenol
- conditions: "{{ wait.trigger.id == 'tylenol-skipped' }}"
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_tylenol_notify
data:
datetime: >
{% from 'time.jinja' import set_datetime %}
{{ set_datetime(8) }}
- conditions: "{{ wait.trigger.id == 'tylenol-ask-later' }}"
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_tylenol_notify
data:
datetime: >
{% from 'time.jinja' import set_datetime %}
{{ set_datetime(0,30) }}
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_tylenol_notify
data:
datetime: >
{% from 'time.jinja' import set_datetime %}
{{ set_datetime(4,30) }}
- conditions: "{{ wait.trigger == 'none' or wait.trigger.idx is undefined }}"
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_tylenol_notify
data:
datetime: >
{% from 'time.jinja' import set_datetime %}
{{ set_datetime(0,30) }}
- service: script.text_notify
data:
who: parents
type: alert
message: clear_notification
tag: emma-tylenol
- conditions: "{{ reason == 'tylenol-on' }}"
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_tylenol
data:
datetime: >
{% from 'time.jinja' import current_time %}
{{ current_time(24,'withdate') }}
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_tylenol_notify
data:
datetime: >
{% from 'time.jinja' import set_datetime %}
{{ set_datetime(8) }}
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_ibuprofen_notify
data:
datetime: >
{% from 'time.jinja' import set_datetime %}
{{ set_datetime(4) }}
emma_cough_meds:
alias: Emma Cough Meds
icon: mdi:medical-bag
mode: queued
max: 10
sequence:
- choose:
- conditions: "{{ reason == 'cough-notify' and is_state('input_boolean.emma_sleeping','off') }}"
sequence:
- service: input_boolean.turn_off
target:
entity_id: input_boolean.emma_cough_meds
- service: script.text_notify
data:
who: >
{% if is_state('input_boolean.work_today','on') and states('person.christina_stork') in ['Bob Evans','BobEvans'] %}
tony
{% else %}
parents
{% endif %}
type: alert
title: Emma Cough Meds Time
message: It is time to give Emma her next dose of cough meds
tag: emma-cough
actions:
- action: "EMMA_COUGH_GIVEN"
title: Given
- action: "EMMA_COUGH_SKIPPED"
title: Skipped
- action: "EMMA_COUGH_ASK_LATER"
title: Ask Later
- wait_for_trigger:
- platform: event
event_type: ios.notification_action_fired
event_data:
actionName: "EMMA_COUGH_GIVEN"
id: cough-given
- platform: event
event_type: ios.notification_action_fired
event_data:
actionName: "EMMA_COUGH_SKIPPED"
id: cough-skipped
- platform: event
event_type: ios.notification_action_fired
event_data:
actionName: "EMMA_COUGH_ASK_LATER"
id: cough-ask-later
- platform: state
entity_id: input_boolean.emma_cough_meds
from: 'off'
to: 'on'
id: cough-manual
- platform: state
entity_id: input_boolean.emma_cough_meds_active
to: 'off'
id: cancel
timeout: "00:30:00"
continue_on_timeout: true
- choose:
- conditions: "{{ wait.trigger.id == 'cough-given' }}"
sequence:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.emma_cough_meds
- conditions: "{{ wait.trigger.id == 'cough-skipped' }}"
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_cough_meds_notify
data:
datetime: >
{% from 'time.jinja' import set_datetime %}
{{ set_datetime(4) }}
- conditions: "{{ wait.trigger.id == 'cough-ask-later' }}"
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_cough_meds_notify
data:
datetime: >
{% from 'time.jinja' import set_datetime %}
{{ set_datetime(0,30) }}
- conditions: "{{ wait.trigger == 'none' or wait.trigger.idx is undefined }}"
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_cough_meds_notify
data:
datetime: >
{% from 'time.jinja' import set_datetime %}
{{ set_datetime(0,30) }}
- service: script.text_notify
data:
who: parents
type: alert
message: clear_notification
tag: emma-cough
- conditions: "{{ reason == 'cough-on' }}"
sequence:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_cough_meds
data:
datetime: >
{% from 'time.jinja' import current_time %}
{{ current_time(24,'withdate') }}
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_cough_meds_notify
data:
datetime: >
{% from 'time.jinja' import set_datetime %}
{{ set_datetime(4) }}
emma_sleep:
alias: 'Emma Sleep'
icon: mdi:lightbulb-night
mode: restart
sequence:
- if:
- condition: time
after: '04:00:00'
before: '16:00:00'
then:
- service: script.emma_bedroom_scheduling_evening
# Lighting
- choose:
- conditions:
- condition: state
entity_id: binary_sensor.early_night_mode
state: 'on'
sequence:
- service: light.turn_on
target:
entity_id:
- light.emma_bedroom_light
- light.hallway_overhead
- delay:
seconds: 1
- service: input_select.select_option
target:
entity_id:
- input_select.emma_bedroom_scenes
- input_select.upstairs_hallway_scenes
data:
option: Adaptive
- service: script.stairwell_led_strip
data:
brightness: 255
- conditions:
- condition: state
entity_id: binary_sensor.early_night_mode
state: 'off'
sequence:
- service: light.turn_on
target:
entity_id: light.emma_bedroom_light
# Climate
- choose:
- conditions:
- condition: or
conditions:
- condition: state
entity_id: input_boolean.emma_has_napped
state: 'on'
- condition: time
after: "23:00:00"
before: "04:00:00"
sequence:
- choose:
- conditions:
- condition: state
entity_id: input_select.scheduled_climate_mode_emma_aircon
state: AC
sequence:
- service: fan.turn_on
target:
entity_id: fan.emma_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
- conditions:
- condition: state
entity_id: input_select.scheduled_climate_mode_emma_aircon
state: White Noise
sequence:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.white_noise_emma_bedroom
- 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
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
- conditions:
- condition: and
conditions:
- condition: state
entity_id: input_boolean.emma_has_napped
state: 'off'
- condition: time
before: "23:00:00"
after: "04:00:00"
sequence:
- choose:
- conditions:
- condition: state
entity_id: input_select.naptime_climate_mode_emma_aircon
state: AC
sequence:
- service: fan.turn_on
target:
entity_id: fan.emma_air_conditioner
- conditions:
- condition: state
entity_id: input_select.naptime_climate_mode_emma_aircon
state: White Noise
sequence:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.white_noise_emma_bedroom
emma_wakeup:
alias: 'Emma Wakeup'
icon: mdi:weather-sunset-up
mode: restart
sequence:
# Lighting
- variables:
brightness: "{{ state_attr('switch.adaptive_lighting_emma_bedroom','brightness_pct') | int }}"
- if:
- condition: state
entity_id: input_boolean.emma_cough_meds_active
state: 'on'
then:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_cough_meds_notify
data:
datetime: >
{% from 'time.jinja' import set_datetime %}
{{ set_datetime(0,1) }}
- if:
- condition: state
entity_id: binary_sensor.basement_occupied
state: 'on'
then:
- service: script.speech_engine
data:
who: basement
type: normal
message: Emma has awoken, so it is time to make your way upstairs now
- if:
- condition: template
value_template: "{{ is_state('binary_sensor.morning','on') or is_state('binary_sensor.midday','on') }}"
then:
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_awake_at
data:
time: >
{% from 'time.jinja' import current_time %}
{{ current_time(24) }}
- if:
- condition: state
entity_id: binary_sensor.early_night_mode
state: 'on'
then:
- service: light.turn_on
target:
entity_id: light.hallway_overhead
- service: input_select.select_option
target:
entity_id:
- input_select.upstairs_hallway_scenes
data:
option: Adaptive
- service: switch.turn_off
target:
entity_id: switch.adaptive_lighting_emma_bedroom
- delay:
seconds: 1
- service: light.turn_on
target:
entity_id: light.emma_bedroom_light
data:
brightness_pct: "{{ brightness|default(40) }}"
transition: >
{% from 'time.jinja' import timer_duration %}
{% if is_state('binary_sensor.early_night_mode','on') %}
{{ timer_duration('input_number.wakeup_lights_fade_night') }}
{% else %}
{{ timer_duration('input_number.wakeup_lights_fade_day') }}
{% endif %}
- wait_for_trigger:
- platform: state
entity_id: light.emma_bedroom_light
to: 'off'
id: lights-off
- platform: state
entity_id: input_select.emma_bedroom_scenes
to: 'Adaptive'
id: adaptive
timeout:
minutes: >
{% if is_state('binary_sensor.early_night_mode','on') %}
{{ states('input_number.wakeup_lights_fade_night') }}
{% else %}
5
{% endif %}
- choose:
- conditions: "{{ wait.trigger == 'none' or wait.trigger.idx is undefined }}"
sequence:
- service: input_select.select_option
target:
entity_id: input_select.emma_bedroom_scenes
data:
option: Adaptive
- conditions: "{{ wait.trigger.id == 'lights-off' }}"
sequence:
- service: switch.turn_on
target:
entity_id: switch.adaptive_lighting_emma_bedroom
- service: switch.turn_off
target:
entity_id: switch.adaptive_lighting_sleep_mode_emma_bedroom
- service: input_text.set_value
target:
entity_id: input_text.emma_bedroom_selected_scene
data:
value: Adaptive
# Climate/White Noise
- service: input_boolean.turn_off
target:
entity_id: input_boolean.white_noise_emma_bedroom
- if:
- condition: template
value_template: >-
{{ is_state('fan.emma_air_conditioner','on') and is_state('input_boolean.hot_day','off') }}
then:
- service: script.turn_on
target:
entity_id: script.emma_aircon_shutoff
emma_aircon_shutoff:
alias: 'Emma Air Conditioner Shutoff'
mode: restart
description: 'Attempt to shut off air conditioner after compressor stops running'
sequence:
- wait_template: "{{ is_state('binary_sensor.emma_aircon_compressor','off') }}"
timeout:
minutes: 15
continue_on_timeout: true
- delay:
seconds: 5
- service: fan.turn_off
target:
entity_id: fan.emma_air_conditioner