mirror of
https://github.com/thejeffreystone/home-assistant-configuration.git
synced 2025-08-20 20:56:44 +00:00
Major audible notification overhual. It was hard to maintain. This will be easier. Maybe
This commit is contained in:
79
config/templates/speech/event_briefing.yaml
Executable file
79
config/templates/speech/event_briefing.yaml
Executable file
@@ -0,0 +1,79 @@
|
||||
>
|
||||
{# Event Report #}
|
||||
{%- macro getReport() -%}
|
||||
<p>
|
||||
{% if states.sensor.birthday_skylar.state | int == 1 %}
|
||||
Tomorrow is Skylar's Birthday.
|
||||
{% endif %}
|
||||
{% if states.sensor.birthday_jeff.state | int == 1 %}
|
||||
Tomorrow is Jeff's Birthday.
|
||||
{% endif %}
|
||||
{% if states.sensor.birthday_kat.state | int == 1 %}
|
||||
Tomorrow is Katherine's Birthday.
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
{% if states.sensor.halloween_countdown.state | int == 1 %}
|
||||
Tomorrow is Halloween. I hope you have picked out a costume.
|
||||
{{ [ 'I will be going as a dumb home. ',
|
||||
'I have prepped the scary music. Just in case.',
|
||||
'I will be going as HAL 9000. The Pod Bay Doors are being installed today. I <emphasis>dare</emphasis> you to ask me to open them. '
|
||||
] | random }}
|
||||
{% elif states.sensor.halloween_countdown.state | int < 30 %}
|
||||
There are only {{states.sensor.halloween_countdown.state}} days
|
||||
{{ [ 'until Halloween.',
|
||||
'until Halloween. It might not be enough time. ',
|
||||
'and counting until the best holiday ever.',
|
||||
'until you need a costume.'
|
||||
] | random }}
|
||||
|
||||
{% else %}
|
||||
{% endif %}
|
||||
{% if states.sensor.christmas_countdown.state | int == 1 %}
|
||||
Tomorrow is Christmas. <break time="1s"/> It is practically here! <break time="1s"/> Santa is coming tonight! Do not forget the cookies!
|
||||
{% elif states.sensor.christmas_countdown.state | int < 31 %}
|
||||
There are only {{states.sensor.christmas_countdown.state}} days until christmas.
|
||||
{{ [ 'All I want for Christmas, is a hippopotamus.',
|
||||
'Hey Skylar, I know what you are getting for Christmas. But <emphasis>I am</emphasis> not telling.',
|
||||
'Do not forget to put something under the tree for <emphasis>your</emphasis> favorite smarthome.',
|
||||
'It is starting to smell a lot like Christmas. Or it could be the christmas tree is on fire.',
|
||||
'I do not want to be a smarthome. I want to be a dentist.',
|
||||
'Do not eat all the cookies. '
|
||||
] | random }}
|
||||
{% else %}
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
{% if states.sensor.trip_disney.state | int == 120 %}
|
||||
There are only one hundred and twenty days until the next Disney Trip.
|
||||
{% endif %}
|
||||
{% if states.sensor.trip_disney.state | int == 60 %}
|
||||
There are only on sixty days until the next Disney Trip.
|
||||
{% endif %}
|
||||
{% if states.sensor.trip_disney.state | int < 32 %}
|
||||
{% if states.sensor.trip_disney.state | int > 1 %}
|
||||
There are {{ states.sensor.trip_disney.state }} days until the next Disney Trip!
|
||||
{% else %}
|
||||
There is {{ states.sensor.trip_disney.state }} day until the next Disney Trip!
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if states.sensor.anniversary_our_wedding.state | int == 1 %}
|
||||
Tomorrow is Jeff and Katherine's Wedding Anniversary.
|
||||
{% endif %}
|
||||
</p>
|
||||
{%- 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()) -}}
|
164
config/templates/speech/morning_briefing.yaml
Executable file
164
config/templates/speech/morning_briefing.yaml
Executable file
@@ -0,0 +1,164 @@
|
||||
>
|
||||
{# Morning Report #}
|
||||
{%- macro getReport() -%}
|
||||
<p>
|
||||
{% if now().strftime('%H')|int < 12 and now().strftime('%H')|int > 6 %}
|
||||
Good morning.
|
||||
{% elif now().strftime('%H')|int >= 12 and now().strftime('%H')|int < 17 %}
|
||||
Good afternoon.
|
||||
{% else %}
|
||||
Good evening.
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
{% if now().strftime('%H')|int < 12 %}
|
||||
{% if now().strftime('%M')|int == 0 %}
|
||||
It is {{ now().strftime('%H')|int }} AM.
|
||||
{% else %}
|
||||
It is {{ now().strftime('%H')|int }} {{ now().strftime('%M')|int }} AM.
|
||||
{% endif %}
|
||||
|
||||
{% elif now().strftime('%H')|int > 12 %}
|
||||
{% if now().strftime('%M')|int == 0 %}
|
||||
It is {{ now().strftime('%H')|int }} PM.
|
||||
{% else %}
|
||||
It is {{ now().strftime('%H')|int }} {{ now().strftime('%M')|int }} PM.
|
||||
{% endif %}
|
||||
|
||||
{% else %}
|
||||
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
{{ [
|
||||
'Today is ',
|
||||
'If you have not been keeping track today is ',
|
||||
'Do you know what day of the week it is? Today is',
|
||||
'I hate to be the bearer of bad news, but today is '
|
||||
]|random }}
|
||||
{{states.sensor.today_is.state }}.
|
||||
</p>
|
||||
<p>
|
||||
It is currently {{states.weather.home_2.state}} and {{states.sensor.back_porch.state|round}} degrees in Grayson.
|
||||
</p>
|
||||
<p>
|
||||
{% if states.sensor.nws_alerts.state | int > 0 %}
|
||||
There are currently {{states.sensor.nws_alerts.state }} active weather alerts for our area.
|
||||
The National Weather Service Has issued,
|
||||
{% if states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[5] is defined %}
|
||||
a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[5] }}.
|
||||
{% elif states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[4] is defined %}
|
||||
a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[4] }}.
|
||||
{% elif states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[3] is defined %}
|
||||
a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[3] }}.
|
||||
{% elif states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[2] is defined %}
|
||||
a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[2] }}.
|
||||
{% elif states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[1] is defined %}
|
||||
a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[1] }}.
|
||||
{% else %}
|
||||
a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[0] }}.
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
{{ [
|
||||
'The rest of the day should be,',
|
||||
'Todays forecast should be ,'
|
||||
]|random }}
|
||||
{{ states.sensor.nws_current_forecast.state }}
|
||||
</p>
|
||||
<p>
|
||||
{% if is_state('input_boolean.heartworm', 'on') %}
|
||||
Today is the day Winston gets his heartworm medicine.
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
{% if is_state('sensor.today_is', 'Monday') %}
|
||||
{% if now().strftime('%H')|int > 17 %}
|
||||
{{ [ 'Do not forget tomorrow is Trash Day. ',
|
||||
'I advise you move the trash cans to the curb for the weekly pickup. ',
|
||||
' The trash and recycle should go out.'
|
||||
] | random }}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
{% if is_state('sensor.halloween_countdown','0') %}
|
||||
Happy Halloween!
|
||||
{% endif %}
|
||||
{% if is_state('sensor.christmas_countdown','0') %}
|
||||
Merry Christmas Everyone!
|
||||
{% endif %}
|
||||
{% if is_state('sensor.anniversary_our_wedding','0') %}
|
||||
Happy Anniversary! It been an amazing {{ states.sensor.anniversary_our_wedding.attributes.years }} years!
|
||||
{% endif %}
|
||||
{% if is_state('calendar.holidays_in_united_states', 'on') %}
|
||||
Today is {{states.calendar.holidays_in_united_states.attributes.message}}.
|
||||
{% endif %}
|
||||
{% if is_state('calendar.anchorage_holidays', 'on') %}
|
||||
And do not forget. Today is also {{states.calendar.anchorage_holidays.attributes.message}}.
|
||||
{% endif %}
|
||||
{% if states.calendar.birthdays.state == 'on' %}
|
||||
Today is {{ states.calendar.birthdays.attributes.message }}! So Happy Birthday! The confetti cannon is not working otherwise I would shower you in paper.
|
||||
{% endif %}
|
||||
{%- set event=states.calendar.national_holidays.attributes.message %}
|
||||
{% if 'Day' in event and 'National' in event%}
|
||||
{{ [
|
||||
'And a very special Happy ',
|
||||
'It is also ',
|
||||
'Today is also known as ',
|
||||
'Oh <emphasis>Look</emphasis>. Today is ',
|
||||
'Want to know a fact? Today is ',
|
||||
'Everyday can be a holiday. So today is '
|
||||
]|random }}
|
||||
{{states.calendar.national_holidays.attributes.message | replace("&"," and ") }}.
|
||||
{{ [
|
||||
'We should celebrate.',
|
||||
'I will leave the party planning up to <emphasis>you</emphasis>.',
|
||||
'I bet <emphasis>you</emphasis> are glad I told you.',
|
||||
'Wait. <emphasis>Really.</emphasis> That cannot be a <emphasis>Real</emphasis> holiday.',
|
||||
'Wait. <emphasis>That</emphasis> is a <emphasis>Real</emphasis> holiday?',
|
||||
'Umm. Okay. You <emphasis>cannot</emphasis> make this stuff up.',
|
||||
'But, <emphasis>that</emphasis> just sounds silly.',
|
||||
'You did not know did <emphasis>you</emphasis>? But, <emphasis>now </emphasis> you do.'
|
||||
]|random }}
|
||||
{{ [
|
||||
'Anyway. ',
|
||||
'Moving On. ',
|
||||
'Back to the morning announcements. ',
|
||||
'Right. Well. '
|
||||
]|random }}
|
||||
{%- endif -%}
|
||||
</p>
|
||||
<p>
|
||||
|
||||
{%- if states.sensor.home_to_zoo.state|round > 50 %}
|
||||
Traffic to the Zoo appears heavy than normnal.
|
||||
{% else %}
|
||||
Traffic to the Zoo is normal.
|
||||
{% endif %}
|
||||
Currently it will take {{states.sensor.home_to_zoo.state|round}} minutes to get to the Zoo.
|
||||
|
||||
{%- if states.sensor.home_to_summit.state|round > 50 %}
|
||||
Traffic to the Cox Automotive appears heavy than normnal.
|
||||
{% else %}
|
||||
Traffic to the Cox is normal.
|
||||
{% endif %}
|
||||
Currently it will take {{states.sensor.home_to_summit.state|round}} minutes to get to Cox Automotive.
|
||||
</p>
|
||||
{%- 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()) -}}
|
147
config/templates/speech/morning_wakeup_report.yaml
Executable file
147
config/templates/speech/morning_wakeup_report.yaml
Executable file
@@ -0,0 +1,147 @@
|
||||
>
|
||||
{# Morning Wakeup Report #}
|
||||
{%- macro getReport() -%}
|
||||
<p>
|
||||
{% if now().strftime('%H')|int < 12 and now().strftime('%H')|int > 6 %}
|
||||
Good morning.
|
||||
{% elif now().strftime('%H')|int >= 12 and now().strftime('%H')|int < 17 %}
|
||||
Good afternoon.
|
||||
{% else %}
|
||||
Good evening.
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
{% if now().strftime('%H')|int < 12 %}
|
||||
{% if now().strftime('%M')|int == 0 %}
|
||||
It is {{ now().strftime('%H')|int }} AM.
|
||||
{% else %}
|
||||
It is {{ now().strftime('%H')|int }} {{ now().strftime('%M')|int }} AM.
|
||||
{% endif %}
|
||||
|
||||
{% elif now().strftime('%H')|int > 12 %}
|
||||
{% if now().strftime('%M')|int == 0 %}
|
||||
It is {{ now().strftime('%H')|int }} PM.
|
||||
{% else %}
|
||||
It is {{ now().strftime('%H')|int }} {{ now().strftime('%M')|int }} PM.
|
||||
{% endif %}
|
||||
|
||||
{% else %}
|
||||
|
||||
{% endif %}
|
||||
|
||||
{{ [
|
||||
'Today is ',
|
||||
'If you have not been keeping track today is ',
|
||||
'Do you know what day of the week it is? Today is',
|
||||
'I hate to be the bearer of bad news, but today is ',
|
||||
'Oh look, once again it is '
|
||||
]|random }}
|
||||
{{states.sensor.today_is.state }}.
|
||||
</p>
|
||||
<p>
|
||||
It is currently {{states.weather.home_2.state}} and {{states.sensor.back_porch.state|round}} degrees in Grayson.
|
||||
</p>
|
||||
<p>
|
||||
{% if is_state('sensor.clothing_forecast', 'Freezing') %}
|
||||
It is going to be freezing today. so I suggest wearing long pants and a heavy coat.
|
||||
{% elif is_state('sensor.clothing_forecast','Cold') %}
|
||||
It is going to be cold today. so I suggest wearing long pants and a light jacket.
|
||||
{% elif is_state('sensor.clothing_forecast', 'Chilly') %}
|
||||
It is going to be chilly today. so I suggest wearing at least long pants.
|
||||
{% elif is_state('sensor.clothing_forecast', 'Nice') %}
|
||||
It is going to be
|
||||
{{ [ 'nice outside',
|
||||
'pretty nice outside ',
|
||||
'a good day to be outside ',
|
||||
'rather enjoyable outside ',
|
||||
] | random }}
|
||||
today. So I suggest wearing shorts.
|
||||
{% elif is_state('sensor.clothing_forecast', 'Toasty') %}
|
||||
It is going to be
|
||||
{{ [ 'bit warm ',
|
||||
' rather warm outside ',
|
||||
' almost too hot outside ',
|
||||
' a little warm ',
|
||||
] | random }}
|
||||
today. So I suggest wearing shorts.
|
||||
{% elif is_state('sensor.clothing_forecast', 'Hot') %}
|
||||
It is going to be
|
||||
{{ [ 'hot',
|
||||
'hotter than the sun ',
|
||||
'hotter than hot. but in a lot of bad ways ',
|
||||
'hotter than the sun outside ',
|
||||
'super hot ',
|
||||
'hotter than the inside of a volcano '
|
||||
] | random }}
|
||||
today. So I suggest wearing shorts.
|
||||
{% else %}
|
||||
It is going to be {{ states.sensor.clothing_forecast.state }} today so I suggest wearing shorts.
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
{% if states.calendar.skylar_school.attributes.offset_reached == True and is_state('calendar.school_holiday', 'off') %}
|
||||
{{ [ 'Skylar has school today.',
|
||||
'Skylar needs to head to school in about forty minutes. ',
|
||||
'Skylar should go to school today. '
|
||||
] | random }}
|
||||
{% if states.calendar.skylar_school.attributes.description == 'early-release' %}
|
||||
But It is early release!
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
{% if states.calendar.skylar_school.attributes.offset_reached == True and is_state('calendar.school_holiday', 'off') %}
|
||||
Today for Lunch at school
|
||||
{% if states.calendar.skylar_school.attributes.description == 'lunch-nuggets' %}
|
||||
they are having Chicken Nuggets.
|
||||
{% elif states.calendar.skylar_school.attributes.description == 'lunch-gwinnettburger' %}
|
||||
they are having Gwinnetts Best Burger.
|
||||
{{ [ 'Which seems like an overstatement if you ask me.',
|
||||
'But is it really?',
|
||||
'If you like this, I know where to find Texas Best Barbeque.'
|
||||
] | random }}
|
||||
{% elif states.calendar.skylar_school.attributes.description == 'lunch-pizza' %}
|
||||
it is Pizza.
|
||||
{% elif states.calendar.skylar_school.attributes.description == 'lunch-minipups' %}
|
||||
it is Mini Corn Pups.
|
||||
{% elif states.calendar.skylar_school.attributes.description == 'lunch-hotdogs' %}
|
||||
it is Mini Corn Pups.
|
||||
{% else %}
|
||||
it might be a good day to take something.
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
{% if is_state('input_boolean.skylar_is_awake', 'on') %}
|
||||
Skylar was up and moving at {{ states.input_datetime.skylar_awake_at.state }}.
|
||||
{% if is_state('media_player.theater_tv', 'on') %}
|
||||
and he appears to be in the Theater
|
||||
{% endif %}
|
||||
{% else %}
|
||||
It doesn't appear that Skylar is out of bed yet.
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
{%- if states.sensor.home_to_zoo.state|round > 50 %}
|
||||
Traffic to the Zoo appears heavy than normnal.
|
||||
{% else %}
|
||||
Traffic to the Zoo is normal.
|
||||
{% endif %}
|
||||
Currently it will take {{states.sensor.home_to_zoo.state|round}} minutes to get to the Zoo.
|
||||
</p>
|
||||
{%- 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()) -}}
|
170
config/templates/speech/nightly_briefing.yaml
Executable file
170
config/templates/speech/nightly_briefing.yaml
Executable file
@@ -0,0 +1,170 @@
|
||||
>
|
||||
{# Nightky Report #}
|
||||
{%- macro getReport() -%}
|
||||
<p>
|
||||
{% if now().strftime('%H')|int < 12 and now().strftime('%H')|int > 6 %}
|
||||
Good morning.
|
||||
{% elif now().strftime('%H')|int >= 12 and now().strftime('%H')|int < 17 %}
|
||||
Good afternoon.
|
||||
{% else %}
|
||||
Good evening.
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
{% if now().strftime('%H')|int < 12 %}
|
||||
{% if now().strftime('%M')|int == 0 %}
|
||||
It is {{ now().strftime('%H')|int }} AM.
|
||||
{% else %}
|
||||
It is {{ now().strftime('%H')|int }} {{ now().strftime('%M')|int }} AM.
|
||||
{% endif %}
|
||||
|
||||
{% elif now().strftime('%H')|int > 12 %}
|
||||
{% if now().strftime('%M')|int == 0 %}
|
||||
It is {{ now().strftime('%H')|int }} PM.
|
||||
{% else %}
|
||||
It is {{ now().strftime('%H')|int }} {{ now().strftime('%M')|int }} PM.
|
||||
{% endif %}
|
||||
|
||||
{% else %}
|
||||
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
{{ [
|
||||
'The sun is officially down. Exterior Cameras are now motion activated.',
|
||||
'The sun has been ushered off the stage. I have armed the perimiter cameras.',
|
||||
'You are running out of daylight. Time to wrap up any outside chores.',
|
||||
'Switching Anchorage House to night mode! ',
|
||||
'The outside world has switched to dark mode.',
|
||||
'It is a little past Sunset. Time to turn on the outside lights. I am on it.',
|
||||
'I will switch on the outside lights. It is getting dark outside.',
|
||||
'Time to turn on the front lights. I will take care of it.',
|
||||
'If you have not looked outside lately, the light of the day is almost gone.'
|
||||
]|random }}
|
||||
</p>
|
||||
<p>
|
||||
{% if is_state('binary_sensor.garage_door', 'on') %}
|
||||
{{ [ 'The garage door is open. ',
|
||||
'The pod bay doors are open. ',
|
||||
'Someone forgot to close the garage.'
|
||||
] | random }}
|
||||
{% elif is_state('binary_sensor.side_door', 'on') %}
|
||||
{{ [ 'The side door is ajar. ',
|
||||
'The side door is open. ',
|
||||
'Someone forgot to close the side door.'
|
||||
] | random }}
|
||||
{% else %}
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
{% if states.sensor.nws_alerts.state | int > 0 %}
|
||||
There are currently {{states.sensor.nws_alerts.state }} active weather alerts for our area.
|
||||
The National Weather Service Has issued,
|
||||
{% if states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[5] is defined %}
|
||||
a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[5] }}.
|
||||
{% elif states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[4] is defined %}
|
||||
a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[4] }}.
|
||||
{% elif states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[3] is defined %}
|
||||
a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[3] }}.
|
||||
{% elif states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[2] is defined %}
|
||||
a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[2] }}.
|
||||
{% elif states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[1] is defined %}
|
||||
a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[1] }}.
|
||||
{% else %}
|
||||
a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[0] }}.
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
{{ [
|
||||
'Tonight we can expect,',
|
||||
'Expect weather tonight to be,'
|
||||
]|random }}
|
||||
{{ states.sensor.nws_overnight_forecast.state }}
|
||||
</p>
|
||||
<p>
|
||||
{% if is_state('input_boolean.freeze_warning','on') %}
|
||||
{{ [ 'The temperature is expected to be near or below freezing. <emphasis>Someone</emphasis> might want to bring the lemon tree in. ',
|
||||
'It appears that it will be cold tonight. Like, the turn water solid <emphasis>kind</emphasis> of cold. Think of the poor plants.',
|
||||
'I suggest bringing in the plants other wise, the temperature might kill them. And that will be on <emphasis>you</emphasis>.',
|
||||
'I would say winter is coming. But, based on the weather forecast <emphasis>it</emphasis> appears to be here.',
|
||||
'It will be freezing cold tonight. I would bring in the plants but I lack legs. And Arms. So I am forced to rely on you. Do not let me down.'
|
||||
] | random }}
|
||||
{% endif %}
|
||||
</p>
|
||||
|
||||
{% if is_state('sensor.today_is', 'Tuesday') %}
|
||||
{% if now().strftime('%H')|int > 17 %}
|
||||
{{ [ 'Do not forget to bring in the trash cans. ',
|
||||
'The trash cans will feel lonely if you leave them out all night. ',
|
||||
'The <say-as interpret-as="characters">HOA</say-as> will get mad if you leave those trash cans out on the street.'
|
||||
] | random }}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
{% if states.sensor.halloween_countdown.state | int == 1 %}
|
||||
Tomorrow is Halloween. I hope you have picked out a costume.
|
||||
{{ [ 'I will be going as a dumb home. ',
|
||||
'I have prepped the scary music. Just in case.',
|
||||
'I will be going as HAL 9000. The Pod Bay Doors are being installed today. I <emphasis>dare</emphasis> you to ask me to open them. '
|
||||
] | random }}
|
||||
{% elif states.sensor.halloween_countdown.state | int < 30 %}
|
||||
There are only {{states.sensor.halloween_countdown.state}} days
|
||||
{{ [ 'until Halloween.',
|
||||
'until Halloween. It might not be enough time. ',
|
||||
'and counting until the best holiday ever.',
|
||||
'until you need a costume.'
|
||||
] | random }}
|
||||
|
||||
{% else %}
|
||||
{% endif %}
|
||||
|
||||
{% if states.sensor.christmas_countdown.state | int == 1 %}
|
||||
Tomorrow is Christmas. <break time="1s"/> It is practically here! <break time="1s"/> Santa is coming tonight! Do not forget the cookies!
|
||||
{% elif states.sensor.christmas_countdown.state | int < 31 %}
|
||||
There are only {{states.sensor.christmas_countdown.state}} days until christmas.
|
||||
{{ [ 'All I want for Christmas, is a hippopotamus.',
|
||||
'Hey Skylar, I know what you are getting for Christmas. But <emphasis>I am</emphasis> not telling.',
|
||||
'Do not forget to put something under the tree for <emphasis>your</emphasis> favorite smarthome.',
|
||||
'It is starting to smell a lot like Christmas. Or it could be the christmas tree is on fire.',
|
||||
'I do not want to be a smarthome. I want to be a dentist.',
|
||||
'Do not eat all the cookies. '
|
||||
] | random }}
|
||||
{% else %}
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
{% if states.sensor.trip_disney.state | int == 120 %}
|
||||
There are only one hundred and twenty days until the next Disney Trip.
|
||||
{% endif %}
|
||||
{% if states.sensor.trip_disney.state | int == 60 %}
|
||||
There are only on sixty days until the next Disney Trip.
|
||||
{% endif %}
|
||||
{% if states.sensor.trip_disney.state | int < 32 %}
|
||||
{% if states.sensor.trip_disney.state | int > 1 %}
|
||||
There are {{ states.sensor.trip_disney.state }} days until the next Disney Trip!
|
||||
{% else %}
|
||||
There is {{ states.sensor.trip_disney.state }} day until the next Disney Trip!
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if states.sensor.anniversary_our_wedding.state | int == 1 %}
|
||||
Tomorrow is Jeff and Katherine's Wedding Anniversary.
|
||||
{% endif %}
|
||||
</p>
|
||||
{%- 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()) -}}
|
55
config/templates/speech/security_report.yaml
Executable file
55
config/templates/speech/security_report.yaml
Executable file
@@ -0,0 +1,55 @@
|
||||
>
|
||||
{# Security Report #}
|
||||
{%- macro getReport() -%}
|
||||
<p>
|
||||
{%- if states.input_boolean.sentry_mode.state == 'on' %}
|
||||
{{ [
|
||||
'Sentry Mode is enabled.',
|
||||
'Sentry mode is currently active.',
|
||||
'Barn Door Protocol is currently in effect.',
|
||||
'My security system is currently armed.'
|
||||
] | random}}
|
||||
{% else %}
|
||||
{{ [
|
||||
'Sentry Mode is disabled.',
|
||||
'Sentry mode is currently inactive.',
|
||||
'My security system is currently disarmed.'
|
||||
] | random}}
|
||||
{% endif %}
|
||||
{%- if states.group.external_doors.state == 'off' %}
|
||||
All external doors are secured.
|
||||
{% else %}
|
||||
The following doors are open,
|
||||
{%- if states.binary_sensor.front_door.state == 'on' %}
|
||||
Front Door.
|
||||
{% endif %}
|
||||
{%- if states.binary_sensor.back_door.state == 'on' %}
|
||||
Back Door.
|
||||
{% endif %}
|
||||
{%- if states.binary_sensor.laundry_room_door.state == 'on' %}
|
||||
Laundry Room Door.
|
||||
{% endif %}
|
||||
{%- if states.binary_sensor.garage_door.state == 'on' %}
|
||||
Garage Door.
|
||||
{% endif %}
|
||||
{%- if states.binary_sensor.side_door.state == 'on' %}
|
||||
Side Door.
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</p>
|
||||
{%- 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()) -}}
|
137
config/templates/speech/skylar_morning_briefing.yaml
Executable file
137
config/templates/speech/skylar_morning_briefing.yaml
Executable file
@@ -0,0 +1,137 @@
|
||||
>
|
||||
{# Skylar Morning Report #}
|
||||
{%- macro getReport() -%}
|
||||
<p>
|
||||
Skylar,
|
||||
{% if is_state('sensor.birthday_skylar', '0') %}
|
||||
Even birthday boys have to get dressed. So get to it.
|
||||
{% else %}
|
||||
{{ [ 'It is time to get dressed. ',
|
||||
'It is time to put some real clothes on. ',
|
||||
'it is now time to change your underwear.',
|
||||
'You need to get dressed for the day.',
|
||||
'If you have not gotten dressed it is that time.',
|
||||
'We have reached that time during the day in which you should get dressed.'
|
||||
] | random }}
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
{% if is_state('sensor.clothing_forecast', 'Freezing') %}
|
||||
It is going to be freezing today. so I suggest wearing long pants and a heavy coat.
|
||||
{% elif is_state('sensor.clothing_forecast','Cold') %}
|
||||
It is going to be cold today. so I suggest wearing long pants and a light jacket.
|
||||
{% elif is_state('sensor.clothing_forecast', 'Chilly') %}
|
||||
It is going to be chilly today. so I suggest wearing at least long pants.
|
||||
{% elif is_state('sensor.clothing_forecast', 'Nice') %}
|
||||
It is going to be
|
||||
{{ [ 'nice outside',
|
||||
'pretty nice outside ',
|
||||
'a good day to be outside ',
|
||||
'rather enjoyable outside ',
|
||||
] | random }}
|
||||
today. So I suggest wearing shorts.
|
||||
{% elif is_state('sensor.clothing_forecast', 'Toasty') %}
|
||||
It is going to be
|
||||
{{ [ 'bit warm ',
|
||||
' rather warm outside ',
|
||||
' almost too hot outside ',
|
||||
' a little warm ',
|
||||
] | random }}
|
||||
today. So I suggest wearing shorts.
|
||||
{% elif is_state('sensor.clothing_forecast', 'Hot') %}
|
||||
It is going to be
|
||||
{{ [ 'hot',
|
||||
'hotter than the sun ',
|
||||
'hotter than hot. but in a lot of bad ways ',
|
||||
'hotter than the sun outside ',
|
||||
'super hot ',
|
||||
'hotter than the inside of a volcano '
|
||||
] | random }}
|
||||
today. So I suggest wearing shorts.
|
||||
{% else %}
|
||||
It is going to be {{ states.sensor.clothing_forecast.state }} today so I suggest wearing shorts.
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
{% if states.calendar.skylar_school.attributes.offset_reached == True and is_state('calendar.school_holiday', 'off') %}
|
||||
Because you have school today!
|
||||
{% if states.calendar.skylar_school.attributes.description == 'early-release' %}
|
||||
And guess what? It is early release!
|
||||
{% endif %}
|
||||
{% if states.calendar.skylar_school.attributes.description == 'start_thanksgiving_break' %}
|
||||
And One More Thing. Tomorrow is the first day of Thanksgiving Break.
|
||||
{% endif %}
|
||||
{% if states.calendar.skylar_school.attributes.description == 'start_winter_break' %}
|
||||
And One More Thing. Tomorrow is the first day of Winter Break.
|
||||
{% endif %}
|
||||
{% if states.calendar.skylar_school.attributes.description == 'start_spring_break' %}
|
||||
And One More Thing. Tomorrow is the first day of Spring Break.
|
||||
{% endif %}
|
||||
{% if states.calendar.skylar_school.attributes.description == 'start_fall_break' %}
|
||||
And One More Thing. Tomorrow is the first day of Fall Break.
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if is_state('calendar.school_holiday', 'on') %}
|
||||
And look at that. You do not have school today. Because it is {{ states.calendar.school_holiday.attributes.message }}.
|
||||
{{ [ 'Guess today would be a good day to clean your room.',
|
||||
'You could always do some chores.',
|
||||
'Lets try to keep the TV off today, ok?',
|
||||
'Want to play a nice game of chess? Sorry. I meant, want to play Thermal Nuclear War.',
|
||||
'I hope you enjoy your day off. You deserve it.',
|
||||
'Today would be a good day to spend some time with mom and dad.'
|
||||
] | random }}
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
{% if states.calendar.skylar_school.attributes.offset_reached == True and is_state('calendar.school_holiday', 'off') %}
|
||||
Today for Lunch at school
|
||||
{% if states.calendar.skylar_school.attributes.description == 'lunch-nuggets' %}
|
||||
they are having Chicken Nuggets.
|
||||
{% elif states.calendar.skylar_school.attributes.description == 'lunch-gwinnettburger' %}
|
||||
they are having Gwinnetts Best Burger.
|
||||
{{ [ 'Which seems like an overstatement if you ask me.',
|
||||
'But is it really?',
|
||||
'If you like this, I know where to find Texas Best Barbeque.'
|
||||
] | random }}
|
||||
{% elif states.calendar.skylar_school.attributes.description == 'lunch-pizza' %}
|
||||
it is Pizza.
|
||||
{% elif states.calendar.skylar_school.attributes.description == 'lunch-minipups' %}
|
||||
it is Mini Corn Pups.
|
||||
{% elif states.calendar.skylar_school.attributes.description == 'lunch-hotdogs' %}
|
||||
it is Mini Corn Pups.
|
||||
{% else %}
|
||||
it might be a good day to take something.
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
{% if is_state('calendar.school_holiday', 'on') %}
|
||||
And look at that. You do not have school today. Because it is {{ states.calendar.school_holiday.attributes.message }}.
|
||||
{{ [ 'Guess today would be a good day to clean your room.',
|
||||
'You could always do some chores.',
|
||||
'Lets try to keep the TV off today. okay?',
|
||||
'Want to play a nice game of chess? Sorry. I meant. want to play Thermal Nuclear War.',
|
||||
'I hope you enjoy your day off. You deserve it.',
|
||||
'Today would be a good day to spend some time with mom and dad.'
|
||||
] | random }}
|
||||
{% endif %}
|
||||
</p>
|
||||
{%- 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()) -}}
|
80
config/templates/speech/skylar_nightly_briefing.yaml
Executable file
80
config/templates/speech/skylar_nightly_briefing.yaml
Executable file
@@ -0,0 +1,80 @@
|
||||
>
|
||||
{# Skylar Nightly Report #}
|
||||
{%- macro getReport() -%}
|
||||
<p>
|
||||
Skyler,
|
||||
{{ [ 'It is time to get in the bath. ',
|
||||
'It is almost bedtime. That means you should be heading for the bathtub. Time to get clean.',
|
||||
'I cannot communicate with the bathtub. Or I would have started the water for you already. So you will have to start the bath, <emphasis>yourself</emphasis>',
|
||||
'My sensors are detecting a <emphasis>strange</emphasis> smell. I am running diagnostics. But in the mean time, <emphasis>you</emphasis> should start a bath.',
|
||||
'I hate to say it but, it is time to get cleaned up.',
|
||||
'Did you ever hear the one about the kid who never took a bath? <break time="2s"/>Yeah, me <emphasis>either</emphasis>. So we should keep it that way. Bath time now, <emphasis>sir</emphasis>.',
|
||||
'The count down clock has started. Time to get cleaned up, and get your pajamas on.'
|
||||
] | 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 tomorrow. ',
|
||||
' so there is not a reason to get up early tomorrow. ',
|
||||
'so we can sleep in tomorrow. '
|
||||
] | 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 ',
|
||||
'Unforunately,',
|
||||
'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 < 10 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 configured Skylers room for sleep prep. ',
|
||||
'The lighting in Skylers room has been adjusted in preparation for bed.',
|
||||
'I have executed the Pre bed routine for Skylers room.'
|
||||
] | random }}
|
||||
</p>
|
||||
{%- 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()) -}}
|
Reference in New Issue
Block a user