From c9db0c6d0c484287d348844d1a9ddaf99ab7cfd9 Mon Sep 17 00:00:00 2001 From: Joshua King Date: Mon, 30 Jun 2025 21:11:47 -0400 Subject: [PATCH] Refactor daily Alexa announcements automation for improved clarity and efficiency in triggers, conditions, and actions --- automations.yaml | 290 ++++++++++++++++++++++++----------------------- 1 file changed, 148 insertions(+), 142 deletions(-) diff --git a/automations.yaml b/automations.yaml index 33526fd..9591038 100644 --- a/automations.yaml +++ b/automations.yaml @@ -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 it’s 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': Let’s 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 it’s 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": Let’s 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 \ No newline at end of file