From aca880a378d28a4ebbd8598023e07a036e2a6939 Mon Sep 17 00:00:00 2001
From: Jeffrey Stone
Date: Sun, 6 Mar 2022 18:35:23 -0500
Subject: [PATCH] Redoing how Ha handles the forecast so I can use Pirate
Weather instead of NWS
---
config/packages/weather.yaml | 702 +++++++++++++++---
.../speech/morning_wakeup_report.yaml | 76 +-
2 files changed, 585 insertions(+), 193 deletions(-)
diff --git a/config/packages/weather.yaml b/config/packages/weather.yaml
index 70d8147..13ede42 100755
--- a/config/packages/weather.yaml
+++ b/config/packages/weather.yaml
@@ -108,138 +108,542 @@ sensor:
unit_of_measurement: ''
icon_template: mdi:weather-sunny
value_template: >-
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[0] %}
+ {% set forecast = state_attr('weather.anchorage_house','forecast')[0] %}
{{ forecast.condition }}
attribute_templates:
high_temp: >-
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[0] %}
+ {% set forecast = state_attr('weather.anchorage_house','forecast')[0] %}
{{ forecast.temperature }}
+ overnight_low: >-
+ {% set forecast = state_attr('weather.anchorage_house','forecast')[1] %}
+ {{ forecast.templow }}
wind_bearing: >-
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[0] %}
+ {% set forecast = state_attr('weather.anchorage_house','forecast')[0] %}
{{ forecast.wind_bearing }}
wind_speed: >-
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[0] %}
+ {% set forecast = state_attr('weather.anchorage_house','forecast')[0] %}
{{ forecast.wind_speed }}
- precipitation_probability: >-
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[0] %}
- {{ forecast.precipitation_probability }}
- description: >
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[0] %}
- {{ forecast.detailed_description | truncate(250, False) }}
- overnight_forecast:
- friendly_name: Overnight Forecast
+ precipitation: >-
+ {% set forecast = state_attr('weather.anchorage_house','forecast')[0] %}
+ {{ forecast.precipitation }}
+ current_forecast_detail:
+ friendly_name: Current Forecast Detail
unit_of_measurement: ''
icon_template: mdi:weather-sunny
value_template: >-
- {% if is_state('binary_sensor.overnight', 'on') %}
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[0] %}
- {% else %}
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[1] %}
- {% endif %}
- {{ forecast.condition }}
- attribute_templates:
- low_temp: >-
- {% if is_state('binary_sensor.overnight', 'on') %}
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[0] %}
- {% else %}
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[1] %}
- {% endif %}
- {{ forecast.temperature }}
- wind_bearing: >-
- {% if is_state('binary_sensor.overnight', 'on') %}
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[0] %}
- {% else %}
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[1] %}
- {% endif %}
- {{ forecast.wind_bearing }}
- wind_speed: >-
- {% if is_state('binary_sensor.overnight', 'on') %}
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[0] %}
- {% else %}
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[1] %}
- {% endif %}
- {{ forecast.wind_speed }}
- precipitation_probability: >-
- {% if is_state('binary_sensor.overnight', 'on') %}
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[0] %}
- {% else %}
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[1] %}
- {% endif %}
- {{ forecast.precipitation_probability }}
- description: >-
- {% if is_state('binary_sensor.overnight', 'on') %}
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[0] %}
- {% else %}
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[1] %}
- {% endif %}
- {{ forecast.detailed_description | truncate(250, False) }}
+ {%- macro getReport() -%}
+ {{ [
+ 'Today in Grayson ',
+ 'Later Today ',
+ 'For the rest of the day'
+ ] | random }}
+ expect a high of {{ state_attr('sensor.current_forecast','high_temp') }}
+ {%- if states('sensor.current_forecast') == 'sunny' and is_state('binary_sensor.night','off')%}
+ {{ [
+ 'and sunny.',
+ 'with sun.',
+ 'with sunny conditions prevailing.'
+ ] | random }}
+ {%- elif states('sensor.current_forecast') == 'sunny' and is_state('binary_sensor.night','on') %}
+ {{ [
+ 'and clear.',
+ 'with clear skies.'
+ ] | random }}
+ {%- elif states('sensor.current_forecast') == 'clear-night' %}
+ {{ [
+ 'and clear.',
+ 'with clear skies.'
+ ] | random }}
+ {%- elif states('sensor.current_forecast') == 'rainy' %}
+ {{ [
+ 'with rain.',
+ 'with showers.',
+ 'and rainy.'
+ ] | random }}
+ {{ [
+ 'Rainfall accumulations ',
+ 'Total Rainfall amounts '
+ ] | random }}
+ near {{ state_attr('sensor.current_forecast','precipitation') }} inches
+ possible.
+ {%- elif states('sensor.current_forecast') == 'snowy' %}
+ {{ [
+ 'with snow.',
+ 'with snow showers.'
+ ] | random }}
+ {{ [
+ 'Snowfall accumulations ',
+ 'Total snowfall amounts '
+ ] | random }}
+ near {{ state_attr('sensor.current_forecast','precipitation') }} inches
+ possible.
+ {%- elif states('sensor.current_forecast') == 'snowy-rainy' %}
+ {{ [
+ 'with mix preciptation possible.',
+ 'with snow and rain showers.'
+ ] | random }}
+ Total accumulation near {{ state_attr('sensor.current_forecast','precipitation') }} inches
+ possible.
+ {%- elif states('sensor.current_forecast') == 'windy' %}
+ {{ [
+ 'and windy.',
+ 'with lots of wind.'
+ ] | random }}
+ {%- elif states('sensor.current_forecast') == 'fog' %}
+ {{ [
+ 'and foggy.',
+ 'with some fog.'
+ ] | random }}
+ {% elif states('sensor.current_forecast') == 'cloudy' %}
+ {{ [
+ 'with clouds.',
+ 'with cloudy skies.'
+ ] | random }}
+ {% elif states('sensor.current_forecast') == 'partlycloudy' %}
+ {{ [
+ 'with some clouds.',
+ 'with partly cloudy skies.',
+ 'with scattered clouds'
+ ] | random }}
+ {%- elif states('sensor.current_forecast') == 'hail' %}
+ {{ [
+ 'with severve thunderstorms possible.',
+ 'with hail possible.'
+ ] | random }}
+ {{ [
+ 'Rainfall accumulations ',
+ 'Total Rainfall amounts '
+ ] | random }}
+ near {{ state_attr('sensor.current_forecast','precipitation') }} inches
+ possible.
+ {%- elif states('sensor.current_forecast') == 'lightning' %}
+ {{ [
+ 'with thunderstorms possible.',
+ 'with the potential of thunderstorms.'
+ ] | random }}
+ {{ [
+ 'Rainfall accumulations ',
+ 'Total Rainfall amounts '
+ ] | random }}
+ near {{ state_attr('sensor.current_forecast','precipitation') }} inches
+ possible.
+ {% endif -%}
+
+ {{ [
+ 'Later tonight expect a low of ',
+ 'Overnight expect a low of '
+ ] | random }}
+ {{ state_attr('sensor.current_forecast','overnight_low') }} degrees.
+ {%- 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()) -}}
tomorrow_forecast:
friendly_name: Tomorrows Forecast
unit_of_measurement: ''
icon_template: mdi:weather-sunny
value_template: >-
- {% if is_state('binary_sensor.overnight', 'on') %}
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[1] %}
- {% else %}
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[2] %}
- {% endif %}
+ {% set forecast = state_attr('weather.anchorage_house','forecast')[1] %}
{{ forecast.condition }}
attribute_templates:
high_temp: >-
- {% if is_state('binary_sensor.overnight', 'on') %}
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[1] %}
- {% else %}
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[2] %}
- {% endif %}
+ {% set forecast = state_attr('weather.anchorage_house','forecast')[1] %}
{{ forecast.temperature }}
+ overnight_low: >-
+ {% set forecast = state_attr('weather.anchorage_house','forecast')[2] %}
+ {{ forecast.templow }}
wind_bearing: >-
- {% if is_state('binary_sensor.overnight', 'on') %}
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[1] %}
- {% else %}
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[2] %}
- {% endif %}
+ {% set forecast = state_attr('weather.anchorage_house','forecast')[1] %}
{{ forecast.wind_bearing }}
wind_speed: >-
- {% if is_state('binary_sensor.overnight', 'on') %}
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[1] %}
- {% else %}
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[2] %}
- {% endif %}
+ {% set forecast = state_attr('weather.anchorage_house','forecast')[1] %}
{{ forecast.wind_speed }}
- precipitation_probability: >-
- {% if is_state('binary_sensor.overnight', 'on') %}
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[1] %}
+ precipitation: >-
+ {% set forecast = state_attr('weather.anchorage_house','forecast')[1] %}
+ {{ forecast.precipitation }}
+ tomorrow_forecast_detail:
+ friendly_name: Tomorrow Forecast Detail
+ unit_of_measurement: ''
+ icon_template: mdi:weather-sunny
+ value_template: >-
+ {%- macro getReport() -%}
+ {{ [
+ 'Tomorrow in Grayson ',
+ 'For the next day ',
+ 'Tomorrow '
+ ] | random }}
+ expect a high of {{ state_attr('sensor.tomorrow_forecast','high_temp') }}
+ {%- if states('sensor.tomorrow_forecast') == 'sunny' %}
+ {{ [
+ 'and sunny.',
+ 'with sun.',
+ 'with sunny conditions prevailing.'
+ ] | random }}
+ {%- elif states('sensor.tomorrow_forecast') == 'rainy' %}
+ {{ [
+ 'with rain.',
+ 'with showers.',
+ 'and rainy.'
+ ] | random }}
+ {{ [
+ 'Rainfall accumulations ',
+ 'Total Rainfall amounts '
+ ] | random }}
+ near {{ state_attr('sensor.tomorrow_forecast','precipitation') }} inches
+ possible.
+ {%- elif states('sensor.tomorrow_forecast') == 'snowy' %}
+ {{ [
+ 'with snow.',
+ 'with snow showers.'
+ ] | random }}
+ {{ [
+ 'Snowfall accumulations ',
+ 'Total snowfall amounts '
+ ] | random }}
+ near {{ state_attr('sensor.tomorrow_forecast','precipitation') }} inches
+ possible.
+ {%- elif states('sensor.tomorrow_forecast') == 'snowy-rainy' %}
+ {{ [
+ 'with mix preciptation possible.',
+ 'with snow and rain showers.'
+ ] | random }}
+ Total accumulation near {{ state_attr('sensor.tomorrow_forecast','precipitation') }} inches
+ possible.
+ {%- elif states('sensor.tomorrow_forecast') == 'windy' %}
+ {{ [
+ 'and windy.',
+ 'with lots of wind.'
+ ] | random }}
+ {%- elif states('sensor.current_forecast') == 'fog' %}
+ {{ [
+ 'and foggy.',
+ 'with some fog.'
+ ] | random }}
+ {% elif states('sensor.tomorrow_forecast') == 'cloudy' %}
+ {{ [
+ 'with clouds.',
+ 'with cloudy skies.'
+ ] | random }}
+ {% elif states('sensor.tomorrow_forecast') == 'partlycloudy' %}
+ {{ [
+ 'with some clouds.',
+ 'with partly cloudy skies.',
+ 'with scattered clouds'
+ ] | random }}
+ {%- elif states('sensor.tomorrow_forecast') == 'hail' %}
+ {{ [
+ 'with severve thunderstorms possible.',
+ 'with hail possible.'
+ ] | random }}
+ {{ [
+ 'Rainfall accumulations ',
+ 'Total Rainfall amounts '
+ ] | random }}
+ near {{ state_attr('sensor.current_forecast','precipitation') }} inches
+ possible.
+ {%- elif states('sensor.current_forecast') == 'lightning' %}
+ {{ [
+ 'with thunderstorms possible.',
+ 'with the potential of thunderstorms.'
+ ] | random }}
+ {{ [
+ 'Rainfall accumulations ',
+ 'Total Rainfall amounts '
+ ] | random }}
+ near {{ state_attr('sensor.current_forecast','precipitation') }} inches
+ possible.
+ {% endif -%}
+
+ {{ [
+ ' Tomorrow night expect a low of '
+ ] | random }}
+ {{ state_attr('sensor.tomorrow_forecast','overnight_low') }} degrees.
+ {%- 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()) -}}
+ current_conditions:
+ friendly_name: Current Conditions
+ unit_of_measurement: ''
+ icon_template: mdi:weather-sunny
+ value_template: >-
+ {%- macro getReport() -%}
+ The Weather in Grayson
+ {{ [
+ ' is ',
+ ' is currently '
+ ] | random }}
+ {{states('sensor.acurite_6045m_3078_f')|round}} degrees
+ {% if is_state('weather.home', 'rainy') %}
+ {{ [
+ 'with rain.',
+ 'with showers.'
+ ] | random }}
+ {% elif is_state('weather.home', 'cloudy') %}
+ {{ [
+ 'with clouds.',
+ 'with cloudy skies.'
+ ] | random }}
+ {% elif is_state('weather.home', 'partlycloudy') %}
+ {{ [
+ 'with some clouds.',
+ 'with partly cloudy skies.',
+ 'with scatterd clouds'
+ ] | random }}
+ {% elif is_state('weather.home', 'sunny') %}
+ {% if is_state('sun.sun', 'above_horizon') %}
+ {{ [
+ 'and sunny.',
+ 'with sun.'
+ ] | random }}
+ {% else %}
+ {{ [
+ 'and clear.',
+ 'with clear skies.'
+ ] | random }}
+ {% endif %}
{% else %}
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[2] %}
+ and {{ states.weather.home.state }}
{% endif %}
- {{ forecast.precipitation_probability }}
- description: >-
- {% if is_state('binary_sensor.overnight', 'on') %}
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[1] %}
+ {%- 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()) -}}
+ current_conditions_detail:
+ friendly_name: Current Conditions Detail
+ unit_of_measurement: ''
+ icon_template: mdi:weather-sunny
+ value_template: >-
+ {%- macro getReport() -%}
+ The Weather in Grayson
+ {{ [
+ ' is ',
+ ' is currently '
+ ] | random }}
+ {{states('sensor.acurite_6045m_3078_f')|round}} degrees
+ {% if is_state('weather.home', 'rainy') %}
+ {{ [
+ 'with rain.',
+ 'with showers.'
+ ] | random }}
+ {% elif is_state('weather.home', 'cloudy') %}
+ {{ [
+ 'with clouds.',
+ 'with cloudy skies.'
+ ] | random }}
+ {% elif is_state('weather.home', 'partlycloudy') %}
+ {{ [
+ 'with some clouds.',
+ 'with partly cloudy skies.',
+ 'with scatterd clouds'
+ ] | random }}
+ {% elif is_state('weather.home', 'sunny') %}
+ {% if is_state('sun.sun', 'above_horizon') %}
+ {{ [
+ 'and sunny.',
+ 'with sun.'
+ ] | random }}
+ {% else %}
+ {{ [
+ 'and clear.',
+ 'with clear skies.'
+ ] | random }}
+ {% endif %}
{% else %}
- {% set forecast = state_attr('weather.klzu_daynight','forecast')[2] %}
+ and {{ states.weather.home.state }}
{% endif %}
- {{ forecast.detailed_description | truncate(250, False) }}
+ {%- if is_state('binary_sensor.night','off')%}
+ {{ [
+ 'Later Today ',
+ 'For the rest of the day'
+ ] | random }}
+ expect a high of {{ state_attr('sensor.current_forecast','high_temp') }}
+ {%- if states('sensor.current_forecast') == 'sunny' and is_state('binary_sensor.night','off')%}
+ {{ [
+ 'and sunny.',
+ 'with sun.',
+ 'with sunny conditions prevailing.'
+ ] | random }}
+ {%- elif states('sensor.current_forecast') == 'sunny' and is_state('binary_sensor.night','on') %}
+ {{ [
+ 'and clear.',
+ 'with clear skies.'
+ ] | random }}
+ {%- elif states('sensor.current_forecast') == 'clear-night' %}
+ {{ [
+ 'and clear.',
+ 'with clear skies.'
+ ] | random }}
+ {%- elif states('sensor.current_forecast') == 'rainy' %}
+ {{ [
+ 'with rain.',
+ 'with showers.',
+ 'and rainy.'
+ ] | random }}
+ {{ [
+ 'Rainfall accumulations ',
+ 'Total Rainfall amounts '
+ ] | random }}
+ near {{ state_attr('sensor.current_forecast','precipitation') }} inches
+ possible.
+ {%- elif states('sensor.current_forecast') == 'snowy' %}
+ {{ [
+ 'with snow.',
+ 'with snow showers.'
+ ] | random }}
+ {{ [
+ 'Snowfall accumulations ',
+ 'Total snowfall amounts '
+ ] | random }}
+ near {{ state_attr('sensor.current_forecast','precipitation') }} inches
+ possible.
+ {%- elif states('sensor.current_forecast') == 'snowy-rainy' %}
+ {{ [
+ 'with mix preciptation possible.',
+ 'with snow and rain showers.'
+ ] | random }}
+ Total accumulation near {{ state_attr('sensor.current_forecast','precipitation') }} inches
+ possible.
+ {%- elif states('sensor.current_forecast') == 'windy' %}
+ {{ [
+ 'and windy.',
+ 'with lots of wind.'
+ ] | random }}
+ {%- elif states('sensor.current_forecast') == 'fog' %}
+ {{ [
+ 'and foggy.',
+ 'with some fog.'
+ ] | random }}
+ {% elif states('sensor.current_forecast') == 'cloudy' %}
+ {{ [
+ 'with clouds.',
+ 'with cloudy skies.'
+ ] | random }}
+ {% elif states('sensor.current_forecast') == 'partlycloudy' %}
+ {{ [
+ 'with some clouds.',
+ 'with partly cloudy skies.',
+ 'with scattered clouds'
+ ] | random }}
+ {%- elif states('sensor.current_forecast') == 'hail' %}
+ {{ [
+ 'with severve thunderstorms possible.',
+ 'with hail possible.'
+ ] | random }}
+ {{ [
+ 'Rainfall accumulations ',
+ 'Total Rainfall amounts '
+ ] | random }}
+ near {{ state_attr('sensor.current_forecast','precipitation') }} inches
+ possible.
+ {%- elif states('sensor.current_forecast') == 'lightning' %}
+ {{ [
+ 'with thunderstorms possible.',
+ 'with the potential of thunderstorms.'
+ ] | random }}
+ {{ [
+ 'Rainfall accumulations ',
+ 'Total Rainfall amounts '
+ ] | random }}
+ near {{ state_attr('sensor.current_forecast','precipitation') }} inches
+ possible.
+ {% endif -%}
+
+ {{ [
+ 'Later tonight expect a low of ',
+ 'Overnight expect a low of '
+ ] | random }}
+ {{ state_attr('sensor.current_forecast','overnight_low') }} degrees.
+ {%- else -%}
+ {{ [
+ 'Tonight expect a low of ',
+ 'Overnight expect a low of '
+ ] | random }}
+ {{ state_attr('sensor.current_forecast','overnight_low') }} degrees.
+ {% endif %}
+ {%- 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()) -}}
outside_pressure:
friendly_name: 'outisde pressure'
value_template: '{{ state_attr(''weather.home'',''pressure'') }}'
unit_of_measurement: ''
+ todays_high_temp:
+ friendly_name: "Today's High Temp"
+ unit_of_measurement: ''
+ device_class: temperature
+ value_template: >-
+ {% set forecast = state_attr('weather.anchorage_house','forecast')[0] %}
+ {{ forecast.temperature }}
+ tonights_low_temp:
+ friendly_name: "Tonight's Low Temp"
+ unit_of_measurement: ''
+ device_class: temperature
+ value_template: >-
+ {% set forecast = state_attr('weather.anchorage_house','forecast')[1] %}
+ {{ forecast.lowtemp }}
clothing_forecast:
friendly_name: "Clothing Forecast"
unit_of_measurement: ''
value_template: >-
- {%- if state_attr('sensor.current_forecast', 'high_temp')|int > 63 %}
- {%- if state_attr('sensor.current_forecast', 'high_temp')|int < 80 %}
+ {% if is_state('binary_sensor.overnight', 'off') %}
+ {% set temp = states('sensor.todays_high_temp')|int %}
+ {% else %}
+ {% set temp = states('sensor.acurite_6045m_3078_f')|round %}
+ {% endif %}
+ {%- if states('sensor.todays_high_temp')|int > 63 %}
+ {%- if states('sensor.todays_high_temp')|int < 80 %}
Nice
- {% elif state_attr('sensor.current_forecast', 'high_temp')|int > 95 %}
+ {% elif states('sensor.todays_high_temp')|int > 95 %}
Hot
{% else %}
Toasty
{%- endif %}
- {% elif state_attr('sensor.current_forecast', 'high_temp')|int < 64 %}
- {%- if state_attr('sensor.current_forecast', 'high_temp')|int < 32 %}
+ {% elif states('sensor.todays_high_temp')|int < 64 %}
+ {%- if states('sensor.todays_high_temp')|int < 32 %}
Freezing
- {% elif state_attr('sensor.current_forecast', 'high_temp')|int > 50 %}
+ {% elif states('sensor.todays_high_temp')|int > 50 %}
Chilly
{% else %}
Cold
@@ -247,36 +651,90 @@ sensor:
{% else %}
Unknown
{%- endif %}
- nws_current_forecast:
- friendly_name: 'Current Detailed Forecast'
- value_template: "{{ state_attr('sensor.current_forecast', 'description')}}"
- nws_current_rain_forecast:
- friendly_name: 'Current Rain Chance'
- value_template: "{{ state_attr('sensor.current_forecast', 'precipitation_probability')}}"
- unit_of_measurement: '%'
- nws_current_temperature:
- friendly_name: 'Current Temperature'
- value_template: "{{ state_attr('weather.klzu_daynight','temperature') }}"
- device_class: temperature
- nws_current_condition:
- friendly_name: 'Current Condition'
- value_template: "{{ states('weather.klzu_daynight') }}"
- nws_current_humidity:
- friendly_name: 'Current Humidity'
- value_template: "{{ state_attr('weather.klzu_daynight','humidity') }}"
- nws_current_visibility:
- friendly_name: "Current Visability"
- value_template: "{{ state_attr('weather.klzu_daynight','visibility') }}"
- nws_current_windspeed:
- friendly_name: "Current Windspeed"
- value_template: "{{ state_attr('weather.klzu_daynight','wind_speed') }}"
- nws_overnight_low:
- friendly_name: "Overnight Low"
+ clothing_forecast_detail:
+ friendly_name: "Clothing Forecast Detail"
unit_of_measurement: ''
value_template: >-
- {{ state_attr('sensor.overnight_forecast', 'low_temp')}}
+ {% if is_state('binary_sensor.morning','on') %}
+ Based on the forecasted high temperature,
+ {% 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 }}
+ 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 %}
+ {% else %}
+ Based on the current temperature,
+ {% if is_state('sensor.clothing_forecast', 'Freezing') %}
+ It is freezing. so I suggest wearing long pants and a heavy coat if you are going out.
+ {% elif is_state('sensor.clothing_forecast','Cold') %}
+ It is cold outside. so I suggest wearing long pants and a light jacket.
+ {% elif is_state('sensor.clothing_forecast', 'Chilly') %}
+ It is chilly right now. so I suggest wearing at least long pants
+ if you are going to venture outside.
+ {% elif is_state('sensor.clothing_forecast', 'Nice') %}
+ It is
+ {{ [ 'nice outside. ',
+ 'pretty nice outside. ',
+ 'a good day to be outside. ',
+ 'rather enjoyable outside. ',
+ ] | random }}
+ So I suggest wearing shorts.
+ {% elif is_state('sensor.clothing_forecast', 'Toasty') %}
+ It is
+ {{ [ 'bit warm ',
+ ' rather warm outside ',
+ ' almost too hot outside ',
+ ' a little warm ',
+ ] | random }}
+ outside. So I suggest wearing shorts.
+ {% elif is_state('sensor.clothing_forecast', 'Hot') %}
+ It is
+ {{ [ '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 }}
+ outside. So I suggest wearing shorts.
+ {% else %}
+ It is {{ states.sensor.clothing_forecast.state }} right now so I suggest wearing shorts.
+ {% endif %}
+ {% endif %}
+ nws_current_visibility:
+ friendly_name: "Current Visability"
+ value_template: "{{ ((state_attr('weather.anchorage_house','visibility') | int) * 0.621371) | round }}"
-
current_inside_humidity:
friendly_name: "Current Inside Humidity"
unit_of_measurement: '%'
@@ -301,8 +759,6 @@ sensor:
automation:
-
-
- alias: 'record previous day rainfall'
trigger:
- platform: time
@@ -317,10 +773,10 @@ automation:
- alias: Forecast Low Near Freezing
trigger:
- platform: numeric_state
- entity_id: sensor.nws_overnight_low
+ entity_id: sensor.tonights_low_temp
below: 35
- platform: numeric_state
- entity_id: sensor.nws_current_temperature
+ entity_id: sensor.pirateweather_temperature
below: 35
condition:
- condition: state
@@ -333,14 +789,14 @@ automation:
- alias: Forecast Low Above Freezing
trigger:
- platform: numeric_state
- entity_id: sensor.nws_overnight_low
+ entity_id: sensor.tonights_low_temp
above: 33
condition:
- condition: state
entity_id: input_boolean.freeze_warning
state: 'on'
- condition: numeric_state
- entity_id: sensor.nws_overnight_low
+ entity_id: sensor.tonights_low_temp
above: 35
action:
- service: input_boolean.turn_off
diff --git a/config/templates/speech/morning_wakeup_report.yaml b/config/templates/speech/morning_wakeup_report.yaml
index a453872..7adde69 100755
--- a/config/templates/speech/morning_wakeup_report.yaml
+++ b/config/templates/speech/morning_wakeup_report.yaml
@@ -11,82 +11,18 @@
- The Weather in Grayson is {{states('sensor.acurite_6045m_3078_f')|round}} degrees
- {% if is_state('weather.home', 'rainy') %}
- {{ [
- 'with rain.',
- 'with showers.'
- ] | random }}
- {% elif is_state('weather.home', 'cloudy') %}
- {{ [
- 'with clouds.',
- 'with cloudy skies.'
- ] | random }}
- {% elif is_state('weather.home', 'partlycloudy') %}
- {{ [
- 'with some clouds.',
- 'with partly cloudy skies.',
- 'with scatterd clouds'
- ] | random }}
- {% elif is_state('weather.home', 'sunny') %}
- {% if is_state('sun.sun', 'above_horizon') %}
- {{ [
- 'and sunny.',
- 'with sun.'
- ] | random }}
- {% else %}
- {{ [
- 'and clear.',
- 'with clear skies.'
- ] | random }}
- {% endif %}
- {% else %}
- and {{ states.weather.home.state }}
- {% endif %}
+ {# Moved the current conditions to a tempate sensor in packages/weather.yaml #}
+ {# That will allow me to use it on other briefings with without having to rewrite it #}
+ {{ states('sensor.current_conditions')}}
{% if states.sensor.weatheralerts_active_alerts.state | int > 0 %}
There are currently {{states.sensor.weatheralerts_active_alerts.state }} active weather alerts for our area.
{% endif %}
- Based on the forecasted high temperature,
- {% if is_state('binary_sensor.morning','on') %}
- {% 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 }}
- 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 %}
- {% endif %}
+ {# Moved the clothing forecast to a tempate sensor in packages/weather.yaml #}
+ {# That will allow me to use it on other briefings with without having to rewrite it #}
+ {{ states('sensor.clothing_forecast_detail') }}