diff --git a/packages/announcements.yaml b/packages/announcements.yaml
index 9ce4a08..dd32f58 100644
--- a/packages/announcements.yaml
+++ b/packages/announcements.yaml
@@ -74,3 +74,14 @@ script:
- service: button.press
target:
entity_id: button.good_morning
+
+ kallen_nightly_briefing:
+ sequence:
+ - service: script.speech_engine
+ data:
+ who: living_room
+ message: !include ../templates/speech/kallen_nightly_briefing.yaml
+ - service: script.text_notify
+ data:
+ who: "ios_parents"
+ message: "I just gave Kallen's nightly briefing."
diff --git a/templates/speech/kallen_nightly_briefing.yaml b/templates/speech/kallen_nightly_briefing.yaml
new file mode 100644
index 0000000..d68a77b
--- /dev/null
+++ b/templates/speech/kallen_nightly_briefing.yaml
@@ -0,0 +1,78 @@
+>
+ {# Kallen Nightly Report #}
+ {%- macro getReport() -%}
+
+ Good Evening, Kallen,
+ {{ [ 'It is almost bedtime. That means it is time to start preparing for bed. if you are taking a shower tonight, you need to head that way.',
+ 'My sensors are detecting a strange smell. I am running diagnostics. But in the mean time, you should start a shower.',
+ 'I hate to say it but, the day is coming to an end. Time to finish up your tasks, pick up any toys you have out, and get ready for bed.',
+ 'Did you ever hear the one about the kid who never took a shower? Yeah, me either. So we should keep it that way. It is time to get ready for bed.',
+ 'The count down clock until bedtime has started. Time to get cleaned up, get your pajamas on, and head for your bedroom.'
+ ] | random }}
+ {% if is_state('sensor.school_tomorrow', 'on') %}
+ {{ [ 'Because you have school tomorrow. ',
+ 'Because you have to get up early tomorrow for school.',
+ 'Because you want to be ready for school tomorrow.'
+ ] | random }}
+ {% else %}
+ {% set month=states("sensor.date").split('-')[1] | int %}
+ {%- if is_state('input_boolean.school_in_session', 'off') -%}
+ {{ [ 'Looks like tomorrow is another day of summer vacation. ',
+ 'You are still on summer break tomorrow. ',
+ 'Summer vacation does not last forever, but it is not over yet. '
+ ] | random }}
+ {% else %}
+ Oh, and it appears you do not have school tomorrow
+ {% endif %}
+ {{ [ 'so you can sleep in late. ',
+ 'so let us sleep a little later. ',
+ ' so there is not a reason to get up early. ',
+ 'so we can sleep in. '
+ ] | random }}
+ {% endif %}
+ {% if states.sensor.school_start_days2go.state | int < 10 and states.sensor.school_start_days2go.state | int > 1 -%}
+ {{ [ 'I hate to say it, but ',
+ 'Unfortunately,',
+ 'All good things must come to an end.'
+ ] | random }}
+ There are only {{ states.sensor.school_start_days2go.state }} days
+ {{ [ 'left of summer vacation. ',
+ ' left of summer break.',
+ 'Until School starts again.'
+ ] | random }}
+ {% elif states.sensor.school_start_days2go.state | int == 1 -%}
+ Tomorrow is the first day of school. Are you ready?
+ {%- endif %}
+ {% if states.sensor.school_end_days2go.state | int < 15 and states.sensor.school_end_days2go.state | int > 0 -%}
+ {{ [ 'School is almost over for the year.',
+ 'You have made it to the end of the school year.',
+ 'You are almost done with school.'
+ ] | random }}
+ There are only {{ states.sensor.school_end_days2go.state }} days
+ {{ [ 'left in the school year ',
+ ' left of school.',
+ 'Until the last day of school.'
+ ] | random }}
+ {% elif states.sensor.school_end_days2go.state | int == 0 -%}
+ Tomorrow is the first day of summer. Are you ready?
+ {%- endif %}
+ {{ [ 'I have turned on your bedroom lights.',
+ 'I have executed the Pre bed routine for your room.'
+ ] | random }}
+
+ {%- endmacro -%}
+
+
+ {# a macro that removes all newline characters, empty spaces, and returns formatted text #}
+ {%- macro cleanup(data) -%}
+ {%- for item in data.split("\n") if item | trim != "" -%}
+ {{ item | trim }} {% endfor -%}
+ {%- endmacro -%}
+
+ {# a macro to call all macros :) #}
+ {%- macro mother_of_all_macros() -%}
+ {{ getReport() }}
+ {%- endmacro -%}
+
+ {# Call the macro #}
+ {{- cleanup(mother_of_all_macros()) -}}
\ No newline at end of file