Refactor daily Alexa announcements automation for improved clarity and efficiency in triggers, conditions, and actions

This commit is contained in:
Joshua King
2025-06-30 21:11:47 -04:00
parent 2bf523f09b
commit c9db0c6d0c

View File

@@ -1223,164 +1223,170 @@
- id: '1744503044809'
alias: Daily Alexa Announcements for Kids
description: Schedule of Alexa announcements for structured daily routine
triggers:
- at: 09:00:00
trigger: time
- at: '10:00:00'
trigger: time
- at: '10:15:00'
trigger: time
- at: '11:00:00'
trigger: time
- at: '12:00:00'
trigger: time
- at: '12:30:00'
trigger: time
- at: '13:00:00'
trigger: time
- at: '13:30:00'
trigger: time
- at: '14:00:00'
trigger: time
- at: '19:29:00'
trigger: time
conditions:
- condition: state
entity_id: calendar.m365_family_events
state: 'on'
- condition: template
value_template: '{{ ''no camp'' in (state_attr(''calendar.family_events'', ''summary'')
| lower) }}'
actions:
- variables:
messages:
08:00:00: Time for breakfast and a little TV!
09:00:00: Outside play time! If its bad weather, do your learning activities
inside.
'10:00:00': Snack time!
'10:15:00': Time for quiet play or outside fun.
'11:00:00': Creative time! Draw, color, or write something cool!
'12:00:00': Lunch time! Wash up and head to the table.
'12:30:00': Happy Helper Time! Do your chores like a champ!
'13:00:00': TV break — relax and enjoy.
'13:30:00': Time to read a book or listen to a story.
'14:00:00': Lets move! Try a Minecraft brain break!
'14:30:00': Time to relax with mindfulness or yoga.
'19:29:00': Turds.
- data:
target:
- media_player.living_room
- media_player.jordyn_s_room
- media_player.chloe_s_room
- media_player.declan_s_room
- media_player.kitchen
message: '{{ messages[now().strftime(''%H:%M:%S'')] }}'
trigger:
- platform: time
at: "09:00:00"
- platform: time
at: "10:00:00"
- platform: time
at: "10:15:00"
- platform: time
at: "11:00:00"
- platform: time
at: "12:00:00"
- platform: time
at: "12:30:00"
- platform: time
at: "13:00:00"
- platform: time
at: "13:30:00"
- platform: time
at: "14:00:00"
- platform: time
at: "19:29:00"
condition:
- condition: state
entity_id: calendar.m365_family_events
state: 'on'
- condition: template
value_template: >
{{ 'no camp' in [
item.summary.lower()
for item in (state_attr('calendar.family_events', 'data') or [])
if 'summary' in item
] }}
action:
- variables:
messages:
"08:00:00": Time for breakfast and a little TV!
"09:00:00": Outside play time! If its bad weather, do your learning activities inside.
"10:00:00": Snack time!
"10:15:00": Time for quiet play or outside fun.
"11:00:00": Creative time! Draw, color, or write something cool!
"12:00:00": Lunch time! Wash up and head to the table.
"12:30:00": Happy Helper Time! Do your chores like a champ!
"13:00:00": TV break — relax and enjoy.
"13:30:00": Time to read a book or listen to a story.
"14:00:00": Lets move! Try a Minecraft brain break!
"14:30:00": Time to relax with mindfulness or yoga.
"19:29:00": Turds.
- service: notify.alexa_media
data:
type: announce
method: all
action: notify.alexa_media
target:
# - media_player.living_room
# - media_player.declan_s_room
# - media_player.jordyn_s_room
# - media_player.kitchen
# - media_player.tv_alexa
- media_player.parents_room
message: "{{ messages[now().strftime('%H:%M:%S')] }}"
data:
type: announce
method: all
mode: single
- id: '1744503044813'
alias: Announce day camp preparation and pause TV
trigger:
- platform: time
at: 08:30:00
conditions:
- condition: state
entity_id: calendar.m365_family_events
state: 'on'
- condition: template
value_template: "{{ 'camp' in (state_attr('calendar.family_events', 'summary')
| lower) and 'no' not in (state_attr('calendar.family_events', 'summary')
| lower) }}"
- platform: time
at: "08:30:00"
condition:
- condition: state
entity_id: calendar.m365_family_events
state: 'on'
- condition: template
value_template: >
{{ state_attr('calendar.family_events', 'data') | selectattr('summary', 'defined') | map(attribute='summary') | map('lower') | select('search', 'camp') | select('search', 'no', invert=True) | list | count > 0 }}
action:
- service: media_player.play_media
data:
media_content_id: Pause kids TV
media_content_type: routine
target:
entity_id: media_player.kitchen_echo
- service: notify.alexa_media
data:
- service: media_player.play_media
data:
media_content_id: Pause kids TV
media_content_type: routine
target:
- media_player.living_room
- media_player.declan_s_room
- media_player.jordyn_s_room
- media_player.kitchen
- media_player.tv_alexa
message: 'Time to prepare for day camp. Please do the following: Fill water
bottles, Put on deodorant, Brush hair for Jordyn, Brush teeth.'
entity_id: media_player.kitchen_echo
- service: notify.alexa_media
data:
target:
# - media_player.living_room
# - media_player.declan_s_room
# - media_player.jordyn_s_room
# - media_player.kitchen
# - media_player.tv_alexa
- media_player.parents_room
message: >
Time to prepare for day camp. Please do the following:
Fill water bottles, Put on deodorant, Brush teeth, and Jordyn Brush your hair.
- id: '1744503044814'
alias: Announce time to leave for day camp and turn off TV
trigger:
- platform: time
at: 08:45:00
conditions:
- condition: state
entity_id: calendar.m365_family_events
state: 'on'
- condition: template
value_template: "{{ 'camp' in (state_attr('calendar.family_events', 'summary')
| lower) and 'no' not in (state_attr('calendar.family_events', 'summary')
| lower) }}"
- platform: time
at: "08:45:00"
condition:
- condition: state
entity_id: calendar.m365_family_events
state: 'on'
- condition: template
value_template: >
{{ state_attr('calendar.family_events', 'data')
| selectattr('summary', 'defined') | map(attribute='summary')
| map('lower') | select('search', 'camp')
| select('search', 'no', invert=True) | list | count > 0 }}
action:
- service: media_player.play_media
data:
media_content_id: Turn Kids TV Off
media_content_type: routine
target:
entity_id: media_player.basement_show
- service: notify.alexa_media
data:
- service: media_player.play_media
data:
media_content_id: Turn Kids TV Off
media_content_type: routine
target:
# - media_player.living_room
# - media_player.declan_s_room
# - media_player.jordyn_s_room
# - media_player.kitchen
# - media_player.tv_alexa
- media_player.parents_room
message: 'It is time to leave for day camp. Please do the following: Put on
shoes, Get lunch, Get water bottle, Get bag if needed.'
entity_id: media_player.basement_show
- service: notify.alexa_media
data:
target:
- media_player.parents_room
message: >
It is time to leave for day camp. Please do the following:
Put on shoes, Get lunch, Get water bottle, Get bag if needed.
- id: '1744503044145'
alias: Reet Alexa Announcement Volume - Camp Days
alias: Reset Alexa Announcement Volume - Camp Days
description: Set Alexa announcement volume for structured daily routine
mode: single
trigger:
- platform: time
at: 09:15:00
conditions:
- condition: state
entity_id: calendar.m365_family_events
state: 'on'
- condition: template
value_template: "{{ 'camp' in (state_attr('calendar.family_events', 'summary')
| lower) and 'no' not in (state_attr('calendar.family_events', 'summary')
| lower) }}"
- platform: time
at: "09:15:00"
condition:
- condition: state
entity_id: calendar.m365_family_events
state: 'on'
- condition: template
value_template: >
{{ state_attr('calendar.family_events', 'data') | selectattr('summary', 'defined') | map(attribute='summary') | map('lower') | select('search', 'camp') | select('search', 'no', invert=True) | list | count > 0 }}
action:
- service: media_player.play_media
data:
media_content_id: Reset Alexa Volume
media_content_type: routine
target:
entity_id: media_player.basement_show
- service: media_player.play_media
data:
media_content_id: Reset Alexa Volume
media_content_type: routine
target:
entity_id: media_player.basement_show
mode: single
- id: '1744503044146'
alias: Reset Alexa Announcement Volume - No Camp Days
description: Set Alexa announcement volume for structured daily routine
triggers:
- at: '19:17:00'
trigger: time
conditions:
- condition: state
entity_id: calendar.m365_family_events
state: 'on'
- condition: template
value_template: '{{ ''no camp'' in (state_attr(''calendar.family_events'', ''summary'')
| lower) }}'
actions:
- data:
media_content_id: Reset Alexa Volume
media_content_type: routine
target:
entity_id: media_player.basement_show
action: media_player.play_media
mode: single
trigger:
- platform: time
at: "19:17:00"
condition:
- condition: state
entity_id: calendar.m365_family_events
state: 'on'
- condition: template
value_template: >
{{ 'no camp' in [
item.summary.lower()
for item in (state_attr('calendar.family_events', 'data') or [])
if 'summary' in item
] }}
action:
- service: media_player.play_media
data:
media_content_id: Reset Alexa Volume
media_content_type: routine
target:
entity_id: media_player.basement_show
mode: single