diff --git a/packages/custom_weather.yaml b/packages/custom_weather.yaml index 30ff25e..82e119b 100644 --- a/packages/custom_weather.yaml +++ b/packages/custom_weather.yaml @@ -876,6 +876,42 @@ sensor: {% else %} Safe {%- endif %} + weather_alert_string: + friendly_name: Weather Alert String + unique_id: 66b5f020-0b5e-48ed-92a2-740d2d708b30 + value_template: > + {%- macro getReport() -%} + {% if states('sensor.weatheralerts_active_alerts') > '0' %} + {% if is_state('sensor.weatheralerts_alert_1','on') %} + {{ state_attr('sensor.weatheralerts_alert_1','alert_event') }}, + {% endif %} + {% if is_state('sensor.weatheralerts_alert_2','on') %} + {{ state_attr('sensor.weatheralerts_alert_2','alert_event') }}, + {% endif %} + {% if is_state('sensor.weatheralerts_alert_3','on') %} + {{ state_attr('sensor.weatheralerts_alert_3','alert_event') }}, + {% endif %} + {% if is_state('sensor.weatheralerts_alert_4','on') %} + {{ state_attr('sensor.weatheralerts_alert_4','alert_event') }}, + {% endif %} + {% if is_state('sensor.weatheralerts_alert_5','on') %} + {{ state_attr('sensor.weatheralerts_alert_5','alert_event') }} + {% endif %} + {% else %} + None + {% endif %} + {%- endmacro -%} + {%- macro cleanup(data) -%} + {%- for item in data.split("\n") if item | trim != "" -%} + {{ item | trim }} {% endfor -%} + {%- endmacro -%} + {%- macro mother_of_all_macros() -%} + {{ getReport() }} + {%- endmacro -%} + {{- cleanup(mother_of_all_macros()) -}} + attribute_templates: + active_alerts: "{{ states('sensor.weatheralerts_active_alerts') }}" + icon_template: "{{ 'mdi.alert' if states('sensor.weatheralerts_active_alerts') | int > 0 else 'mdi:alert-remove' }}" input_boolean: freeze_warning: diff --git a/templates/speech/daily_briefing.yaml b/templates/speech/daily_briefing.yaml index 0b40ec1..b80cea8 100644 --- a/templates/speech/daily_briefing.yaml +++ b/templates/speech/daily_briefing.yaml @@ -46,21 +46,7 @@ {% endif %} {% if states('sensor.weatheralerts_active_alerts') > '0' %} "Currently there are weather alerts active. The total number of alerts is {{ states('sensor.weatheralerts_active_alerts') }}. They are as follows. " - {% if is_state('sensor.weatheralerts_alert_1','on') %} - "{{ state_attr('sensor.weatheralerts_alert_1','alert_event') }}" - {% endif %} - {% if is_state('sensor.weatheralerts_alert_2','on') %} - "{{ state_attr('sensor.weatheralerts_alert_2','alert_event') }}" - {% endif %} - {% if is_state('sensor.weatheralerts_alert_3','on') %} - "{{ state_attr('sensor.weatheralerts_alert_3','alert_event') }}" - {% endif %} - {% if is_state('sensor.weatheralerts_alert_4','on') %} - "{{ state_attr('sensor.weatheralerts_alert_4','alert_event') }}" - {% endif %} - {% if is_state('sensor.weatheralerts_alert_5','on') %} - "{{ state_attr('sensor.weatheralerts_alert_5','alert_event') }}" - {% endif %} + {{ states('sensor.weather_alert_string') }}. {% endif %}

diff --git a/templates/speech/morning_briefing.yaml b/templates/speech/morning_briefing.yaml index 7af91c0..d8127b1 100644 --- a/templates/speech/morning_briefing.yaml +++ b/templates/speech/morning_briefing.yaml @@ -68,21 +68,7 @@

{% if states('sensor.weatheralerts_active_alerts') > '0' %} "Currently there are weather alerts active. The total number of alerts is {{ states('sensor.weatheralerts_active_alerts') }}. They are as follows. " - {% if is_state('sensor.weatheralerts_alert_1','on') %} - "{{ state_attr('sensor.weatheralerts_alert_1','alert_event') }}" - {% endif %} - {% if is_state('sensor.weatheralerts_alert_2','on') %} - "{{ state_attr('sensor.weatheralerts_alert_2','alert_event') }}" - {% endif %} - {% if is_state('sensor.weatheralerts_alert_3','on') %} - "{{ state_attr('sensor.weatheralerts_alert_3','alert_event') }}" - {% endif %} - {% if is_state('sensor.weatheralerts_alert_4','on') %} - "{{ state_attr('sensor.weatheralerts_alert_4','alert_event') }}" - {% endif %} - {% if is_state('sensor.weatheralerts_alert_5','on') %} - "{{ state_attr('sensor.weatheralerts_alert_5','alert_event') }}" - {% endif %} + {{ states('sensor.weather_alert_string') }}. {% endif %}

diff --git a/templates/speech/nightly_briefing.yaml b/templates/speech/nightly_briefing.yaml index 93c91f9..911d10f 100644 --- a/templates/speech/nightly_briefing.yaml +++ b/templates/speech/nightly_briefing.yaml @@ -74,21 +74,7 @@

{% if states('sensor.weatheralerts_active_alerts') > '0' %} "Currently there are weather alerts active. The total number of alerts is {{ states('sensor.weatheralerts_active_alerts') }}. They are as follows. " - {% if is_state('sensor.weatheralerts_alert_1','on') %} - "{{ state_attr('sensor.weatheralerts_alert_1','alert_event') }}" - {% endif %} - {% if is_state('sensor.weatheralerts_alert_2','on') %} - "{{ state_attr('sensor.weatheralerts_alert_2','alert_event') }}" - {% endif %} - {% if is_state('sensor.weatheralerts_alert_3','on') %} - "{{ state_attr('sensor.weatheralerts_alert_3','alert_event') }}" - {% endif %} - {% if is_state('sensor.weatheralerts_alert_4','on') %} - "{{ state_attr('sensor.weatheralerts_alert_4','alert_event') }}" - {% endif %} - {% if is_state('sensor.weatheralerts_alert_5','on') %} - "{{ state_attr('sensor.weatheralerts_alert_5','alert_event') }}" - {% endif %} + {{ states('sensor.weather_alert_string') }}. {% endif %}

diff --git a/templates/speech/weather_briefing_full.yaml b/templates/speech/weather_briefing_full.yaml index 81b57ad..e1c649e 100644 --- a/templates/speech/weather_briefing_full.yaml +++ b/templates/speech/weather_briefing_full.yaml @@ -29,21 +29,7 @@

{% if states('sensor.weatheralerts_active_alerts') > '0' %} "Currently there are weather alerts active. The total number of alerts is {{ states('sensor.weatheralerts_active_alerts') }}. They are as follows. " - {% if is_state('sensor.weatheralerts_alert_1','on') %} - "{{ state_attr('sensor.weatheralerts_alert_1','alert_event') }}" - {% endif %} - {% if is_state('sensor.weatheralerts_alert_2','on') %} - "{{ state_attr('sensor.weatheralerts_alert_2','alert_event') }}" - {% endif %} - {% if is_state('sensor.weatheralerts_alert_3','on') %} - "{{ state_attr('sensor.weatheralerts_alert_3','alert_event') }}" - {% endif %} - {% if is_state('sensor.weatheralerts_alert_4','on') %} - "{{ state_attr('sensor.weatheralerts_alert_4','alert_event') }}" - {% endif %} - {% if is_state('sensor.weatheralerts_alert_5','on') %} - "{{ state_attr('sensor.weatheralerts_alert_5','alert_event') }}" - {% endif %} + {{ states('sensor.weather_alert_string') }}. {% endif %}

diff --git a/templates/speech/welcome_home.yaml b/templates/speech/welcome_home.yaml index e34522f..ed5b580 100644 --- a/templates/speech/welcome_home.yaml +++ b/templates/speech/welcome_home.yaml @@ -76,21 +76,7 @@

{% if states('sensor.weatheralerts_active_alerts') > '0' %} "Currently there are weather alerts active. The total number of alerts is {{ states('sensor.weatheralerts_active_alerts') }}. They are as follows. " - {% if is_state('sensor.weatheralerts_alert_1','on') %} - "{{ state_attr('sensor.weatheralerts_alert_1','alert_event') }}" - {% endif %} - {% if is_state('sensor.weatheralerts_alert_2','on') %} - "{{ state_attr('sensor.weatheralerts_alert_2','alert_event') }}" - {% endif %} - {% if is_state('sensor.weatheralerts_alert_3','on') %} - "{{ state_attr('sensor.weatheralerts_alert_3','alert_event') }}" - {% endif %} - {% if is_state('sensor.weatheralerts_alert_4','on') %} - "{{ state_attr('sensor.weatheralerts_alert_4','alert_event') }}" - {% endif %} - {% if is_state('sensor.weatheralerts_alert_5','on') %} - "{{ state_attr('sensor.weatheralerts_alert_5','alert_event') }}" - {% endif %} + {{ states('sensor.weather_alert_string') }}. {% endif %}