From 8ea1d4ca2b937102ec329383954c4bd0dfd29995 Mon Sep 17 00:00:00 2001 From: Tony Stork Date: Fri, 3 Apr 2026 05:20:18 -0400 Subject: [PATCH] Several necessary changes for the new WeatherAlerts integration --- automations.yaml | 147 +- ...erts_persistent_notification_original.yaml | 156 ++ configuration.yaml | 2 + custom_templates/weather.jinja | 4 +- packages/custom_weather.yaml | 192 +- packages/weatheralerts.yaml | 1692 ----------------- templates/speech/weather_briefing_full.yaml | 2 +- 7 files changed, 431 insertions(+), 1764 deletions(-) create mode 100644 blueprints/automation/github.com/weatheralerts_persistent_notification_original.yaml delete mode 100644 packages/weatheralerts.yaml diff --git a/automations.yaml b/automations.yaml index cd65e9c..6a1832b 100644 --- a/automations.yaml +++ b/automations.yaml @@ -1,33 +1,35 @@ - id: '1640833273099' alias: NWS Announce Weather Alert for Tornado description: '' - trigger: - - platform: numeric_state - entity_id: sensor.weatheralerts_active_alerts - attribute: tornado_warning_count - above: '0' - condition: + triggers: + - trigger: state + entity_id: + - binary_sensor.tornado_warning + from: + - 'off' + to: + - 'on' + conditions: - condition: state entity_id: input_boolean.vacation_mode state: 'off' - action: - - service: input_boolean.turn_on - data: {} + actions: + - data: {} target: entity_id: input_boolean.tornado_alarm - - service: input_boolean.turn_off - data: {} + action: input_boolean.turn_on + - data: {} target: entity_id: - input_boolean.white_noise_kallen_bedroom - input_boolean.white_noise_basement - input_boolean.white_noise_emma_bedroom alias: Turn off white noise - - service: script.turn_on - target: + action: input_boolean.turn_off + - target: entity_id: script.max_brightness - - service: script.text_notify - data: + action: script.turn_on + - data: type: critical title: Tornado Warning - TAKE COVER! message: The National Weather Service has issued a Tornado Warning for our area. @@ -35,34 +37,35 @@ who: all tag: tornado-warning alias: CRITICAL PHONE ALERT - - service: script.tv_notify - data: + action: script.text_notify + - data: who: all title: Tornado Warning - TAKE COVER! message: The National Weather Service has issued a Tornado Warning for our area. Take Cover NOW!!!! alias: TV Alert - - service: script.speech_engine - data: + action: script.tv_notify + - data: who: everywhere message: A tornado warning has been issued, please take cover immediately! A tornado warning has been issued, please take cover immediately! A tornado warning has been issued, please take cover immediately! type: alert alias: Elevated TTS alert + action: script.speech_engine - delay: hours: 0 minutes: 1 seconds: 0 milliseconds: 0 - - service: script.speech_engine - data: + - data: who: everywhere message: A tornado warning has been issued, please take cover immediately! A tornado warning has been issued, please take cover immediately! A tornado warning has been issued, please take cover immediately! type: critical alias: CRITICAL TTS ALERT + action: script.speech_engine - delay: hours: 0 minutes: 1 @@ -437,52 +440,55 @@ - id: '1655493590791' alias: NWS Announce Weather Alert for Tornado (CLEAR) description: '' - trigger: - - platform: numeric_state - entity_id: sensor.weatheralerts_active_alerts - attribute: tornado_warning_count - below: '1' - condition: + triggers: + - trigger: state + entity_id: + - binary_sensor.tornado_warning + from: + - 'on' + to: + - 'off' + conditions: - condition: state entity_id: input_boolean.vacation_mode state: 'off' - condition: state entity_id: input_boolean.tornado_alarm state: 'on' - action: - - service: script.text_notify - data: + actions: + - data: type: alert who: all message: clear_notification tag: tornado-warning alias: Clear critical notification - - service: input_boolean.turn_off - data: {} + action: script.text_notify + - data: {} target: entity_id: input_boolean.tornado_alarm - - service: script.volume_reset - data: {} - - service: script.max_brightness_cleanup - data: {} - - service: script.text_notify - data: + action: input_boolean.turn_off + - data: {} + action: script.volume_reset + - data: {} + action: script.max_brightness_cleanup + - data: title: Tornado Warning is cleared message: Check your surroundings and make sure it is safe to leave cover who: all type: alert tag: tornado-cleared - - service: script.tv_notify - data: + action: script.text_notify + - data: title: Tornado Warning is cleared message: Check your surroundings and make sure it is safe to leave cover who: all - - service: script.speech_engine - data: + action: script.tv_notify + - data: who: everywhere message: Tornado warning has been cleared. Check your surroundings and make sure it is safe to leave cover. type: alert + action: script.speech_engine - wait_template: '{{ is_state(''input_boolean.tornado_alarm'',''on'') }}' continue_on_timeout: true timeout: 00:05:00 @@ -503,15 +509,15 @@ alias: After audible notifications off alias: Should audible notifications be off then: - - service: input_boolean.turn_off - data: {} + - data: {} target: entity_id: input_boolean.audible_notifications + action: input_boolean.turn_off else: - - service: input_boolean.turn_on - data: {} + - data: {} target: entity_id: input_boolean.audible_notifications + action: input_boolean.turn_on else: - stop: Tornado alert re-activated mode: single @@ -985,38 +991,44 @@ alias: Tornado Watch Handling description: Controls the input boolean for tornado watches, for use in briefings or automations - trigger: - - platform: numeric_state - entity_id: sensor.weatheralerts_active_alerts - attribute: tornado_watch_count - above: 0 + triggers: + - alias: Watch Issued + entity_id: + - binary_sensor.tornado_watch id: watch_issued - alias: Watch Issued - - platform: numeric_state - entity_id: sensor.weatheralerts_active_alerts - attribute: tornado_watch_count - below: 1 - id: watch_cleared - alias: Watch Cleared - condition: [] - action: + trigger: state + from: + - 'off' + to: + - 'on' + - alias: Watch Issued + entity_id: + - binary_sensor.tornado_watch + id: watch_issued + trigger: state + from: + - 'on' + to: + - 'off' + conditions: [] + actions: - choose: - conditions: - condition: trigger id: watch_issued sequence: - - service: input_boolean.turn_on - data: {} + - data: {} target: entity_id: input_boolean.tornado_watch + action: input_boolean.turn_on - conditions: - condition: trigger id: watch_cleared sequence: - - service: input_boolean.turn_off - data: {} + - data: {} target: entity_id: input_boolean.tornado_watch + action: input_boolean.turn_off alias: Control input boolean mode: restart - id: '1679104710155' @@ -6583,3 +6595,10 @@ ready if you haven't already. type: alert mode: restart +- id: '1775084267580' + alias: WeatherAlerts Persistent Notification - Defiance + description: '' + use_blueprint: + path: github.com/weatheralerts_persistent_notification_original.yaml + input: + sensor: sensor.weatheralerts_defiance_ohz004_ohc039 diff --git a/blueprints/automation/github.com/weatheralerts_persistent_notification_original.yaml b/blueprints/automation/github.com/weatheralerts_persistent_notification_original.yaml new file mode 100644 index 0000000..618904e --- /dev/null +++ b/blueprints/automation/github.com/weatheralerts_persistent_notification_original.yaml @@ -0,0 +1,156 @@ +blueprint: + name: WeatherAlerts – Persistent Notification and Cleanup + description: 'Persistent notification for Weather Alerts from a weatheralerts integration sensor, + plus automatic cleanup when no active alerts remain for 30 minutes. New alerts + and alerts less than 30 minutes old will display as a full alert message in the + psrsistent notification. Alerts older than 30 minutes will only display as a + short alert event title in the persistent notification. + + ' + domain: automation + input: + sensor: + name: WeatherAlerts Sensor + description: The weatheralerts sensor to monitor + selector: + entity: + domain: + - sensor + integration: weatheralerts + multiple: false + reorder: false + source_url: https://github.com/custom-components/weatheralerts/raw/refs/heads/master/blueprints/weatheralerts_persistent_notification_original.yaml +trigger: +- platform: homeassistant + event: start +- platform: event + event_type: component reload + event_data: + domain: weatheralerts +- platform: state + entity_id: !input sensor + attribute: alert_tracking +variables: + sensor: !input sensor + integration: '{{ state_attr(sensor, ''integration'') or ''weatheralerts'' }}' + zone: '{{ state_attr(sensor, ''zone'') or ''unknown'' }}' + zone_name: '{{ state_attr(sensor, ''zone_name'') or ''unknown'' }}' + notif_id: '{{ integration }}_{{ zone | replace('','',''_'') | lower }}' + alert_ids: '{{ state_attr(sensor, ''alert_tracking'') or [] }}' + alerts: '{{ state_attr(sensor, ''alerts'') or [] }}' + now_ts: '{{ now().timestamp() | float }}' +action: +- choose: + - conditions: + - condition: template + value_template: "{% set new_ids = alert_ids | selectattr('status','eq','new') + | map(attribute='id') | list %} {% set new_alerts_full = alerts | selectattr('id','in', + new_ids) | list %} {% set ids = namespace(valid=[]) %} {% for item in alert_ids + %}\n {% if item.status == 'old'\n and item.sent is defined and item.sent + not in ['null','',none]\n and item.expires is defined and item.expires + not in ['null','',none] %}\n {% set sent_ts = as_timestamp(item.sent, default=0) + %}\n {% set exp_ts = as_timestamp(item.expires, default=0) %}\n {% if + exp_ts > now().timestamp() and (now().timestamp() - sent_ts) < 1800 %}\n {% + set ids.valid = ids.valid + [item.id] %}\n {% endif %}\n {% endif %}\n{% + endfor %} {% set old_alerts_full = alerts | selectattr('id','in', ids.valid) + | list %} {% set ids2 = namespace(valid=[]) %} {% for item in alert_ids %}\n + \ {% if item.status == 'old'\n and item.sent is defined and item.sent + not in ['null','',none]\n and item.expires is defined and item.expires + not in ['null','',none] %}\n {% set sent_ts = as_timestamp(item.sent, default=0) + %}\n {% set exp_ts = as_timestamp(item.expires, default=0) %}\n {% if + exp_ts > now().timestamp() and (now().timestamp() - sent_ts) >= 1800 %}\n + \ {% set ids2.valid = ids2.valid + [item.id] %}\n {% endif %}\n {% + endif %}\n{% endfor %} {% set old_alerts_title = alerts | selectattr('id','in', + ids2.valid) | list %} {{ new_alerts_full | length > 0 or old_alerts_full | + length > 0 or old_alerts_title | length > 0 }}" + sequence: + - service: persistent_notification.create + data: + notification_id: '{{ notif_id }}' + title: Weather Alerts for {{ zone_name }} + message: "{% set new_ids = alert_ids | selectattr('status','eq','new') | map(attribute='id') + | list %}\n{% set new_alerts_full = alerts | selectattr('id','in', new_ids) + | list %}\n{% set ids = namespace(valid=[]) %}\n{% for item in alert_ids + %}\n {% if item.status == 'old'\n and item.sent is defined and item.sent + not in ['null','',none]\n and item.expires is defined and item.expires + not in ['null','',none] %}\n {% set sent_ts = as_timestamp(item.sent, + default=0) %}\n {% set exp_ts = as_timestamp(item.expires, default=0) + %}\n {% if exp_ts > now().timestamp() and (now().timestamp() - sent_ts) + < 1800 %}\n {% set ids.valid = ids.valid + [item.id] %}\n {% endif + %}\n {% endif %}\n{% endfor %}\n{% set old_alerts_full = alerts | selectattr('id','in', + ids.valid) | list %}\n{% set ids2 = namespace(valid=[]) %}\n{% for item + in alert_ids %}\n {% if item.status == 'old'\n and item.sent is defined + and item.sent not in ['null','',none]\n and item.expires is defined + and item.expires not in ['null','',none] %}\n {% set sent_ts = as_timestamp(item.sent, + default=0) %}\n {% set exp_ts = as_timestamp(item.expires, default=0) + %}\n {% if exp_ts > now().timestamp() and (now().timestamp() - sent_ts) + >= 1800 %}\n {% set ids2.valid = ids2.valid + [item.id] %}\n {% + endif %}\n {% endif %}\n{% endfor %}\n{% set old_alerts_title = alerts + | selectattr('id','in', ids2.valid) | list %}\n{% for alert in new_alerts_full + %}\n{# — Clean up title — #}\n{% set clean_title = alert.title\n | replace('\\n\\n','
')\n + \ | replace('\\n',' ')\n | trim %}\n{# — Clean up headline — #}\n{% if + alert.NWSheadline and alert.NWSheadline != 'null' %}\n {% set clean_headline + = alert.NWSheadline\n | replace('\\n\\n','
')\n | replace('\\n',' + ')\n | trim %}\n{% else %}\n {% set clean_headline = \"\" %}\n{% endif + %}\n{# — Clean up description — #}\n{% set clean_description = alert.description\n + \ | replace('\\n\\n','
')\n | replace('\\n',' ')\n | replace('
','
\\n')\n + \ | regex_replace('([A-Z ]+?\\\\.\\\\.\\\\.)', '* \\\\1')\n + \ | replace('**','*')\n | trim %}\n{# — Optional instruction — #}\n{% + if alert.instruction and alert.instruction != 'null' %}\n {% set clean_instruction + = alert.instruction\n | replace('\\n\\n','
')\n | replace('\\n',' + ')\n | trim %}\n{% else %}\n {% set clean_instruction = \"\" %}\n{% + endif %}\n{# — Area — #}\n{% set clean_area = alert.area\n | replace('\\n\\n','
')\n + \ | replace('\\n',' ')\n | trim %}\n\n \n\n\n {{ + clean_title }}\n
\n{% if clean_headline and clean_headline + != 'null' %}\n {{ clean_headline }}
\n{% endif %}\n{{ clean_description + }}
\n* AREA… {{ clean_area }}

\n{% if clean_instruction + and clean_instruction != 'null' %}\n{{ clean_instruction }}

\n{% + endif %}\n{% if alert.sent and alert.sent != 'null' %}\nAlert Sent: + {{ alert.sent }}
\n{% endif %}\n{% if alert.effective and alert.effective + != 'null' %}\nEffective: {{ alert.effective }}
\n{% + endif %}\n{% if alert.expires and alert.expires != 'null' %}\nExpires: + {{ alert.expires }}
\n{% endif %}\n{% if alert.onset and alert.onset + != 'null' %}\nOnset: {{ alert.onset }}
\n{% endif %}\n{% + if alert.ends and alert.ends != 'null' %}\nEnds: {{ alert.ends + }}
\n{% endif %}\n{% if not loop.last %}\n
\n{% endif %}\n{% endfor + %}\n\n{% if old_alerts_full %}\n
\n{% for alert in old_alerts_full + %}\n{# — Clean up title — #}\n{% set clean_title = alert.title\n | replace('\\n\\n','
')\n + \ | replace('\\n',' ')\n | trim %}\n{# — Clean up headline — #}\n{% if + alert.NWSheadline and alert.NWSheadline != 'null' %}\n {% set clean_headline + = alert.NWSheadline\n | replace('\\n\\n','
')\n | replace('\\n',' + ')\n | trim %}\n{% else %}\n {% set clean_headline = \"\" %}\n{% endif + %}\n{# — Clean up description — #}\n{% set clean_description = alert.description\n + \ | replace('\\n\\n','
')\n | replace('\\n',' ')\n | replace('
','
\\n')\n + \ | regex_replace('([A-Z ]+?\\\\.\\\\.\\\\.)', '* \\\\1')\n + \ | replace('**','*')\n | trim %}\n{# — Optional instruction — #}\n{% + if alert.instruction and alert.instruction != 'null' %}\n {% set clean_instruction + = alert.instruction\n | replace('\\n\\n','
')\n | replace('\\n',' + ')\n | trim %}\n{% else %}\n {% set clean_instruction = \"\" %}\n{% + endif %}\n{# — Area — #}\n{% set clean_area = alert.area\n | replace('\\n\\n','
')\n + \ | replace('\\n',' ')\n | trim %}\n\n \n\n\n {{ + clean_title }}\n
\n{% if clean_headline and clean_headline + != 'null' %}\n {{ clean_headline }}
\n{% endif %}\n{{ clean_description + }}
\n* AREA… {{ clean_area }}
\n{% if clean_instruction + and clean_instruction != 'null' %}\n{{ clean_instruction }}
\n{% endif + %}\n{% if alert.sent and alert.sent != 'null' %}\nAlert Sent: + {{ alert.sent }}
\n{% endif %}\n{% if alert.effective and alert.effective + != 'null' %}\nEffective: {{ alert.effective }}
\n{% + endif %}\n{% if alert.expires and alert.expires != 'null' %}\nExpires: + {{ alert.expires }}
\n{% endif %}\n{% if alert.onset and alert.onset + != 'null' %}\nOnset: {{ alert.onset }}
\n{% endif %}\n{% + if alert.ends and alert.ends != 'null' %}\nEnds: {{ alert.ends + }}
\n{% endif %}\n{% if not loop.last %}\n
\n{% endif %}\n{% endfor + %}\n{% endif %}\n\n{% if old_alerts_title %}\n
\n{% if new_alerts_full + %}\nOther Active Alerts:
\n{% else %}\nActive + Alerts:
\n{% endif %}\n{% for alert in old_alerts_title %}\n* + \n \n + \ \n {{ alert.title }}
\n{% endfor %}\n{% endif + %}\n" + default: + - delay: 00:30:00 + - service: persistent_notification.dismiss + data: + notification_id: '{{ notif_id }}' +mode: restart diff --git a/configuration.yaml b/configuration.yaml index 2e7aa6f..ef5a294 100644 --- a/configuration.yaml +++ b/configuration.yaml @@ -291,6 +291,7 @@ influxdb: - sensor.*_status - sensor.adguard* - sensor.*response_time* + - sensor.weatheralerts* entities: - media_player.living_room_tv - media_player.basement_tv @@ -471,6 +472,7 @@ prometheus: - sensor.*_status - sensor.adguard* - sensor.*response_time* + - sensor.weatheralerts* include_entities: - media_player.living_room_tv - media_player.basement_tv diff --git a/custom_templates/weather.jinja b/custom_templates/weather.jinja index d351314..98aa71c 100644 --- a/custom_templates/weather.jinja +++ b/custom_templates/weather.jinja @@ -30,7 +30,7 @@ {% if state_attr('binary_sensor.severe_thunderstorm_warning','considerable_destructive') == true %} This storm has the potential to cause considerable damage. Please take shelter and stay safe! {% endif %} - {% elif states('sensor.weatheralerts_active_alerts') > '0' and method != 'dashboard' %} + {% elif states('sensor.weatheralerts_defiance_ohz004_ohc039') > '0' and method != 'dashboard' %} Current weather alerts: {{ states('sensor.weather_alert_string') }}. {% endif %} {% if method != 'dashboard' %} @@ -69,7 +69,7 @@ {% else %} {% set alertStrings = ['are','alerts','They are'] %} {% endif %} - {% if states('sensor.weatheralerts_active_alerts') > '0' %} + {% if states('sensor.weatheralerts_defiance_ohz004_ohc039') > '0' %} "There {{ alertStrings[0] }} {{ alerts }} weather {{ alertStrings[1] }} active. {{ alertStrings[2] }}, " {{ states('sensor.weather_alert_string') }}. {% endif %} diff --git a/packages/custom_weather.yaml b/packages/custom_weather.yaml index f4b2e97..395e61a 100644 --- a/packages/custom_weather.yaml +++ b/packages/custom_weather.yaml @@ -1442,7 +1442,7 @@ template: # previous_rainfall: # - name: "Past 48h Rainfall" # state: "{{ states('sensor.daily_rainfall_in') | float + state_attr('sensor.daily_rainfall_in', 'last_period') | float }}" - - name: Weather Alert String + - name: Weather Alert String #! REPAIRS NEEDED unique_id: 66b5f020-0b5e-48ed-92a2-740d2d708b30 state: > {% from 'formatting.jinja' import cleanup %} @@ -1468,14 +1468,14 @@ template: {% endmacro %} {{ cleanup(getReport()) }} attributes: - active_alerts: "{{ states('sensor.weatheralerts_active_alerts') }}" + active_alerts: "{{ states('sensor.weatheralerts_defiance_ohz004_ohc039') }}" icon: > - {% if (states('sensor.weatheralerts_active_alerts') | int ) > 0 %} + {% if (states('sensor.weatheralerts_defiance_ohz004_ohc039') | int ) > 0 %} mdi:alert {% else %} mdi:alert-remove {% endif %} - - name: 'Weather Alerts Active - Corrected' + - name: 'Weather Alerts Active - Corrected' #! REPAIRS NEEDED unique_id: e2f51da4-2271-4719-8edf-a28f76ac1e3f state: > {% from 'formatting.jinja' import cleanup %} @@ -1494,7 +1494,7 @@ template: {% endmacro %} {{ cleanup(getReport()) }} icon: > - {% if (states('sensor.weatheralerts_active_alerts') | int ) > 0 %} + {% if (states('sensor.weatheralerts_defiance_ohz004_ohc039') | int ) > 0 %} mdi:alert {% else %} mdi:alert-remove @@ -1613,6 +1613,9 @@ sensor: # above: 0 input_boolean: + tornado_watch: + name: Tornado Watch + icon: mdi:message-alert freeze_warning: name: Freeze Warning icon: mdi:snowflake-alert @@ -1677,6 +1680,185 @@ input_boolean: # - service: input_boolean.turn_off # entity_id: input_boolean.freeze_warning +automation: + - id: 80465d92-2e06-4cf0-ba92-33376b28b9db + alias: WeatherAlerts - Notify on WeatherAlerts Error + description: "" + triggers: + - entity_id: + - sensor.weatheralerts_defiance_ohz004_ohc039 + trigger: state + conditions: + - condition: template + value_template: > + {% set errs = + state_attr('sensor.weatheralerts_defiance_ohz004_ohc039','error') %} + + {% if errs is not iterable or errs is string or errs is none %} + false + {% else %} + {% set e0 = errs[0] if errs|length > 0 else none %} + {{ e0 is mapping and e0.get('type') not in ['success'] }} + {% endif %} + actions: + - data: + title: Weather Alerts Error + message: > + {% set errs = + state_attr('sensor.weatheralerts_defiance_ohz004_ohc039','error') %} + + {% set e0 = errs[0] if errs|length > 0 else {} %} + + **Type:** {{ e0.get('type', 'unknown') }} + + **Status:** {{ e0.get('status', 'unknown') }} + + **Message:** {{ e0.get('message', 'unknown') }} + + **Time:** {{ e0.get('timestamp', 'unknown') }} + notification_id: weatheralerts_error_notification_defiance + action: persistent_notification.create + mode: single + + - id: 3ef6edbc-b24c-4032-a423-5fd3fee64c57 + alias: WeatherAlerts - Notify on Recovery + description: "" + triggers: + - entity_id: sensor.weatheralerts_defiance_ohz004_ohc039 + trigger: state + conditions: + - condition: template + value_template: > + {% set cur = + state_attr('sensor.weatheralerts_defiance_ohz004_ohc039','error') + %} + + {% set prev = trigger.from_state.attributes.get('error') if + trigger.from_state else none %} + + {% if cur is not iterable or cur is string or cur is none or cur|length == + 0 %} + false + {% else %} + {% set cur0 = cur[0] %} + {% set prev0 = prev[0] if prev is iterable and prev is not string and prev is not none and prev|length > 0 else none %} + {{ cur0.get('type') == 'success' and prev0.get('type') in ['http_error', 'exception'] }} + {% endif %} + actions: + - data: + title: Weather Alerts Recovered From Error + message: > + The Weather Alerts integration has successfully updated after an error. + + {% set errs = + state_attr('sensor.weatheralerts_defiance_ohz004_ohc039','error') %} + + {% set e0 = errs[0] if errs|length > 0 else {} %} + + **Type:** {{ e0.get('type', 'unknown') }} + + **Status:** {{ e0.get('status', 'unknown') }} + + **Message:** {{ e0.get('message', 'unknown') }} + + **Time:** {{ e0.get('timestamp', 'unknown') }} + notification_id: weatheralerts_notify_on_recovery_defiance + action: persistent_notification.create + mode: single + + - id: 7b11243f-2154-45f8-bceb-71b83dac5b03 + alias: WeatherAlerts - All Clear Notification + description: "" + triggers: + - entity_id: sensor.weatheralerts_defiance_ohz004_ohc039 + trigger: state + conditions: + - condition: template + value_template: |- + {% set prev = trigger.from_state.state if trigger.from_state else '0' %} + {% set cur = trigger.to_state.state if trigger.to_state else '0' %} + {{ (prev | int(0)) > 0 and (cur | int(0)) == 0 }} + actions: + - data: + title: Weather alerts cleared + message: No active weather alerts remain. + notification_id: weatheralerts_all_clear_defiance + action: persistent_notification.create + mode: single + + # Announce Severe Weather + - id: b1bdfbf9-d82e-436f-bc60-77c3abfb077b + alias: NWS Announce Weather Alert + trigger: + - trigger: state + entity_id: binary_sensor.severe_thunderstorm_warning + from: + - "off" + to: + - "on" + id: tstorm-warning + - trigger: state + entity_id: binary_sensor.tornado_watch + from: + - "off" + to: + - "on" + id: tornado-watch + - trigger: state + entity_id: binary_sensor.severe_thunderstorm_watch + from: + - "off" + to: + - "on" + id: tstorm-watch + # - platform: numeric_state + # entity_id: sensor.weatheralerts_defiance_ohz004_ohc039 + # attribute: freeze_warning_count + # above: 0 + # id: freeze-warning + action: + - choose: + - conditions: + - condition: trigger + id: tstorm-warning + sequence: + - service: script.status_annc + data: + who: everywhere + type: weather + call_interruption: 1 + call_thunderstorm_warning: 1 + - conditions: + - condition: trigger + id: tornado-watch + sequence: + - service: script.status_annc + data: + who: everywhere + type: weather + call_interruption: 1 + call_tornado_watch: 1 + - conditions: + - condition: trigger + id: tstorm-watch + sequence: + - service: script.status_annc + data: + who: everywhere + type: weather + call_interruption: 1 + call_thunderstorm_watch: 1 + - conditions: + - condition: trigger + id: freeze-warning + sequence: + - service: script.status_annc + data: + who: everywhere + type: weather + call_interruption: 1 + call_freeze_warning: 1 + script: # refresh_weather_alert_sensors: diff --git a/packages/weatheralerts.yaml b/packages/weatheralerts.yaml deleted file mode 100644 index 6a24d7c..0000000 --- a/packages/weatheralerts.yaml +++ /dev/null @@ -1,1692 +0,0 @@ -# Original author: Jeffrey Stone -# Original repo: https://github.com/thejeffreystone/home-assistant-configuration -# -################################################################################ -# -# weatheralerts.yaml -# -# weatheralerts sensors and automations (read comments below) -# -################################################################################ -# -# Requirements: weatheralerts custom component (installable via HACS) -# -# To use this package go to your Home Assistant web interface, go to -# Configuration, then Entities, and find the new sensor.ZoneName sensor -# that was created for your location (ZoneName will likely be the name of -# your county). Rename that entity with weatheralerts -# -# This yaml package stores up to 5 most recent active alerts from the -# weather alerts feed and places them in these sensors: -# -# sensor.weatheralerts_alert_1 -# sensor.weatheralerts_alert_2 -# sensor.weatheralerts_alert_3 -# sensor.weatheralerts_alert_4 -# sensor.weatheralerts_alert_5 -# -# Additional sensors available: -# sensor.weatheralerts_active_alerts (contains number of active alerts) -# weatheralerts_alerts_are_active (contains either Yes or No) -# sensor.weatheralerts_alert_1_last_changed -# sensor.weatheralerts_alert_2_last_changed -# sensor.weatheralerts_alert_3_last_changed -# sensor.weatheralerts_alert_4_last_changed -# sensor.weatheralerts_alert_5_last_changed -# sensor.weatheralerts_alert_1_most_recent_active_alert -# sensor.weatheralerts_alert_2_most_recent_active_alert -# sensor.weatheralerts_alert_3_most_recent_active_alert -# sensor.weatheralerts_alert_4_most_recent_active_alert -# sensor.weatheralerts_alert_5_most_recent_active_alert -# -################################################################################ - - -input_boolean: - tornado_watch: - name: Tornado Watch - icon: mdi:message-alert - -################################################################################ -## sensor ## - -template: - - sensor: - ## You can add your county or city name to sensorname for personalization - ## For example: Weather Alerts for YourCountyName - - name: Weather Alerts - unique_id: 32371252-89ff-47b2-86e3-32ef92a05205 - unit_of_measurement: Alerts - icon: mdi:alert-rhombus - state: >- - {% set alerts_total = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0 %} - {% set alerts_total.count = alerts_total.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ alerts_total.count }} - attributes: - warning_count: >- - {% set warnings = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'warning' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set warnings.count = warnings.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ warnings.count }} - tornado_warning_count: >- - {% set warnings = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'tornado warning' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set warnings.count = warnings.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ warnings.count }} - freeze_warning_count: >- - {% set warnings = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'freeze warning' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set warnings.count = warnings.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ warnings.count }} - tstorm_warning_count: >- - {% set warnings = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'thunderstorm warning' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set warnings.count = warnings.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ warnings.count }} - flood_warning_count: >- - {% set warnings = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'flood warning' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set warnings.count = warnings.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ warnings.count }} - watch_count: >- - {% set watches = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'watch' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set watches.count = watches.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ watches.count }} - tornado_watch_count: >- - {% set watches = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'tornado watch' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set watches.count = watches.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ watches.count }} - tstorm_watch_count: >- - {% set watches = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'thunderstorm watch' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set watches.count = watches.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ watches.count }} - flood_watch_count: >- - {% set watches = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'flood watch' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set watches.count = watches.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ watches.count }} - advisory_count: >- - {% set advisories = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'advisory' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set advisories.count = advisories.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ advisories.count }} - statement_count: >- - {% set statements = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'statement' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set statements.count = statements.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ statements.count }} - outlook_count: >- - {% set outlooks = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'outlook' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set outlooks.count = outlooks.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ outlooks.count }} - alert_count: >- - {% set alerts = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'alert' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set alerts.count = alerts.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ alerts.count }} - message_count: >- - {% set messages = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'message' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set messages.count = messages.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ messages.count }} - important_count: >- - {% set important = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if ('emergency' in alert.event.lower() or 'danger' in alert.event.lower() or 'immediate' in alert.event.lower()) and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set important.count = important.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ important.count }} - test_count: >- - {% set test = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'Test' in alert.event and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set test.count = test.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ test.count }} - - name: Weather Alert 1 - unique_id: 752fb9ae-a61f-41f8-8882-f8d025b892e3 - icon: mdi:alert-rhombus - state: >- - {% if (states('sensor.weatheralerts') != 'unavailable') and (state_attr('sensor.weatheralerts', 'alerts')[0] != null) or ((states('sensor.weatheralerts') == 'unavailable') and (as_timestamp(state_attr('sensor.weatheralerts', 'alerts')[0].endsExpires) - as_timestamp(now()) > 0)) %} - on - {% else %} - off - {% endif %} - attributes: - alert_id: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].id }} - {% else %} - None - {% endif %} - alert_event: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].event }} - {% else %} - None - {% endif %} - alert_area: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].area }} - {% else %} - None - {% endif %} - alert_NWSheadline: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }} - {% else %} - None - {% endif %} - alert_description: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].description }} - {% else %} - None - {% endif %} - alert_messageType: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].messageType }} - {% else %} - None - {% endif %} - alert_status: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].status }} - {% else %} - None - {% endif %} - alert_category: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].category }} - {% else %} - None - {% endif %} - alert_urgency: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].urgency }} - {% else %} - None - {% endif %} - alert_severity: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].severity }} - {% else %} - None - {% endif %} - alert_certainty: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].certainty }} - {% else %} - None - {% endif %} - alert_response: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].response }} - {% else %} - None - {% endif %} - alert_instruction: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].instruction }} - {% else %} - None - {% endif %} - alert_sent: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].sent }} - {% else %} - None - {% endif %} - alert_effective: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].effective }} - {% else %} - None - {% endif %} - alert_onset: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].onset }} - {% else %} - None - {% endif %} - alert_expires: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].expires }} - {% else %} - None - {% endif %} - alert_title: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].title }} - {% else %} - None - {% endif %} - alert_zoneid: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].zoneid }} - {% else %} - None - {% endif %} - display_title: > - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].title }} - {% else %} - None - {% endif %} - display_message: > - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {% if states.sensor.weatheralerts.attributes.alerts[0].NWSheadline != "null" %} - {{ states.sensor.weatheralerts.attributes.alerts[0].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }}
- {% endif %} -
{{ states.sensor.weatheralerts.attributes.alerts[0].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
- {% if states.sensor.weatheralerts.attributes.alerts[0].instruction != None %} - {{ states.sensor.weatheralerts.attributes.alerts[0].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
- {% endif %} -
Where : {{ state_attr('sensor.weatheralerts', 'friendly_name') }} -
Effective: {{ states.sensor.weatheralerts.attributes.alerts[0].effective }} - {%- if states.sensor.weatheralerts.attributes.alerts[0].ends != None %} -
Ends: {{ states.sensor.weatheralerts.attributes.alerts[0].ends }} - {%- endif %} -
Expires: {{ states.sensor.weatheralerts.attributes.alerts[0].expires }} - {% else %} - None - {% endif %} - spoken_title: > - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - Attention!!! Weather alert for {{ state_attr('sensor.weatheralerts', 'friendly_name') }}. A {{ states.sensor.weatheralerts.attributes.alerts[0].title }}. {{ states.sensor.weatheralerts.attributes.alerts[0].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') | capitalize }}. - {% else %} - None - {% endif %} - spoken_message: > - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} - {% if states.sensor.weatheralerts.attributes.alerts[0].instruction != None %} - {{ states.sensor.weatheralerts.attributes.alerts[0].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} - {% endif %} - {% else %} - None - {% endif %} - - name: Weather Alert 2 - unique_id: 4ecaa8ce-65ec-429f-956c-ac478f1c3d6f - icon: mdi:alert-rhombus - state: >- - {% if (states('sensor.weatheralerts') != 'unavailable') and (state_attr('sensor.weatheralerts', 'alerts')[1] != null) or ((states('sensor.weatheralerts') == 'unavailable') and (as_timestamp(state_attr('sensor.weatheralerts', 'alerts')[1].endsExpires) - as_timestamp(now()) > 0)) %} - on - {% else %} - off - {% endif %} - attributes: - alert_id: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].id }} - {% else %} - None - {% endif %} - alert_event: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].event }} - {% else %} - None - {% endif %} - alert_area: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].area }} - {% else %} - None - {% endif %} - alert_NWSheadline: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }} - {% else %} - None - {% endif %} - alert_description: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].description }} - {% else %} - None - {% endif %} - alert_messageType: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].messageType }} - {% else %} - None - {% endif %} - alert_status: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].status }} - {% else %} - None - {% endif %} - alert_category: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].category }} - {% else %} - None - {% endif %} - alert_urgency: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].urgency }} - {% else %} - None - {% endif %} - alert_severity: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].severity }} - {% else %} - None - {% endif %} - alert_certainty: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].certainty }} - {% else %} - None - {% endif %} - alert_response: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].response }} - {% else %} - None - {% endif %} - alert_instruction: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].instruction }} - {% else %} - None - {% endif %} - alert_sent: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].sent }} - {% else %} - None - {% endif %} - alert_effective: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].effective }} - {% else %} - None - {% endif %} - alert_onset: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].onset }} - {% else %} - None - {% endif %} - alert_expires: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].expires }} - {% else %} - None - {% endif %} - alert_title: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].title }} - {% else %} - None - {% endif %} - alert_zoneid: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].zoneid }} - {% else %} - None - {% endif %} - display_title: > - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].title }} - {% else %} - None - {% endif %} - display_message: > - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {% if states.sensor.weatheralerts.attributes.alerts[1].NWSheadline != "null" %} - {{ states.sensor.weatheralerts.attributes.alerts[1].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }}
- {% endif %} -
{{ states.sensor.weatheralerts.attributes.alerts[1].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
- {% if states.sensor.weatheralerts.attributes.alerts[1].instruction != None %} - {{ states.sensor.weatheralerts.attributes.alerts[1].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
- {% endif %} -
Where : {{ state_attr('sensor.weatheralerts', 'friendly_name') }} -
Effective: {{ states.sensor.weatheralerts.attributes.alerts[1].effective }} - {%- if states.sensor.weatheralerts.attributes.alerts[1].ends != None %} -
Ends: {{ states.sensor.weatheralerts.attributes.alerts[1].ends }} - {%- endif %} -
Expires: {{ states.sensor.weatheralerts.attributes.alerts[1].expires }} - {% else %} - None - {% endif %} - spoken_title: > - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - Attention!!! Weather alert for {{ state_attr('sensor.weatheralerts', 'friendly_name') }}. A {{ states.sensor.weatheralerts.attributes.alerts[1].title }}. {{ states.sensor.weatheralerts.attributes.alerts[1].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') | capitalize }}. - {% else %} - None - {% endif %} - spoken_message: > - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} - {% if states.sensor.weatheralerts.attributes.alerts[1].instruction != None %} - {{ states.sensor.weatheralerts.attributes.alerts[1].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} - {% endif %} - {% else %} - None - {% endif %} - - name: Weather Alert 3 - unique_id: 0dcc3731-c90e-427a-abd9-dee29a5ed1e1 - icon: mdi:alert-rhombus - state: >- - {% if (states('sensor.weatheralerts') != 'unavailable') and (state_attr('sensor.weatheralerts', 'alerts')[2] != null) or ((states('sensor.weatheralerts') == 'unavailable') and (as_timestamp(state_attr('sensor.weatheralerts', 'alerts')[2].endsExpires) - as_timestamp(now()) > 0)) %} - on - {% else %} - off - {% endif %} - attributes: - alert_id: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].id }} - {% else %} - None - {% endif %} - alert_event: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].event }} - {% else %} - None - {% endif %} - alert_area: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].area }} - {% else %} - None - {% endif %} - alert_NWSheadline: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }} - {% else %} - None - {% endif %} - alert_description: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].description }} - {% else %} - None - {% endif %} - alert_messageType: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].messageType }} - {% else %} - None - {% endif %} - alert_status: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].status }} - {% else %} - None - {% endif %} - alert_category: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].category }} - {% else %} - None - {% endif %} - alert_urgency: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].urgency }} - {% else %} - None - {% endif %} - alert_severity: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].severity }} - {% else %} - None - {% endif %} - alert_certainty: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].certainty }} - {% else %} - None - {% endif %} - alert_response: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].response }} - {% else %} - None - {% endif %} - alert_instruction: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].instruction }} - {% else %} - None - {% endif %} - alert_sent: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].sent }} - {% else %} - None - {% endif %} - alert_effective: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].effective }} - {% else %} - None - {% endif %} - alert_onset: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].onset }} - {% else %} - None - {% endif %} - alert_expires: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].expires }} - {% else %} - None - {% endif %} - alert_title: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].title }} - {% else %} - None - {% endif %} - alert_zoneid: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].zoneid }} - {% else %} - None - {% endif %} - display_title: > - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].title }} - {% else %} - None - {% endif %} - display_message: > - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {% if states.sensor.weatheralerts.attributes.alerts[2].NWSheadline != "null" %} - {{ states.sensor.weatheralerts.attributes.alerts[2].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }}
- {% endif %} -
{{ states.sensor.weatheralerts.attributes.alerts[2].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
- {% if states.sensor.weatheralerts.attributes.alerts[2].instruction != None %} - {{ states.sensor.weatheralerts.attributes.alerts[2].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
- {% endif %} -
Where : {{ state_attr('sensor.weatheralerts', 'friendly_name') }} -
Effective: {{ states.sensor.weatheralerts.attributes.alerts[2].effective }} - {%- if states.sensor.weatheralerts.attributes.alerts[2].ends != None %} -
Ends: {{ states.sensor.weatheralerts.attributes.alerts[2].ends }} - {%- endif %} -
Expires: {{ states.sensor.weatheralerts.attributes.alerts[2].expires }} - {% else %} - None - {% endif %} - spoken_title: > - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - Attention!!! Weather alert for {{ state_attr('sensor.weatheralerts', 'friendly_name') }}. A {{ states.sensor.weatheralerts.attributes.alerts[2].title }}. {{ states.sensor.weatheralerts.attributes.alerts[2].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') | capitalize }}. - {% else %} - None - {% endif %} - spoken_message: > - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} - {% if states.sensor.weatheralerts.attributes.alerts[2].instruction != None %} - {{ states.sensor.weatheralerts.attributes.alerts[2].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} - {% endif %} - {% else %} - None - {% endif %} - - name: Weather Alert 4 - unique_id: 18f756d2-f3aa-476f-a1c0-12c70f173ead - icon: mdi:alert-rhombus - state: >- - {% if (states('sensor.weatheralerts') != 'unavailable') and (state_attr('sensor.weatheralerts', 'alerts')[3] != null) or ((states('sensor.weatheralerts') == 'unavailable') and (as_timestamp(state_attr('sensor.weatheralerts', 'alerts')[3].endsExpires) - as_timestamp(now()) > 0)) %} - on - {% else %} - off - {% endif %} - attributes: - alert_id: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].id }} - {% else %} - None - {% endif %} - alert_event: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].event }} - {% else %} - None - {% endif %} - alert_area: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].area }} - {% else %} - None - {% endif %} - alert_NWSheadline: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }} - {% else %} - None - {% endif %} - alert_description: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].description }} - {% else %} - None - {% endif %} - alert_messageType: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].messageType }} - {% else %} - None - {% endif %} - alert_status: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].status }} - {% else %} - None - {% endif %} - alert_category: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].category }} - {% else %} - None - {% endif %} - alert_urgency: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].urgency }} - {% else %} - None - {% endif %} - alert_severity: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].severity }} - {% else %} - None - {% endif %} - alert_certainty: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].certainty }} - {% else %} - None - {% endif %} - alert_response: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].response }} - {% else %} - None - {% endif %} - alert_instruction: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].instruction }} - {% else %} - None - {% endif %} - alert_sent: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].sent }} - {% else %} - None - {% endif %} - alert_effective: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].effective }} - {% else %} - None - {% endif %} - alert_onset: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].onset }} - {% else %} - None - {% endif %} - alert_expires: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].expires }} - {% else %} - None - {% endif %} - alert_title: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].title }} - {% else %} - None - {% endif %} - alert_zoneid: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].zoneid }} - {% else %} - None - {% endif %} - display_title: > - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].title }} - {% else %} - None - {% endif %} - display_message: > - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {% if states.sensor.weatheralerts.attributes.alerts[3].NWSheadline != "null" %} - {{ states.sensor.weatheralerts.attributes.alerts[3].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }}
- {% endif %} -
{{ states.sensor.weatheralerts.attributes.alerts[3].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
- {% if states.sensor.weatheralerts.attributes.alerts[3].instruction != None %} - {{ states.sensor.weatheralerts.attributes.alerts[3].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
- {% endif %} -
Where : {{ state_attr('sensor.weatheralerts', 'friendly_name') }} -
Effective: {{ states.sensor.weatheralerts.attributes.alerts[3].effective }} - {%- if states.sensor.weatheralerts.attributes.alerts[3].ends != None %} -
Ends: {{ states.sensor.weatheralerts.attributes.alerts[3].ends }} - {%- endif %} -
Expires: {{ states.sensor.weatheralerts.attributes.alerts[3].expires }} - {% else %} - None - {% endif %} - spoken_title: > - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - Attention!!! Weather alert for {{ state_attr('sensor.weatheralerts', 'friendly_name') }}. A {{ states.sensor.weatheralerts.attributes.alerts[3].title }}. {{ states.sensor.weatheralerts.attributes.alerts[3].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') | capitalize }}. - {% else %} - None - {% endif %} - spoken_message: > - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} - {% if states.sensor.weatheralerts.attributes.alerts[3].instruction != None %} - {{ states.sensor.weatheralerts.attributes.alerts[3].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} - {% endif %} - {% else %} - None - {% endif %} - - name: Weather Alert 5 - unique_id: c9690a26-84e8-439d-9718-469b227c4d66 - icon: mdi:alert-rhombus - state: >- - {% if (states('sensor.weatheralerts') != 'unavailable') and (state_attr('sensor.weatheralerts', 'alerts')[4] != null) or ((states('sensor.weatheralerts') == 'unavailable') and (as_timestamp(state_attr('sensor.weatheralerts', 'alerts')[4].endsExpires) - as_timestamp(now()) > 0)) %} - on - {% else %} - off - {% endif %} - attributes: - alert_id: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].id }} - {% else %} - None - {% endif %} - alert_event: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].event }} - {% else %} - None - {% endif %} - alert_area: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].area }} - {% else %} - None - {% endif %} - alert_NWSheadline: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }} - {% else %} - None - {% endif %} - alert_description: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].description }} - {% else %} - None - {% endif %} - alert_messageType: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].messageType }} - {% else %} - None - {% endif %} - alert_status: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].status }} - {% else %} - None - {% endif %} - alert_category: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].category }} - {% else %} - None - {% endif %} - alert_urgency: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].urgency }} - {% else %} - None - {% endif %} - alert_severity: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].severity }} - {% else %} - None - {% endif %} - alert_certainty: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].certainty }} - {% else %} - None - {% endif %} - alert_response: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].response }} - {% else %} - None - {% endif %} - alert_instruction: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].instruction }} - {% else %} - None - {% endif %} - alert_sent: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].sent }} - {% else %} - None - {% endif %} - alert_effective: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].effective }} - {% else %} - None - {% endif %} - alert_onset: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].onset }} - {% else %} - None - {% endif %} - alert_expires: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].expires }} - {% else %} - None - {% endif %} - alert_title: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].title }} - {% else %} - None - {% endif %} - alert_zoneid: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].zoneid }} - {% else %} - None - {% endif %} - display_title: > - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].title }} - {% else %} - None - {% endif %} - display_message: > - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {% if states.sensor.weatheralerts.attributes.alerts[4].NWSheadline != "null" %} - {{ states.sensor.weatheralerts.attributes.alerts[4].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }}
- {% endif %} -
{{ states.sensor.weatheralerts.attributes.alerts[4].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
- {% if states.sensor.weatheralerts.attributes.alerts[4].instruction != None %} - {{ states.sensor.weatheralerts.attributes.alerts[4].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
- {% endif %} -
Where : {{ state_attr('sensor.weatheralerts', 'friendly_name') }} -
Effective: {{ states.sensor.weatheralerts.attributes.alerts[4].effective }} - {%- if states.sensor.weatheralerts.attributes.alerts[4].ends != None %} -
Ends: {{ states.sensor.weatheralerts.attributes.alerts[4].ends }} - {%- endif %} -
Expires: {{ states.sensor.weatheralerts.attributes.alerts[4].expires }} - {% else %} - None - {% endif %} - spoken_title: > - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - Attention!!! Weather alert for {{ state_attr('sensor.weatheralerts', 'friendly_name') }}. A {{ states.sensor.weatheralerts.attributes.alerts[4].title }}. {{ states.sensor.weatheralerts.attributes.alerts[4].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') | capitalize }}. - {% else %} - None - {% endif %} - spoken_message: > - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} - {% if states.sensor.weatheralerts.attributes.alerts[4].instruction != None %} - {{ states.sensor.weatheralerts.attributes.alerts[4].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} - {% endif %} - {% else %} - None - {% endif %} - - name: Weatheralerts Alert 1 Last Changed - unique_id: 3db32f1f-a6d3-4321-9078-2577d403f314 - state: >- - {% if states('sensor.weatheralerts_alert_1') == "on" %} - {{ states.sensor.weatheralerts_alert_1.last_updated }} - {% else %} - None - {% endif %} - - name: Weatheralerts Alert 2 Last Changed - unique_id: 75e746a0-b776-4dbb-b018-1e808a204f65 - state: >- - {% if states('sensor.weatheralerts_alert_2') == "on" %} - {{ states.sensor.weatheralerts_alert_2.last_updated }} - {% else %} - None - {% endif %} - - name: Weatheralerts Alert 3 Last Changed - unique_id: 4382f9a3-32bf-42f9-809f-ae33f33140b7 - state: >- - {% if states('sensor.weatheralerts_alert_3') == "on" %} - {{ states.sensor.weatheralerts_alert_3.last_updated }} - {% else %} - None - {% endif %} - - name: Weatheralerts Alert 4 Last Changed - unique_id: 4fbf5547-eac4-4ebf-b5fc-b043fafc0026 - state: >- - {% if states('sensor.weatheralerts_alert_4') == "on" %} - {{ states.sensor.weatheralerts_alert_4.last_updated }} - {% else %} - None - {% endif %} - - name: Weatheralerts Alert 5 Last Changed - unique_id: d7b66a73-8431-433c-8cd1-d413d726cb0a - state: >- - {% if states('sensor.weatheralerts_alert_5') == "on" %} - {{ states.sensor.weatheralerts_alert_5.last_updated }} - {% else %} - None - {% endif %} - - name: Weatheralerts Alert 1 Most Recent Active Alert - unique_id: 569944e9-b4cf-4ed2-9bed-40b2a0a9b898 - state: >- - {% if states('sensor.weatheralerts_alert_1_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_1') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_1_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_1') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_1_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_1') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_1') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_1', 'alert_event') }} - {% else %} - {{ states('sensor.weatheralerts_alert_1_most_recent_active_alert') }} - {% endif %} - attributes: - alert_effective: >- - {% if states('sensor.weatheralerts_alert_1_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_1') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_1_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_1') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_1_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_1') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_1') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_1', 'alert_effective') }} - {% else %} - {{ state_attr('sensor.weatheralerts_alert_1_most_recent_active_alert', 'alert_effective') }} - {% endif %} - alert_id: >- - {% if states('sensor.weatheralerts_alert_1_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_1') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_1_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_1') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_1_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_1') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_1') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_1', 'alert_id') }} - {% else %} - {{ state_attr('sensor.weatheralerts_alert_1_most_recent_active_alert', 'alert_id') }} - {% endif %} - - name: Weatheralerts Alert 2 Most Recent Active Alert - unique_id: 8112afda-58b9-4161-809c-9186212f86d7 - state: >- - {% if states('sensor.weatheralerts_alert_2_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_2') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_2_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_2') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_2_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_2') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_2') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_2', 'alert_event') }} - {% else %} - {{ states('sensor.weatheralerts_alert_2_most_recent_active_alert') }} - {% endif %} - attributes: - alert_effective: >- - {% if states('sensor.weatheralerts_alert_2_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_2') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_2_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_2') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_2_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_2') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_2') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_2', 'alert_effective') }} - {% else %} - {{ state_attr('sensor.weatheralerts_alert_2_most_recent_active_alert', 'alert_effective') }} - {% endif %} - alert_id: >- - {% if states('sensor.weatheralerts_alert_2_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_2') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_2_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_2') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_2_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_2') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_2') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_2', 'alert_id') }} - {% else %} - {{ state_attr('sensor.weatheralerts_alert_2_most_recent_active_alert', 'alert_id') }} - {% endif %} - - name: Weatheralerts Alert 3 Most Recent Active Alert - unique_id: f71f4ab7-0959-43e9-877a-22084b9642c3 - state: >- - {% if states('sensor.weatheralerts_alert_3_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_3') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_3_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_3') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_3_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_3') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_3') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_3', 'alert_event') }} - {% else %} - {{ states('sensor.weatheralerts_alert_3_most_recent_active_alert') }} - {% endif %} - attributes: - alert_effective: >- - {% if states('sensor.weatheralerts_alert_3_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_3') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_3_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_3') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_3_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_3') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_3') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_3', 'alert_effective') }} - {% else %} - {{ state_attr('sensor.weatheralerts_alert_3_most_recent_active_alert', 'alert_effective') }} - {% endif %} - alert_id: >- - {% if states('sensor.weatheralerts_alert_3_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_3') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_3_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_3') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_3_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_3') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_3') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_3', 'alert_id') }} - {% else %} - {{ state_attr('sensor.weatheralerts_alert_3_most_recent_active_alert', 'alert_id') }} - {% endif %} - - name: Weatheralerts Alert 4 Most Recent Active Alert - unique_id: e663e42b-a6b2-4a55-a3d9-1932b10fb0ca - state: >- - {% if states('sensor.weatheralerts_alert_4_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_4') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_4_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_4') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_4_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_4') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_4') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_4', 'alert_event') }} - {% else %} - {{ states('sensor.weatheralerts_alert_4_most_recent_active_alert') }} - {% endif %} - attributes: - alert_effective: >- - {% if states('sensor.weatheralerts_alert_4_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_4') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_4_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_4') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_4_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_4') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_4') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_4', 'alert_effective') }} - {% else %} - {{ state_attr('sensor.weatheralerts_alert_4_most_recent_active_alert', 'alert_effective') }} - {% endif %} - alert_id: >- - {% if states('sensor.weatheralerts_alert_4_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_4') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_4_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_4') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_4_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_4') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_4') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_4', 'alert_id') }} - {% else %} - {{ state_attr('sensor.weatheralerts_alert_4_most_recent_active_alert', 'alert_id') }} - {% endif %} - - name: Weatheralerts Alert 5 Most Recent Active Alert - unique_id: 523d7026-1fdd-4621-91c0-87e0bd98f14d - state: >- - {% if states('sensor.weatheralerts_alert_5_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_5') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_5_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_5') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_5_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_5') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_5') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_5', 'alert_event') }} - {% else %} - {{ states('sensor.weatheralerts_alert_5_most_recent_active_alert') }} - {% endif %} - attributes: - alert_effective: >- - {% if states('sensor.weatheralerts_alert_5_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_5') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_5_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_5') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_5_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_5') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_5') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_5', 'alert_effective') }} - {% else %} - {{ state_attr('sensor.weatheralerts_alert_5_most_recent_active_alert', 'alert_effective') }} - {% endif %} - alert_id: >- - {% if states('sensor.weatheralerts_alert_5_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_5') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_5_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_5') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_5_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_5') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_5') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_5', 'alert_id') }} - {% else %} - {{ state_attr('sensor.weatheralerts_alert_5_most_recent_active_alert', 'alert_id') }} - {% endif %} - - name: Weather Alerts Are Active - unique_id: 3f6ecba1-c102-4324-b56e-6d80ead0c829 - icon: mdi:alert-rhombus - state: > - {% if (states('sensor.weatheralerts') | int > 0) or ((states('sensor.weatheralerts') == 'unavailable') and (states('sensor.weatheralerts_alert_1') == 'on')) %} - Yes - {% else %} - No - {% endif %} -################################################################################ -## input_text ## - -input_text: - weatheralerts_triggered_ui_alert_ids: - name: Triggered Weather Alert IDs - UI - icon: mdi:information-variant - max: 255 - initial: None - - weatheralerts_triggered_pushbullet_alert_ids: - name: Triggered Weather Alert IDs - Pushbullet - icon: mdi:information-variant - max: 255 - initial: None - - weatheralerts_triggered_alert_ids: - name: Triggered Weather Alert IDs - Text - icon: mdi:information-variant - max: 255 - initial: None - - weatheralerts_triggered_audible_alert_ids: - name: Triggered Weather Alert IDs - Audible - icon: mdi:information-variant - max: 255 - initial: None - - -################################################################################ -## automation ## - -automation: - ## Automation to trigger a UI notification when there is an active weather alert. - ## weatheralerts_alert_1 should always contain most recent alert. - - id: fd0b5635-8079-49df-899e-49d1a5871c77 - alias: Weather Alert UI Notification - 1 - initial_state: true - trigger: - - platform: state - entity_id: sensor.weatheralerts_alert_1_last_changed - - platform: homeassistant - event: start - condition: - - condition: and - conditions: - - condition: template - value_template: "{{ states('sensor.weatheralerts_alerts_are_active') == 'Yes' }}" - - condition: template - value_template: "{{ (as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_alert_1', 'alert_sent'))) < 3600 }}" - - condition: template - value_template: "{{ state_attr('sensor.weatheralerts_alert_1', 'alert_id') not in states('input_text.weatheralerts_triggered_ui_alert_ids') }}" - action: - - service: script.weatheralerts_popup_on_wx_alert - data: - title: > - {% if (states('sensor.weatheralerts_alert_1') == 'on') and ((as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_alert_1', 'alert_effective'))|float) <= 3600) %} - {{ state_attr('sensor.weatheralerts_alert_1', 'display_title') }} - {% else %} - Weather Alerts - {% endif %} - message: > - {% if (states('sensor.weatheralerts_alert_1') == 'on') and ((as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_alert_1', 'alert_effective'))|float) <= 3600) %} - {{ state_attr('sensor.weatheralerts_alert_1', 'display_message') }} - {% endif %} - {% if (states('sensor.weatheralerts_alert_1') == 'on') and ((as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_alert_1', 'alert_effective'))|float) > 3600) %} -


Alert:
{{ state_attr('sensor.weatheralerts_alert_1', 'display_title') }} - {% endif %} - {% if (states('sensor.weatheralerts_alert_2') == 'on') and ((as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_alert_2', 'alert_effective'))|float) <= 3600) %} -
{{ state_attr('sensor.weatheralerts_alert_2', 'display_title') }}
- {{ state_attr('sensor.weatheralerts_alert_2', 'display_message') }} - {% endif %} - {% if (states('sensor.weatheralerts_alert_2') == 'on') and ((as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_alert_2', 'alert_effective'))|float) > 3600) %} -
Alert:
{{ state_attr('sensor.weatheralerts_alert_2', 'display_title') }} - {% endif %} - {% if (states('sensor.weatheralerts_alert_3') == 'on') and ((as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_alert_3', 'alert_effective'))|float) <= 3600) %} -
{{ state_attr('sensor.weatheralerts_alert_3', 'display_title') }}
- {{ state_attr('sensor.weatheralerts_alert_3', 'display_message') }} - {% endif %} - {% if (states('sensor.weatheralerts_alert_3') == 'on') and ((as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_alert_3', 'alert_effective'))|float) > 3600) %} -
Alert:
{{ state_attr('sensor.weatheralerts_alert_3', 'display_title') }} - {% endif %} - {% if (states('sensor.weatheralerts_alert_4') == 'on') and ((as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_alert_4', 'alert_effective'))|float) <= 3600) %} -
{{ state_attr('sensor.weatheralerts_alert_4', 'display_title') }}
- {{ state_attr('sensor.weatheralerts_alert_4', 'display_message') }} - {% endif %} - {% if (states('sensor.weatheralerts_alert_4') == 'on') and ((as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_alert_4', 'alert_effective'))|float) > 3600) %} -
Alert:
{{ state_attr('sensor.weatheralerts_alert_4', 'display_title') }} - {% endif %} - {% if (states('sensor.weatheralerts_alert_5') == 'on') and ((as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_alert_5', 'alert_effective'))|float) <= 3600) %} -
{{ state_attr('sensor.weatheralerts_alert_5', 'display_title') }}
- {{ state_attr('sensor.weatheralerts_alert_5', 'display_message') }} - {% endif %} - {% if (states('sensor.weatheralerts_alert_5') == 'on') and ((as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_alert_5', 'alert_effective'))|float) > 3600) %} -
Alert:
{{ state_attr('sensor.weatheralerts_alert_5', 'display_title') }} - {% endif %} - - service: input_text.set_value - data: - entity_id: input_text.weatheralerts_triggered_ui_alert_ids - value: "{{ state_attr('sensor.weatheralerts_alert_1', 'alert_id') }} {{ state_attr('sensor.weatheralerts_alert_2', 'alert_id') }} {{ state_attr('sensor.weatheralerts_alert_3', 'alert_id') }} {{ state_attr('sensor.weatheralerts_alert_4', 'alert_id') }} {{ state_attr('sensor.weatheralerts_alert_5', 'alert_id') }}" - - ## Automation to dismiss UI notification if there are no active alerts for 30 minutes - ## Disable or remove this automation if you don't want notifications to auto-dismiss - - id: a550cbf6-7745-405c-9548-5c2afdf52c34 - alias: Weather Alert UI Notification Auto-dismiss - 1 - trigger: - - platform: state - entity_id: sensor.weatheralerts_alerts_are_active - to: "No" - for: - minutes: 30 - - platform: homeassistant - event: start - condition: - - condition: template - value_template: "{{ states('sensor.weatheralerts_alerts_are_active') == 'No' }}" - action: - - service: persistent_notification.dismiss - data: - notification_id: "weatheralerts_alert" - - ## Automation to push alerts via Pushbullet service - ## Disable or remove this automation if you don't use Pushbullet - - id: 5145b56e-6db9-4352-a25d-376cebb191ff - alias: Weather Alerts Notification - 1 - trigger: - platform: state - entity_id: sensor.weatheralerts_alert_1_last_changed - condition: - - condition: and - conditions: - - condition: template - value_template: "{{ states('sensor.weatheralerts_alerts_are_active') == 'Yes' }}" - - condition: template - value_template: "{{ (as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_alert_1', 'alert_sent'))) < 3600 }}" - - condition: template - value_template: "{{ state_attr('sensor.weatheralerts_alert_1', 'alert_id') not in states('input_text.weatheralerts_triggered_alert_ids') }}" - action: - - service: notify.notify - data: - message: > - Current NWS Weather Alerts: - - {% if states('sensor.weatheralerts_alerts_are_active') == "No" %} - No alerts at this time for {{ state_attr('sensor.weatheralerts', 'friendly_name') }}. - {% endif %} - {% if states.sensor.weatheralerts_alert_1.state == "on" %} - {{ states.sensor.weatheralerts_alert_1.attributes.display_title }} for {{ state_attr('sensor.weatheralerts', 'friendly_name') }} - - {% endif %} - {% if states.sensor.weatheralerts_alert_2.state == "on" %} - {{ states.sensor.weatheralerts_alert_2.attributes.display_title }} for {{ state_attr('sensor.weatheralerts', 'friendly_name') }} - - {% endif %} - {% if states.sensor.weatheralerts_alert_3.state == "on" %} - {{ states.sensor.weatheralerts_alert_3.attributes.display_title }} for {{ state_attr('sensor.weatheralerts', 'friendly_name') }} - - {% endif %} - {% if states.sensor.weatheralerts_alert_4.state == "on" %} - {{ states.sensor.weatheralerts_alert_4.attributes.display_title }} for {{ state_attr('sensor.weatheralerts', 'friendly_name') }} - - {% endif %} - {% if states.sensor.weatheralerts_alert_5.state == "on" %} - {{ states.sensor.weatheralerts_alert_5.attributes.display_title }} for {{ state_attr('sensor.weatheralerts', 'friendly_name') }} - {% endif %} - - service: input_text.set_value - data: - entity_id: input_text.weatheralerts_triggered_alert_ids - value: "{{ state_attr('sensor.weatheralerts_alert_1', 'alert_id') }} {{ state_attr('sensor.weatheralerts_alert_2', 'alert_id') }} {{ state_attr('sensor.weatheralerts_alert_3', 'alert_id') }} {{ state_attr('sensor.weatheralerts_alert_4', 'alert_id') }} {{ state_attr('sensor.weatheralerts_alert_5', 'alert_id') }}" - - # - alias: NWS Notification Weather Alert - # trigger: - # - platform: numeric_state - # entity_id: sensor.weatheralerts_active_alerts - # attribute: warning_count - # above: 0 - # - platform: numeric_state - # entity_id: sensor.weatheralerts_active_alerts - # attribute: watch_count - # above: 0 - # action: - # - service: script.text_notify - # data: - # title: "Weather Alert for Anchorage House" - # message: > - # There are currently {{ state_attr('sensor.weatheralerts_active_alerts', 'warning_count') | int }} active warnings and {{ state_attr('sensor.weatheralerts_active_alerts', 'watch_count') | int }} watches for our area. - - - # Announce Severe Weather - - id: b1bdfbf9-d82e-436f-bc60-77c3abfb077b - alias: NWS Announce Weather Alert - trigger: - - platform: numeric_state - entity_id: sensor.weatheralerts_active_alerts - attribute: tstorm_warning_count - above: 0 - id: tstorm-warning - - platform: numeric_state - entity_id: sensor.weatheralerts_active_alerts - attribute: tornado_watch_count - above: 0 - id: tornado-watch - - platform: numeric_state - entity_id: sensor.weatheralerts_active_alerts - attribute: tstorm_watch_count - above: 0 - id: tstorm-watch - - platform: numeric_state - entity_id: sensor.weatheralerts_active_alerts - attribute: freeze_warning_count - above: 0 - id: freeze-warning - condition: - - condition: and - conditions: - - condition: template - value_template: "{{ states('sensor.weatheralerts_alerts_are_active') == 'Yes' }}" - - condition: template - value_template: "{{ (as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_alert_1', 'alert_sent'))) < 3600 }}" - - condition: template - value_template: "{{ state_attr('sensor.weatheralerts_alert_1', 'alert_id') not in states('input_text.weatheralerts_triggered_audible_alert_ids') }}" - action: - - choose: - - conditions: - - condition: trigger - id: tstorm-warning - sequence: - - service: script.status_annc - data: - who: everywhere - type: weather - call_interruption: 1 - call_thunderstorm_warning: 1 - - conditions: - - condition: trigger - id: tornado-watch - sequence: - - service: script.status_annc - data: - who: everywhere - type: weather - call_interruption: 1 - call_tornado_watch: 1 - - conditions: - - condition: trigger - id: tstorm-watch - sequence: - - service: script.status_annc - data: - who: everywhere - type: weather - call_interruption: 1 - call_thunderstorm_watch: 1 - - conditions: - - condition: trigger - id: freeze-warning - sequence: - - service: script.status_annc - data: - who: everywhere - type: weather - call_interruption: 1 - call_freeze_warning: 1 - - service: input_text.set_value - data: - entity_id: input_text.weatheralerts_triggered_audible_alert_ids - value: "{{ state_attr('sensor.weatheralerts_alert_1', 'alert_id') }} {{ state_attr('sensor.weatheralerts_alert_2', 'alert_id') }} {{ state_attr('sensor.weatheralerts_alert_3', 'alert_id') }} {{ state_attr('sensor.weatheralerts_alert_4', 'alert_id') }} {{ state_attr('sensor.weatheralerts_alert_5', 'alert_id') }}" - - # - id: 04b1119f-4e30-4ae3-ae50-632ac521c871 - # alias: Lightning Detected - # trigger: - # - platform: state - # entity_id: binary_sensor.lightning_warning - # from: 'off' - # to: 'on' - # action: - # - service: script.lightning_warning - - - # - id: df317cd2-b5c6-43a7-a587-844403a4a0ad - # alias: Lightning Warning Off - # trigger: - # - platform: state - # entity_id: binary_sensor.lightning_warning - # from: 'on' - # to: 'off' - # action: - # - service: script.lightning_clear - - - - id: 9e34264f-b3c8-4537-ba31-b5915f2fd326 - alias: NWS Freeze Warning - trigger: - - platform: numeric_state - entity_id: sensor.weatheralerts_active_alerts - attribute: freeze_warning_count - above: 0 - action: - - service: input_boolean.turn_on - entity_id: input_boolean.freeze_warning - - -################################################################################ -## script ## - -script: - # lightning_warning: - # alias: 'Lightning Warning' - # sequence: - # - service: script.text_notify - # data: - # type: alert - # who: 'all' - # title: "Lightning Detected!" - # message: >- - # {% set ltgdist = (states('sensor.blitzortung_lightning_distance') | int) / 1.609 | round %} - # "Lightning has been detected within 20 miles of the house. Nearest storm is {{ ltgdist }} miles away." - # tag: lightning-warning - # - if: - # - condition: state - # entity_id: binary_sensor.audible_weather_alerts_allowed - # state: 'on' - # then: - # - service: scene.create - # data: - # scene_id: lightning_alert_restore - # snapshot_entities: - # - light.tina_lamp_side - # - light.tina_lamp_top - # - switch.adaptive_lighting_living_room - # - switch.adaptive_lighting_tina_lamp - # - service: switch.turn_off - # target: - # entity_id: - # - switch.adaptive_lighting_tina_lamp - # - delay: - # milliseconds: 500 - # - service: light.turn_on - # target: - # entity_id: - # - light.tina_lamp_side - # - light.tina_lamp_top - # data: - # color_name: red - # - service: script.living_room_lights_alert - # data: - # type: red - # duration: 10 - # - service: script.status_annc - # data: - # who: common - # type: weather - # call_interruption: 1 - # call_lightning_alert: 1 - # - delay: - # seconds: 10 - # - service: scene.turn_on - # target: - # entity_id: scene.lightning_alert_restore - - # lightning_clear: - # alias: 'Lightning Clear' - # sequence: - # - service: script.text_notify - # data: - # type: alert - # who: all - # message: clear_notification - # tag: lightning-warning - # - service: script.status_annc - # data: - # who: common - # type: weather - # call_interruption: 1 - # call_lightning_clear: 1 - # - service: script.text_notify - # data: - # type: alert - # who: 'all' - # title: "Lightning Clear" - # message: "The lightning threat has passed. It is safe to resume normal activities." - - ## Script creates UI notification and is called via automation defined above - weatheralerts_popup_on_wx_alert: - alias: Weather Alert Pop Up - 1 - sequence: - ## Dismiss any current alert so the UI isn't filled - ## up with these if there are more then one. - ## Only show the most recent alert - - service: persistent_notification.dismiss - data: - notification_id: "weatheralerts_alert" - ## Create a new persistant notification in the UI for a new alert - - if: - - condition: template - value_template: "{{ states.sensor.weatheralerts.state != '0' }}" - then: - - service: persistent_notification.create - data: - notification_id: "weatheralerts_alert" - message: "{{ message }}" - title: "{{ title }}" diff --git a/templates/speech/weather_briefing_full.yaml b/templates/speech/weather_briefing_full.yaml index f42fc8a..7cdc306 100644 --- a/templates/speech/weather_briefing_full.yaml +++ b/templates/speech/weather_briefing_full.yaml @@ -38,7 +38,7 @@

{% set alerts = states('weather_alerts_active_corrected') %} - {% if states('sensor.weatheralerts_active_alerts') > '0' %} + {% if states('sensor.weatheralerts_defiance_ohz004_ohc039') > '0' %} "There {% if alerts == '1' %}is{% else %}are{% endif %} {{ states('sensor.weather_alerts_active_corrected') }} weather {% if alerts == '1' %}alert{% else %}alerts{% endif %} active. " "{% if alerts == '1' %}It is{% else %}They are{% endif %}, " {{ states('sensor.weather_alert_string') }}.