commit 25b434a93b20260e435c22c6c72756abe6ec46c2 Author: Tony Stork Date: Sun Jan 2 14:56:19 2022 -0500 Initial Commit diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfd63ea --- /dev/null +++ b/.gitattributes @@ -0,0 +1,173 @@ +## GITATTRIBUTES FOR WEB PROJECTS +# +# These settings are for any web project. +# +# Details per file setting: +# text These files should be normalized (i.e. convert CRLF to LF). +# binary These files are binary and should be left untouched. +# +# Note that binary is a macro for -text -diff. +###################################################################### + +## AUTO-DETECT - Handle line endings automatically for files detected +## as text and leave all files detected as binary untouched. +## This will handle all files NOT defined below. +* text=auto + +## SOURCE CODE +*.bat text +*.coffee text +*.css text +*.htm text +*.html text +*.inc text +*.ini text +*.js text +*.jsx text +*.json text +*.less text +*.php text +*.pl text +*.py text +*.rb text +*.sass text +*.scm text +*.scss text +*.sh text +*.sql text +*.styl text +*.ts text +*.xml text +*.xhtml text + +## DOCUMENTATION +*.markdown text +*.md text +*.mdwn text +*.mdown text +*.mkd text +*.mkdn text +*.mdtxt text +*.mdtext text +*.txt text +AUTHORS text +CHANGELOG text +CHANGES text +CONTRIBUTING text +COPYING text +INSTALL text +license text +LICENSE text +NEWS text +readme text +*README* text +TODO text + +## TEMPLATES +*.dot text +*.ejs text +*.haml text +*.handlebars text +*.hbs text +*.hbt text +*.jade text +*.latte text +*.mustache text +*.phtml text +*.tmpl text + +## LINTERS +.csslintrc text +.eslintrc text +.jscsrc text +.jshintrc text +.jshintignore text +.stylelintrc text + +## CONFIGS +*.bowerrc text +*.cnf text +*.conf text +*.config text +.editorconfig text +.gitattributes text +.gitconfig text +.gitignore text +.htaccess text +*.npmignore text +*.yaml text +*.yml text +Makefile text +makefile text + +## HEROKU +Procfile text +.slugignore text + +## GRAPHICS +*.ai binary +*.bmp binary +*.eps binary +*.gif binary +*.ico binary +*.jng binary +*.jp2 binary +*.jpg binary +*.jpeg binary +*.jpx binary +*.jxr binary +*.pdf binary +*.png binary +*.psb binary +*.psd binary +*.svg text +*.svgz binary +*.tif binary +*.tiff binary +*.wbmp binary +*.webp binary + +## AUDIO +*.kar binary +*.m4a binary +*.mid binary +*.midi binary +*.mp3 binary +*.ogg binary +*.ra binary + +## VIDEO +*.3gpp binary +*.3gp binary +*.as binary +*.asf binary +*.asx binary +*.fla binary +*.flv binary +*.m4v binary +*.mng binary +*.mov binary +*.mp4 binary +*.mpeg binary +*.mpg binary +*.swc binary +*.swf binary +*.webm binary + +## ARCHIVES +*.7z binary +*.gz binary +*.rar binary +*.tar binary +*.zip binary + +## FONTS +*.ttf binary +*.eot binary +*.otf binary +*.woff binary +*.woff2 binary + +## EXECUTABLES +*.exe binary +*.pyc binary diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..05100de --- /dev/null +++ b/.gitignore @@ -0,0 +1,62 @@ +# ignore hidden folders +/.storage +/.cloud +/.google.token + +# ignore some directories. +/icloud/ +/www/ +/tts/ +/deps/ +/hadashboards/ +/intents/ +/themes/ +/custom_components +/deps +/hacs +/image +/node-red + + +# ignore any of these files no matter where they are using double * +**.DS_Store +**._* +**.HA_VERSION +**.pyc +**.conf +**.uuid +**.txt +**.log +**.db +**.sqlite +**.xml +**secrets* +**known_devices.yaml +**google_calendars.yaml +**ip_bans.yaml +**.spotify-token-cache +**zones.yaml +**test.yaml +**testing.yaml +**.homekit* +**.vscode +**.pid +**.xml +**.csr +**.crt +**.key +**core.* +**OZW_Log.txt +**home-assistant.log +**home-assistant_v2.db +**.db-journal +**.db-shm +**.db-wal +**.sqlite +**__pycache__ +**phue.conf +**ios.conf +**pyozw.sqlite +**ipchange.yaml +**production_auth.json +**.log* diff --git a/automations.yaml b/automations.yaml new file mode 100644 index 0000000..3d871a9 --- /dev/null +++ b/automations.yaml @@ -0,0 +1,247 @@ +- id: '1640833273099' + alias: NWS Announce Weather Alert for Tornado + description: '' + trigger: + - platform: numeric_state + entity_id: sensor.weatheralerts_1_active_alerts + attribute: tornado_warning_count + above: '0' + condition: [] + action: + - service: switch.turn_off + target: + entity_id: + - switch.adaptive_lighting_basement_studio + - switch.adaptive_lighting_kallen_bedroom + - switch.adaptive_lighting_living_room + - switch.adaptive_lighting_master_bedroom + - switch.adaptive_lighting_mud_room + - switch.adaptive_lighting_nursery + - switch.adaptive_lighting_upstairs_hallway + - service: scene.turn_on + target: + entity_id: + - scene.basement_studio_bright + - scene.front_porch_bright + - scene.furnace_room_bright + - scene.kallen_bedroom_bright + - scene.living_room_bright + - scene.master_bedroom_bright + - scene.mud_room_bright + - scene.nursery_bright + - scene.upstairs_hallway_bright + - service: notify.notify + data: + title: Tornado Warning - TAKE COVER! + message: The National Weather Service has issued a Tornado Warning for our area. + Take Cover NOW!!!! + - service: notify.alexa_media + data: + data: + method: all + type: announce + 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! + target: Living Room Echo Dot, Basement Echo Dot + - delay: + hours: 0 + minutes: 1 + seconds: 0 + milliseconds: 0 + - service: notify.alexa_media + data: + data: + method: all + type: announce + 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! + target: Living Room Echo Dot, Basement Echo Dot + mode: single +- id: '1640916845901' + alias: Cast to Chromecast + description: '' + use_blueprint: + path: kind3r/cast-and-re-cast-a-lovelace-view-to-a-google-hub.yaml + input: + dashboard: lovelace + player: media_player.living_room_tv + view: chromecast +- id: '1640989510134' + alias: New Years + description: Flash lights for New Years + trigger: + - platform: time + at: 00:00:00 + condition: [] + action: + - service: light.turn_off + target: + area_id: + - basement_studio + - furnace_room + - kallen_bedroom + - living_room + - master_bedroom + - mud_room + - nursery + - upstairs_hallway + - service: switch.turn_off + target: + entity_id: + - switch.adaptive_lighting_basement_studio + - switch.adaptive_lighting_kallen_bedroom + - switch.adaptive_lighting_living_room + - switch.adaptive_lighting_master_bedroom + - switch.adaptive_lighting_mud_room + - switch.adaptive_lighting_nursery + - switch.adaptive_lighting_upstairs_hallway + - service: notify.alexa_media + data: + target: Living Room Echo Dot + message: Happy new year! Here's to 2022! + data: + method: all + type: announce + - delay: + hours: 0 + minutes: 0 + seconds: 2 + milliseconds: 0 + - service: light.turn_on + target: + entity_id: + - light.hallway_overhead + - light.kallen_bedroom_light + - light.living_room_overhead_1 + - light.living_room_overhead_2 + - light.master_bedroom_front + - light.master_bedroom_side + - light.mud_room_overhead + - light.nursery_light + data: + flash: long + - delay: + hours: 0 + minutes: 0 + seconds: 15 + milliseconds: 0 + - service: light.turn_off + target: + area_id: + - basement_studio + - furnace_room + - kallen_bedroom + - living_room + - master_bedroom + - mud_room + - nursery + - upstairs_hallway + - delay: + hours: 0 + minutes: 0 + seconds: 1 + milliseconds: 500 + - service: switch.turn_on + target: + entity_id: + - switch.adaptive_lighting_basement_studio + - switch.adaptive_lighting_kallen_bedroom + - switch.adaptive_lighting_living_room + - switch.adaptive_lighting_master_bedroom + - switch.adaptive_lighting_mud_room + - switch.adaptive_lighting_nursery + - switch.adaptive_lighting_upstairs_hallway + - delay: + hours: 0 + minutes: 0 + seconds: 1 + milliseconds: 500 + - service: light.turn_on + target: + area_id: + - living_room + - mud_room + mode: single +- id: '1641101491581' + alias: Family Has Arrived + description: Runs when family arrives at home + trigger: + - platform: zone + entity_id: person.christina_stork + zone: zone.home + event: enter + - platform: zone + entity_id: person.tony_stork + zone: zone.home + event: enter + - platform: state + entity_id: input_boolean.family_is_home + from: 'off' + to: 'on' + condition: + - condition: state + entity_id: input_boolean.family_is_home + state: 'off' + - condition: state + entity_id: binary_sensor.night + state: 'on' + action: + - service: input_boolean.turn_on + target: + entity_id: input_boolean.family_is_home + - service: alarm_control_panel.alarm_disarm + target: + entity_id: alarm_control_panel.alexa_guard_9ee3b + - service: light.turn_on + target: + area_id: + - living_room + - mud_room + data: {} + - service: light.turn_off + target: + area_id: + - furnace_room + - kallen_bedroom + - nursery + - master_bedroom + - upstairs_hallway + - basement_studio + mode: single +- id: '1641102018783' + alias: Family Has Left + description: Runs when the family has left home + trigger: + - platform: state + entity_id: group.family + from: home + to: not_home + - platform: state + entity_id: input_boolean.family_is_home + from: 'on' + to: 'off' + condition: + - condition: state + entity_id: input_boolean.family_is_home + state: 'on' + action: + - service: input_boolean.turn_off + target: + entity_id: input_boolean.family_is_home + - service: light.turn_off + target: + area_id: + - basement_studio + - furnace_room + - kallen_bedroom + - living_room + - master_bedroom + - mud_room + - nursery + - upstairs_hallway + - service: alarm_control_panel.alarm_arm_away + target: + entity_id: alarm_control_panel.alexa_guard_9ee3b + mode: single diff --git a/binary_sensor.yaml b/binary_sensor.yaml new file mode 100644 index 0000000..de2ed9a --- /dev/null +++ b/binary_sensor.yaml @@ -0,0 +1,9 @@ +- platform: workday + country: US + province: OH + workdays: [mon, tue, wed, thu, fri] +- platform: tod + name: Night + after: sunset + after_offset: "-00:30" + before: sunrise diff --git a/blueprints/automation/homeassistant/motion_light.yaml b/blueprints/automation/homeassistant/motion_light.yaml new file mode 100644 index 0000000..54a4a4f --- /dev/null +++ b/blueprints/automation/homeassistant/motion_light.yaml @@ -0,0 +1,54 @@ +blueprint: + name: Motion-activated Light + description: Turn on a light when motion is detected. + domain: automation + source_url: https://github.com/home-assistant/core/blob/dev/homeassistant/components/automation/blueprints/motion_light.yaml + input: + motion_entity: + name: Motion Sensor + selector: + entity: + domain: binary_sensor + device_class: motion + light_target: + name: Light + selector: + target: + entity: + domain: light + no_motion_wait: + name: Wait time + description: Time to leave the light on after last motion is detected. + default: 120 + selector: + number: + min: 0 + max: 3600 + unit_of_measurement: seconds + +# If motion is detected within the delay, +# we restart the script. +mode: restart +max_exceeded: silent + +trigger: + platform: state + entity_id: !input motion_entity + from: "off" + to: "on" + +action: + - alias: "Turn on the light" + service: light.turn_on + target: !input light_target + - alias: "Wait until there is no motion from device" + wait_for_trigger: + platform: state + entity_id: !input motion_entity + from: "on" + to: "off" + - alias: "Wait the number of seconds that has been set" + delay: !input no_motion_wait + - alias: "Turn off the light" + service: light.turn_off + target: !input light_target diff --git a/blueprints/automation/homeassistant/notify_leaving_zone.yaml b/blueprints/automation/homeassistant/notify_leaving_zone.yaml new file mode 100644 index 0000000..71abf8f --- /dev/null +++ b/blueprints/automation/homeassistant/notify_leaving_zone.yaml @@ -0,0 +1,44 @@ +blueprint: + name: Zone Notification + description: Send a notification to a device when a person leaves a specific zone. + domain: automation + source_url: https://github.com/home-assistant/core/blob/dev/homeassistant/components/automation/blueprints/notify_leaving_zone.yaml + input: + person_entity: + name: Person + selector: + entity: + domain: person + zone_entity: + name: Zone + selector: + entity: + domain: zone + notify_device: + name: Device to notify + description: Device needs to run the official Home Assistant app to receive notifications. + selector: + device: + integration: mobile_app + +trigger: + platform: state + entity_id: !input person_entity + +variables: + zone_entity: !input zone_entity + # This is the state of the person when it's in this zone. + zone_state: "{{ states[zone_entity].name }}" + person_entity: !input person_entity + person_name: "{{ states[person_entity].name }}" + +condition: + condition: template + value_template: "{{ trigger.from_state.state == zone_state and trigger.to_state.state != zone_state }}" + +action: + - alias: "Notify that a person has left the zone" + domain: mobile_app + type: notify + device_id: !input notify_device + message: "{{ person_name }} has left {{ zone_state }}" diff --git a/blueprints/automation/kind3r/cast-and-re-cast-a-lovelace-view-to-a-google-hub.yaml b/blueprints/automation/kind3r/cast-and-re-cast-a-lovelace-view-to-a-google-hub.yaml new file mode 100644 index 0000000..d7353db --- /dev/null +++ b/blueprints/automation/kind3r/cast-and-re-cast-a-lovelace-view-to-a-google-hub.yaml @@ -0,0 +1,75 @@ +blueprint: + name: Cast to Google Hub + description: Cast a lovelace view to a Google Hub. This tries to bypass the 10 min + timeout for the picture frame by re-casting every 9 min + domain: automation + input: + player: + name: Google Hub + description: Google Hub or Chromecast device to cast to + selector: + entity: + integration: cast + view: + name: Lovelace view path + description: Path of the view to cast. A path has to be defined in your Lovelace + YAML for each view, as outlined in the views documentation. + dashboard: + name: Lovelace dashboard + description: Path to lovelace. Defaults to 'lovelace' if empty. + default: lovelace + source_url: https://community.home-assistant.io/t/cast-and-re-cast-a-lovelace-view-to-a-google-hub/259631 +trigger: +- platform: state + entity_id: !input 'player' + to: 'off' + for: 00:00:20 +- platform: state + entity_id: !input 'player' + to: paused + for: 00:00:20 +- platform: time_pattern + minutes: /9 +- platform: time_pattern + minutes: '0' +action: +- choose: + - conditions: + - condition: or + conditions: + - condition: state + entity_id: !input 'player' + state: 'off' + - condition: state + entity_id: !input 'player' + state: paused + for: 00:00:20 + sequence: + - service: media_player.volume_mute + data: + is_volume_muted: true + entity_id: !input 'player' + - service: media_player.turn_off + data: + entity_id: !input 'player' + - delay: + seconds: 2 + - service: media_player.turn_on + data: + entity_id: !input 'player' + - service: cast.show_lovelace_view + data: + view_path: !input 'view' + dashboard_path: !input 'dashboard' + entity_id: !input 'player' + - service: cast.show_lovelace_view + data: + view_path: !input 'view' + dashboard_path: !input 'dashboard' + entity_id: !input 'player' + - delay: + seconds: 10 + - service: media_player.volume_mute + data: + is_volume_muted: false + entity_id: !input 'player' diff --git a/blueprints/script/homeassistant/confirmable_notification.yaml b/blueprints/script/homeassistant/confirmable_notification.yaml new file mode 100644 index 0000000..d52e5a6 --- /dev/null +++ b/blueprints/script/homeassistant/confirmable_notification.yaml @@ -0,0 +1,84 @@ +blueprint: + name: Confirmable Notification + description: >- + A script that sends an actionable notification with a confirmation before + running the specified action. + domain: script + source_url: https://github.com/home-assistant/core/blob/master/homeassistant/components/script/blueprints/confirmable_notification.yaml + input: + notify_device: + name: Device to notify + description: Device needs to run the official Home Assistant app to receive notifications. + selector: + device: + integration: mobile_app + title: + name: "Title" + description: "The title of the button shown in the notification." + default: "" + selector: + text: + message: + name: "Message" + description: "The message body" + selector: + text: + confirm_text: + name: "Confirmation Text" + description: "Text to show on the confirmation button" + default: "Confirm" + selector: + text: + confirm_action: + name: "Confirmation Action" + description: "Action to run when notification is confirmed" + default: [] + selector: + action: + dismiss_text: + name: "Dismiss Text" + description: "Text to show on the dismiss button" + default: "Dismiss" + selector: + text: + dismiss_action: + name: "Dismiss Action" + description: "Action to run when notification is dismissed" + default: [] + selector: + action: + +mode: restart + +sequence: + - alias: "Set up variables" + variables: + action_confirm: "{{ 'CONFIRM_' ~ context.id }}" + action_dismiss: "{{ 'DISMISS_' ~ context.id }}" + - alias: "Send notification" + domain: mobile_app + type: notify + device_id: !input notify_device + title: !input title + message: !input message + data: + actions: + - action: "{{ action_confirm }}" + title: !input confirm_text + - action: "{{ action_dismiss }}" + title: !input dismiss_text + - alias: "Awaiting response" + wait_for_trigger: + - platform: event + event_type: mobile_app_notification_action + event_data: + action: "{{ action_confirm }}" + - platform: event + event_type: mobile_app_notification_action + event_data: + action: "{{ action_dismiss }}" + - choose: + - conditions: "{{ wait.trigger.event.data.action == action_confirm }}" + sequence: !input confirm_action + - conditions: "{{ wait.trigger.event.data.action == action_dismiss }}" + sequence: !input dismiss_action diff --git a/cameras.yaml b/cameras.yaml new file mode 100644 index 0000000..cd5a5d1 --- /dev/null +++ b/cameras.yaml @@ -0,0 +1,3 @@ + - platform: generic + still_image_url: https://radblast.wunderground.com/cgi-bin/radar/WUNIDS_map?num=20&type=N0Q&mapx=400&mapy=240&brand=wui&delay=15&frame=0&scale=0.5413043478260869&transx=-66.83635825614692&transy=26.09366154044801&severe=1&smooth=1¢erx=333.1636417438531¢ery=266.093661540448&station=IWX&rainsnow=0&lightning=0&noclutter=1&showlabels=1&showstorms=0&rand=27322492 + name: Defiance Weather Radar diff --git a/configuration.yaml b/configuration.yaml new file mode 100644 index 0000000..2d5310e --- /dev/null +++ b/configuration.yaml @@ -0,0 +1,34 @@ +homeassistant: + packages: !include_dir_named packages +# Configure a default setup of Home Assistant (frontend, api, etc) +default_config: + +# Text to speech +tts: + - platform: google_translate + +group: !include groups.yaml +automation: !include automations.yaml +script: !include scripts.yaml +scene: !include scenes.yaml +camera: !include cameras.yaml +input_boolean: !include input_boolean.yaml +binary_sensor: !include binary_sensor.yaml +sensor: !include sensor.yaml + +media_player: + - platform: androidtv + name: Living Room FireTV + host: 192.168.1.56 + state_detection_rules: + 'com.amazon.tv.launcher': + - 'standby' + 'com.netflix.ninja': + - 'media_session_state' + 'com.amazon.avod': + - 'standby' + +frontend: + themes: !include_dir_merge_named themes + extra_module_url: + - /hacsfiles/hass-hue-icons/hass-hue-icons.js diff --git a/groups.yaml b/groups.yaml new file mode 100644 index 0000000..f6ec054 --- /dev/null +++ b/groups.yaml @@ -0,0 +1,8 @@ +Family: + - person.tony_stork + - person.christina_stork + +Xbox In Game: + - binary_sensor.kjsgamer2012_in_game + - binary_sensor.irishpirate1988_in_game + - binary_sensor.tm24fan_in_game diff --git a/input_boolean.yaml b/input_boolean.yaml new file mode 100644 index 0000000..e69de29 diff --git a/packages/weatheralerts.yaml b/packages/weatheralerts.yaml new file mode 100644 index 0000000..d164d0e --- /dev/null +++ b/packages/weatheralerts.yaml @@ -0,0 +1,1470 @@ +################################################################################ +# +# weatheralerts_1.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 sensor Entity ID to sensor.weatheralerts_1 and +# you shouldn't need to alter anything else in this yaml package to make it +# all work. +# +# This yaml package stores up to 5 most recent active alerts from the +# weather alerts feed and places them in these sensors: +# +# sensor.weatheralerts_1_alert_1 +# sensor.weatheralerts_1_alert_2 +# sensor.weatheralerts_1_alert_3 +# sensor.weatheralerts_1_alert_4 +# sensor.weatheralerts_1_alert_5 +# +# Additional sensors available: +# sensor.weatheralerts_1_active_alerts (contains number of active alerts) +# weatheralerts_1_alerts_are_active (contains either Yes or No) +# sensor.weatheralerts_1_alert_1_last_changed +# sensor.weatheralerts_1_alert_2_last_changed +# sensor.weatheralerts_1_alert_3_last_changed +# sensor.weatheralerts_1_alert_4_last_changed +# sensor.weatheralerts_1_alert_5_last_changed +# sensor.weatheralerts_1_alert_1_most_recent_active_alert +# sensor.weatheralerts_1_alert_2_most_recent_active_alert +# sensor.weatheralerts_1_alert_3_most_recent_active_alert +# sensor.weatheralerts_1_alert_4_most_recent_active_alert +# sensor.weatheralerts_1_alert_5_most_recent_active_alert +# +################################################################################ + + + + +################################################################################ +## sensor ## + +sensor: + - platform: weatheralerts + state: OH + zone: 4 + county: 39 + - platform: template + sensors: + weatheralerts_1_active_alerts: + ## You can add your county or city name to friendly_name for personalization + ## For example: Weather Alerts for YourCountyName + friendly_name: Weather Alerts + unit_of_measurement: Alerts + icon_template: mdi:alert-rhombus + value_template: >- + {% set alerts_total = namespace(count=0) %} + {% if (state_attr('sensor.weatheralerts_1', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts_1', 'alerts') %} + {% if as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0 %} + {% set alerts_total.count = alerts_total.count + 1 %} + {% endif %} + {% endfor %} + {% endif %} + {{ alerts_total.count }} + attribute_templates: + warning_count: >- + {% set warnings = namespace(count=0) %} + {% if (state_attr('sensor.weatheralerts_1', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts_1', '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_1', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts_1', '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_1', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts_1', '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_1', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts_1', '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 }} + watch_count: >- + {% set watches = namespace(count=0) %} + {% if (state_attr('sensor.weatheralerts_1', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts_1', '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_1', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts_1', '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_1', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts_1', '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 }} + advisory_count: >- + {% set advisories = namespace(count=0) %} + {% if (state_attr('sensor.weatheralerts_1', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts_1', '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_1', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts_1', '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_1', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts_1', '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_1', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts_1', '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_1', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts_1', '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_1', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts_1', '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_1', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts_1', '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 }} + + weatheralerts_1_alert_1: + friendly_name: Weather Alert 1 + icon_template: mdi:alert-rhombus + value_template: >- + {% if (states('sensor.weatheralerts_1') != 'unavailable') and (state_attr('sensor.weatheralerts_1', 'alerts')[0] != null) or ((states('sensor.weatheralerts_1') == 'unavailable') and (as_timestamp(state_attr('sensor.weatheralerts_1', 'alerts')[0].endsExpires) - as_timestamp(now()) > 0)) %} + on + {% else %} + off + {% endif %} + attribute_templates: + alert_id: >- + {% if states('sensor.weatheralerts_1')|int > 0 or (states('sensor.weatheralerts_1') == "unavailable" and states('sensor.weatheralerts_1_alert_1') == "on") %} + {{ states.sensor.weatheralerts_1.attributes.alerts[0].id }} + {% else %} + None + {% endif %} + alert_event: >- + {% if states('sensor.weatheralerts_1')|int > 0 or (states('sensor.weatheralerts_1') == "unavailable" and states('sensor.weatheralerts_1_alert_1') == "on") %} + {{ states.sensor.weatheralerts_1.attributes.alerts[0].event }} + {% else %} + None + {% endif %} + alert_area: >- + {% if states('sensor.weatheralerts_1')|int > 0 or (states('sensor.weatheralerts_1') == "unavailable" and states('sensor.weatheralerts_1_alert_1') == "on") %} + {{ states.sensor.weatheralerts_1.attributes.alerts[0].area }} + {% else %} + None + {% endif %} + alert_NWSheadline: >- + {% if states('sensor.weatheralerts_1')|int > 0 or (states('sensor.weatheralerts_1') == "unavailable" and states('sensor.weatheralerts_1_alert_1') == "on") %} + {{ states.sensor.weatheralerts_1.attributes.alerts[0].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }} + {% else %} + None + {% endif %} + alert_description: >- + {% if states('sensor.weatheralerts_1')|int > 0 or (states('sensor.weatheralerts_1') == "unavailable" and states('sensor.weatheralerts_1_alert_1') == "on") %} + {{ states.sensor.weatheralerts_1.attributes.alerts[0].description }} + {% else %} + None + {% endif %} + alert_messageType: >- + {% if states('sensor.weatheralerts_1')|int > 0 or (states('sensor.weatheralerts_1') == "unavailable" and states('sensor.weatheralerts_1_alert_1') == "on") %} + {{ states.sensor.weatheralerts_1.attributes.alerts[0].messageType }} + {% else %} + None + {% endif %} + alert_status: >- + {% if states('sensor.weatheralerts_1')|int > 0 or (states('sensor.weatheralerts_1') == "unavailable" and states('sensor.weatheralerts_1_alert_1') == "on") %} + {{ states.sensor.weatheralerts_1.attributes.alerts[0].status }} + {% else %} + None + {% endif %} + alert_category: >- + {% if states('sensor.weatheralerts_1')|int > 0 or (states('sensor.weatheralerts_1') == "unavailable" and states('sensor.weatheralerts_1_alert_1') == "on") %} + {{ states.sensor.weatheralerts_1.attributes.alerts[0].category }} + {% else %} + None + {% endif %} + alert_urgency: >- + {% if states('sensor.weatheralerts_1')|int > 0 or (states('sensor.weatheralerts_1') == "unavailable" and states('sensor.weatheralerts_1_alert_1') == "on") %} + {{ states.sensor.weatheralerts_1.attributes.alerts[0].urgency }} + {% else %} + None + {% endif %} + alert_severity: >- + {% if states('sensor.weatheralerts_1')|int > 0 or (states('sensor.weatheralerts_1') == "unavailable" and states('sensor.weatheralerts_1_alert_1') == "on") %} + {{ states.sensor.weatheralerts_1.attributes.alerts[0].severity }} + {% else %} + None + {% endif %} + alert_certainty: >- + {% if states('sensor.weatheralerts_1')|int > 0 or (states('sensor.weatheralerts_1') == "unavailable" and states('sensor.weatheralerts_1_alert_1') == "on") %} + {{ states.sensor.weatheralerts_1.attributes.alerts[0].certainty }} + {% else %} + None + {% endif %} + alert_response: >- + {% if states('sensor.weatheralerts_1')|int > 0 or (states('sensor.weatheralerts_1') == "unavailable" and states('sensor.weatheralerts_1_alert_1') == "on") %} + {{ states.sensor.weatheralerts_1.attributes.alerts[0].response }} + {% else %} + None + {% endif %} + alert_instruction: >- + {% if states('sensor.weatheralerts_1')|int > 0 or (states('sensor.weatheralerts_1') == "unavailable" and states('sensor.weatheralerts_1_alert_1') == "on") %} + {{ states.sensor.weatheralerts_1.attributes.alerts[0].instruction }} + {% else %} + None + {% endif %} + alert_sent: >- + {% if states('sensor.weatheralerts_1')|int > 0 or (states('sensor.weatheralerts_1') == "unavailable" and states('sensor.weatheralerts_1_alert_1') == "on") %} + {{ states.sensor.weatheralerts_1.attributes.alerts[0].sent }} + {% else %} + None + {% endif %} + alert_effective: >- + {% if states('sensor.weatheralerts_1')|int > 0 or (states('sensor.weatheralerts_1') == "unavailable" and states('sensor.weatheralerts_1_alert_1') == "on") %} + {{ states.sensor.weatheralerts_1.attributes.alerts[0].effective }} + {% else %} + None + {% endif %} + alert_onset: >- + {% if states('sensor.weatheralerts_1')|int > 0 or (states('sensor.weatheralerts_1') == "unavailable" and states('sensor.weatheralerts_1_alert_1') == "on") %} + {{ states.sensor.weatheralerts_1.attributes.alerts[0].onset }} + {% else %} + None + {% endif %} + alert_expires: >- + {% if states('sensor.weatheralerts_1')|int > 0 or (states('sensor.weatheralerts_1') == "unavailable" and states('sensor.weatheralerts_1_alert_1') == "on") %} + {{ states.sensor.weatheralerts_1.attributes.alerts[0].expires }} + {% else %} + None + {% endif %} + alert_title: >- + {% if states('sensor.weatheralerts_1')|int > 0 or (states('sensor.weatheralerts_1') == "unavailable" and states('sensor.weatheralerts_1_alert_1') == "on") %} + {{ states.sensor.weatheralerts_1.attributes.alerts[0].title }} + {% else %} + None + {% endif %} + alert_zoneid: >- + {% if states('sensor.weatheralerts_1')|int > 0 or (states('sensor.weatheralerts_1') == "unavailable" and states('sensor.weatheralerts_1_alert_1') == "on") %} + {{ states.sensor.weatheralerts_1.attributes.alerts[0].zoneid }} + {% else %} + None + {% endif %} + display_title: > + {% if states('sensor.weatheralerts_1')|int > 0 or (states('sensor.weatheralerts_1') == "unavailable" and states('sensor.weatheralerts_1_alert_1') == "on") %} + {{ states.sensor.weatheralerts_1.attributes.alerts[0].title }} + {% else %} + None + {% endif %} + display_message: > + {% if states('sensor.weatheralerts_1')|int > 0 or (states('sensor.weatheralerts_1') == "unavailable" and states('sensor.weatheralerts_1_alert_1') == "on") %} + {% if states.sensor.weatheralerts_1.attributes.alerts[0].NWSheadline != "null" %} + {{ states.sensor.weatheralerts_1.attributes.alerts[0].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }}
+ {% endif %} +
{{ states.sensor.weatheralerts_1.attributes.alerts[0].description | regex_replace('\n\n','

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

','\n\n') }} + {% endif %} + {% else %} + None + {% endif %} + + weatheralerts_1_alert_1_last_changed: + value_template: >- + {% if states('sensor.weatheralerts_1_alert_1') == "on" %} + {{ states.sensor.weatheralerts_1_alert_1.last_updated }} + {% else %} + None + {% endif %} + weatheralerts_1_alert_2_last_changed: + value_template: >- + {% if states('sensor.weatheralerts_1_alert_2') == "on" %} + {{ states.sensor.weatheralerts_1_alert_2.last_updated }} + {% else %} + None + {% endif %} + weatheralerts_1_alert_3_last_changed: + value_template: >- + {% if states('sensor.weatheralerts_1_alert_3') == "on" %} + {{ states.sensor.weatheralerts_1_alert_3.last_updated }} + {% else %} + None + {% endif %} + weatheralerts_1_alert_4_last_changed: + value_template: >- + {% if states('sensor.weatheralerts_1_alert_4') == "on" %} + {{ states.sensor.weatheralerts_1_alert_4.last_updated }} + {% else %} + None + {% endif %} + weatheralerts_1_alert_5_last_changed: + value_template: >- + {% if states('sensor.weatheralerts_1_alert_5') == "on" %} + {{ states.sensor.weatheralerts_1_alert_5.last_updated }} + {% else %} + None + {% endif %} + + weatheralerts_1_alert_1_most_recent_active_alert: + value_template: >- + {% if states('sensor.weatheralerts_1_alert_1_most_recent_active_alert') == '' and states('sensor.weatheralerts_1_alert_1') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_1_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_1_alert_1') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_1_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_1_alert_1') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_1') == 'on' %} + {{ state_attr('sensor.weatheralerts_1_alert_1', 'alert_event') }} + {% else %} + {{ states('sensor.weatheralerts_1_alert_1_most_recent_active_alert') }} + {% endif %} + attribute_templates: + alert_effective: >- + {% if states('sensor.weatheralerts_1_alert_1_most_recent_active_alert') == '' and states('sensor.weatheralerts_1_alert_1') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_1_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_1_alert_1') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_1_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_1_alert_1') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_1') == 'on' %} + {{ state_attr('sensor.weatheralerts_1_alert_1', 'alert_effective') }} + {% else %} + {{ state_attr('sensor.weatheralerts_1_alert_1_most_recent_active_alert', 'alert_effective') }} + {% endif %} + alert_id: >- + {% if states('sensor.weatheralerts_1_alert_1_most_recent_active_alert') == '' and states('sensor.weatheralerts_1_alert_1') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_1_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_1_alert_1') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_1_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_1_alert_1') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_1') == 'on' %} + {{ state_attr('sensor.weatheralerts_1_alert_1', 'alert_id') }} + {% else %} + {{ state_attr('sensor.weatheralerts_1_alert_1_most_recent_active_alert', 'alert_id') }} + {% endif %} + weatheralerts_1_alert_2_most_recent_active_alert: + value_template: >- + {% if states('sensor.weatheralerts_1_alert_2_most_recent_active_alert') == '' and states('sensor.weatheralerts_1_alert_2') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_2_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_1_alert_2') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_2_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_1_alert_2') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_2') == 'on' %} + {{ state_attr('sensor.weatheralerts_1_alert_2', 'alert_event') }} + {% else %} + {{ states('sensor.weatheralerts_1_alert_2_most_recent_active_alert') }} + {% endif %} + attribute_templates: + alert_effective: >- + {% if states('sensor.weatheralerts_1_alert_2_most_recent_active_alert') == '' and states('sensor.weatheralerts_1_alert_2') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_2_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_1_alert_2') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_2_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_1_alert_2') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_2') == 'on' %} + {{ state_attr('sensor.weatheralerts_1_alert_2', 'alert_effective') }} + {% else %} + {{ state_attr('sensor.weatheralerts_1_alert_2_most_recent_active_alert', 'alert_effective') }} + {% endif %} + alert_id: >- + {% if states('sensor.weatheralerts_1_alert_2_most_recent_active_alert') == '' and states('sensor.weatheralerts_1_alert_2') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_2_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_1_alert_2') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_2_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_1_alert_2') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_2') == 'on' %} + {{ state_attr('sensor.weatheralerts_1_alert_2', 'alert_id') }} + {% else %} + {{ state_attr('sensor.weatheralerts_1_alert_2_most_recent_active_alert', 'alert_id') }} + {% endif %} + weatheralerts_1_alert_3_most_recent_active_alert: + value_template: >- + {% if states('sensor.weatheralerts_1_alert_3_most_recent_active_alert') == '' and states('sensor.weatheralerts_1_alert_3') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_3_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_1_alert_3') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_3_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_1_alert_3') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_3') == 'on' %} + {{ state_attr('sensor.weatheralerts_1_alert_3', 'alert_event') }} + {% else %} + {{ states('sensor.weatheralerts_1_alert_3_most_recent_active_alert') }} + {% endif %} + attribute_templates: + alert_effective: >- + {% if states('sensor.weatheralerts_1_alert_3_most_recent_active_alert') == '' and states('sensor.weatheralerts_1_alert_3') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_3_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_1_alert_3') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_3_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_1_alert_3') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_3') == 'on' %} + {{ state_attr('sensor.weatheralerts_1_alert_3', 'alert_effective') }} + {% else %} + {{ state_attr('sensor.weatheralerts_1_alert_3_most_recent_active_alert', 'alert_effective') }} + {% endif %} + alert_id: >- + {% if states('sensor.weatheralerts_1_alert_3_most_recent_active_alert') == '' and states('sensor.weatheralerts_1_alert_3') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_3_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_1_alert_3') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_3_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_1_alert_3') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_3') == 'on' %} + {{ state_attr('sensor.weatheralerts_1_alert_3', 'alert_id') }} + {% else %} + {{ state_attr('sensor.weatheralerts_1_alert_3_most_recent_active_alert', 'alert_id') }} + {% endif %} + weatheralerts_1_alert_4_most_recent_active_alert: + value_template: >- + {% if states('sensor.weatheralerts_1_alert_4_most_recent_active_alert') == '' and states('sensor.weatheralerts_1_alert_4') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_4_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_1_alert_4') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_4_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_1_alert_4') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_4') == 'on' %} + {{ state_attr('sensor.weatheralerts_1_alert_4', 'alert_event') }} + {% else %} + {{ states('sensor.weatheralerts_1_alert_4_most_recent_active_alert') }} + {% endif %} + attribute_templates: + alert_effective: >- + {% if states('sensor.weatheralerts_1_alert_4_most_recent_active_alert') == '' and states('sensor.weatheralerts_1_alert_4') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_4_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_1_alert_4') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_4_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_1_alert_4') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_4') == 'on' %} + {{ state_attr('sensor.weatheralerts_1_alert_4', 'alert_effective') }} + {% else %} + {{ state_attr('sensor.weatheralerts_1_alert_4_most_recent_active_alert', 'alert_effective') }} + {% endif %} + alert_id: >- + {% if states('sensor.weatheralerts_1_alert_4_most_recent_active_alert') == '' and states('sensor.weatheralerts_1_alert_4') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_4_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_1_alert_4') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_4_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_1_alert_4') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_4') == 'on' %} + {{ state_attr('sensor.weatheralerts_1_alert_4', 'alert_id') }} + {% else %} + {{ state_attr('sensor.weatheralerts_1_alert_4_most_recent_active_alert', 'alert_id') }} + {% endif %} + weatheralerts_1_alert_5_most_recent_active_alert: + value_template: >- + {% if states('sensor.weatheralerts_1_alert_5_most_recent_active_alert') == '' and states('sensor.weatheralerts_1_alert_5') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_5_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_1_alert_5') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_5_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_1_alert_5') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_5') == 'on' %} + {{ state_attr('sensor.weatheralerts_1_alert_5', 'alert_event') }} + {% else %} + {{ states('sensor.weatheralerts_1_alert_5_most_recent_active_alert') }} + {% endif %} + attribute_templates: + alert_effective: >- + {% if states('sensor.weatheralerts_1_alert_5_most_recent_active_alert') == '' and states('sensor.weatheralerts_1_alert_5') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_5_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_1_alert_5') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_5_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_1_alert_5') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_5') == 'on' %} + {{ state_attr('sensor.weatheralerts_1_alert_5', 'alert_effective') }} + {% else %} + {{ state_attr('sensor.weatheralerts_1_alert_5_most_recent_active_alert', 'alert_effective') }} + {% endif %} + alert_id: >- + {% if states('sensor.weatheralerts_1_alert_5_most_recent_active_alert') == '' and states('sensor.weatheralerts_1_alert_5') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_5_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_1_alert_5') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_5_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_1_alert_5') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_1_alert_5') == 'on' %} + {{ state_attr('sensor.weatheralerts_1_alert_5', 'alert_id') }} + {% else %} + {{ state_attr('sensor.weatheralerts_1_alert_5_most_recent_active_alert', 'alert_id') }} + {% endif %} + + weatheralerts_1_alerts_are_active: + friendly_name: Weather Alerts Are Active + icon_template: mdi:alert-rhombus + value_template: > + {% if (states('sensor.weatheralerts_1') | int > 0) or ((states('sensor.weatheralerts_1') == 'unavailable') and (states('sensor.weatheralerts_1_alert_1') == 'on')) %} + Yes + {% else %} + No + {% endif %} + + + + +################################################################################ +## input_text ## + +input_text: + weatheralerts_1_triggered_ui_alert_ids: + name: Triggered Weather Alert IDs - UI + icon: mdi:information-variant + max: 255 + initial: None + + weatheralerts_1_triggered_pushbullet_alert_ids: + name: Triggered Weather Alert IDs - Pushbullet + icon: mdi:information-variant + max: 255 + initial: None + + + + +################################################################################ +## automation ## + +automation: + ## Automation to trigger a UI notification when there is an active weather alert. + ## weatheralerts_1_alert_1 should always contain most recent alert. + - alias: Weather Alert UI Notification - 1 + initial_state: 'on' + trigger: + - platform: state + entity_id: sensor.weatheralerts_1_alert_1_last_changed + - platform: homeassistant + event: start + condition: + - condition: and + conditions: + - condition: template + value_template: "{{ states('sensor.weatheralerts_1_alerts_are_active') == 'Yes' }}" + - condition: template + value_template: "{{ (as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_1_alert_1', 'alert_sent'))) < 3600 }}" + - condition: template + value_template: "{{ state_attr('sensor.weatheralerts_1_alert_1', 'alert_id') not in states('input_text.weatheralerts_1_triggered_ui_alert_ids') }}" + action: + - service: script.weatheralerts_1_popup_on_wx_alert + data_template: + title: > + {% if (states('sensor.weatheralerts_1_alert_1') == 'on') and ((as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_1_alert_1', 'alert_effective'))|float) <= 3600) %} + {{ state_attr('sensor.weatheralerts_1_alert_1', 'display_title') }} + {% else %} + Weather Alerts + {% endif %} + message: > + {% if (states('sensor.weatheralerts_1_alert_1') == 'on') and ((as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_1_alert_1', 'alert_effective'))|float) <= 3600) %} + {{ state_attr('sensor.weatheralerts_1_alert_1', 'display_message') }} + {% endif %} + {% if (states('sensor.weatheralerts_1_alert_1') == 'on') and ((as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_1_alert_1', 'alert_effective'))|float) > 3600) %} +


Alert:
{{ state_attr('sensor.weatheralerts_1_alert_1', 'display_title') }} + {% endif %} + {% if (states('sensor.weatheralerts_1_alert_2') == 'on') and ((as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_1_alert_2', 'alert_effective'))|float) <= 3600) %} +
{{ state_attr('sensor.weatheralerts_1_alert_2', 'display_title') }}
+ {{ state_attr('sensor.weatheralerts_1_alert_2', 'display_message') }} + {% endif %} + {% if (states('sensor.weatheralerts_1_alert_2') == 'on') and ((as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_1_alert_2', 'alert_effective'))|float) > 3600) %} +
Alert:
{{ state_attr('sensor.weatheralerts_1_alert_2', 'display_title') }} + {% endif %} + {% if (states('sensor.weatheralerts_1_alert_3') == 'on') and ((as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_1_alert_3', 'alert_effective'))|float) <= 3600) %} +
{{ state_attr('sensor.weatheralerts_1_alert_3', 'display_title') }}
+ {{ state_attr('sensor.weatheralerts_1_alert_3', 'display_message') }} + {% endif %} + {% if (states('sensor.weatheralerts_1_alert_3') == 'on') and ((as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_1_alert_3', 'alert_effective'))|float) > 3600) %} +
Alert:
{{ state_attr('sensor.weatheralerts_1_alert_3', 'display_title') }} + {% endif %} + {% if (states('sensor.weatheralerts_1_alert_4') == 'on') and ((as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_1_alert_4', 'alert_effective'))|float) <= 3600) %} +
{{ state_attr('sensor.weatheralerts_1_alert_4', 'display_title') }}
+ {{ state_attr('sensor.weatheralerts_1_alert_4', 'display_message') }} + {% endif %} + {% if (states('sensor.weatheralerts_1_alert_4') == 'on') and ((as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_1_alert_4', 'alert_effective'))|float) > 3600) %} +
Alert:
{{ state_attr('sensor.weatheralerts_1_alert_4', 'display_title') }} + {% endif %} + {% if (states('sensor.weatheralerts_1_alert_5') == 'on') and ((as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_1_alert_5', 'alert_effective'))|float) <= 3600) %} +
{{ state_attr('sensor.weatheralerts_1_alert_5', 'display_title') }}
+ {{ state_attr('sensor.weatheralerts_1_alert_5', 'display_message') }} + {% endif %} + {% if (states('sensor.weatheralerts_1_alert_5') == 'on') and ((as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_1_alert_5', 'alert_effective'))|float) > 3600) %} +
Alert:
{{ state_attr('sensor.weatheralerts_1_alert_5', 'display_title') }} + {% endif %} + - service: input_text.set_value + data_template: + entity_id: input_text.weatheralerts_1_triggered_ui_alert_ids + value: "{{ state_attr('sensor.weatheralerts_1_alert_1', 'alert_id') }} {{ state_attr('sensor.weatheralerts_1_alert_2', 'alert_id') }} {{ state_attr('sensor.weatheralerts_1_alert_3', 'alert_id') }} {{ state_attr('sensor.weatheralerts_1_alert_4', 'alert_id') }} {{ state_attr('sensor.weatheralerts_1_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 + - alias: Weather Alert UI Notification Auto-dismiss - 1 + trigger: + - platform: state + entity_id: sensor.weatheralerts_1_alerts_are_active + to: "No" + for: + minutes: 30 + - platform: homeassistant + event: start + condition: + - condition: template + value_template: "{{ states('sensor.weatheralerts_1_alerts_are_active') == 'No' }}" + action: + - service: persistent_notification.dismiss + data: + notification_id: "weatheralerts_1_alert" + + ## Automation to push alerts via Pushbullet service + ## Disable or remove this automation if you don't use Pushbullet + - alias: Weather Alerts Pushbullet Notification - 1 + trigger: + platform: state + entity_id: sensor.weatheralerts_1_alert_1_last_changed + condition: + - condition: and + conditions: + - condition: template + value_template: "{{ states('sensor.weatheralerts_1_alerts_are_active') == 'Yes' }}" + - condition: template + value_template: "{{ (as_timestamp(now()) - as_timestamp(state_attr('sensor.weatheralerts_1_alert_1', 'alert_sent'))) < 3600 }}" + - condition: template + value_template: "{{ state_attr('sensor.weatheralerts_1_alert_1', 'alert_id') not in states('input_text.weatheralerts_1_triggered_pushbullet_alert_ids') }}" + action: + - service: notify.notify + data_template: + message: > + Current NWS Weather Alerts: + + {% if states('sensor.weatheralerts_1_alerts_are_active') == "No" %} + No alerts at this time for {{ state_attr('sensor.weatheralerts_1', 'friendly_name') }}. + {% endif %} + {% if states.sensor.weatheralerts_1_alert_1.state == "on" %} + {{ states.sensor.weatheralerts_1_alert_1.attributes.display_title }} for {{ state_attr('sensor.weatheralerts_1', 'friendly_name') }} + + {% endif %} + {% if states.sensor.weatheralerts_1_alert_2.state == "on" %} + {{ states.sensor.weatheralerts_1_alert_2.attributes.display_title }} for {{ state_attr('sensor.weatheralerts_1', 'friendly_name') }} + + {% endif %} + {% if states.sensor.weatheralerts_1_alert_3.state == "on" %} + {{ states.sensor.weatheralerts_1_alert_3.attributes.display_title }} for {{ state_attr('sensor.weatheralerts_1', 'friendly_name') }} + + {% endif %} + {% if states.sensor.weatheralerts_1_alert_4.state == "on" %} + {{ states.sensor.weatheralerts_1_alert_4.attributes.display_title }} for {{ state_attr('sensor.weatheralerts_1', 'friendly_name') }} + + {% endif %} + {% if states.sensor.weatheralerts_1_alert_5.state == "on" %} + {{ states.sensor.weatheralerts_1_alert_5.attributes.display_title }} for {{ state_attr('sensor.weatheralerts_1', 'friendly_name') }} + {% endif %} + - service: input_text.set_value + data_template: + entity_id: input_text.weatheralerts_1_triggered_pushbullet_alert_ids + value: "{{ state_attr('sensor.weatheralerts_1_alert_1', 'alert_id') }} {{ state_attr('sensor.weatheralerts_1_alert_2', 'alert_id') }} {{ state_attr('sensor.weatheralerts_1_alert_3', 'alert_id') }} {{ state_attr('sensor.weatheralerts_1_alert_4', 'alert_id') }} {{ state_attr('sensor.weatheralerts_1_alert_5', 'alert_id') }}" +## - alias: NWS Announce Weather Alert for Tornado +## trigger: +## - platform: numeric_state +## entity_id: sensor.weatheralerts_1_active_alerts +## attribute: tornado_warning_count +## above: 0 +## action: +## - service: notify.notify +## data: +## title: "Tornado Warning - TAKE COVER!" +## message: "The National Weather Service has issued a Tornado Warning for our area. Take Cover NOW!!!!" +## - service: light.turn_on +## entity_id: all +## - service: notify.alexa_media_living_room +## data: +## message: Attention. The water pump has been switched on. +## data: +## type: announce +## method: all + + + +################################################################################ +## script ## + +script: + ## Script creates UI notification and is called via automation defined above + weatheralerts_1_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_1_alert" + ## Create a new persistant notification in the UI for a new alert + - service_template: > + {% if states.sensor.weatheralerts_1.state != '0' %} + persistent_notification.create + {% endif %} + data_template: + notification_id: "weatheralerts_1_alert" + message: "{{ message }}" + title: "{{ title }}" diff --git a/scenes.yaml b/scenes.yaml new file mode 100644 index 0000000..e69de29 diff --git a/scripts.yaml b/scripts.yaml new file mode 100644 index 0000000..408c9ed --- /dev/null +++ b/scripts.yaml @@ -0,0 +1,158 @@ +start_netflix: + alias: Start Netflix + sequence: + - service: switch.turn_on + target: + entity_id: switch.adaptive_lighting_sleep_mode_living_room + - service: media_player.select_source + target: + entity_id: media_player.living_room_firetv + data: + source: com.netflix.ninja + mode: single + icon: mdi:netflix +stop_netflix: + alias: Stop Netflix + sequence: + - service: media_player.select_source + target: + entity_id: media_player.living_room_firetv + data: + source: '!com.netflix.ninja' + - service: switch.turn_off + target: + entity_id: switch.adaptive_lighting_sleep_mode_living_room + mode: single + icon: mdi:netflix +give_me_darkness: + alias: Give Me Darkness + sequence: + - service: switch.turn_on + target: + entity_id: + - switch.adaptive_lighting_sleep_mode_upstairs_hallway + - switch.adaptive_lighting_sleep_mode_mud_room + - service: light.turn_off + target: + device_id: + - cfa5796f2572082c37db92f809e432bc + - 3ccbb8face40bff22fd924966bbb19f5 + area_id: + - kallen_bedroom + - master_bedroom + mode: single + icon: mdi:weather-night +start_youtube: + alias: Start Youtube + sequence: + - service: switch.turn_on + target: + entity_id: switch.adaptive_lighting_sleep_mode_living_room + - service: media_player.select_source + target: + entity_id: media_player.living_room_firetv + data: + source: com.amazon.firetv.youtube + mode: single + icon: mdi:youtube +stop_youtube: + alias: Stop Youtube + sequence: + - service: media_player.select_source + target: + entity_id: media_player.living_room_firetv + data: + source: '!com.amazon.firetv.youtube' + - service: switch.turn_off + target: + entity_id: switch.adaptive_lighting_sleep_mode_living_room + mode: single + icon: mdi:youtube +start_twitch: + alias: Start Twitch + sequence: + - service: switch.turn_on + target: + entity_id: switch.adaptive_lighting_sleep_mode_living_room + - service: media_player.select_source + target: + entity_id: media_player.living_room_firetv + data: + source: tv.twitch.android.viewer + mode: single + icon: mdi:twitch +stop_twitch: + alias: Stop Twitch + sequence: + - service: media_player.select_source + target: + entity_id: media_player.living_room_firetv + data: + source: '!tv.twitch.android.viewer' + - service: switch.turn_off + target: + entity_id: switch.adaptive_lighting_sleep_mode_living_room + mode: single + icon: mdi:twitch +start_spotify: + alias: Start Spotify + sequence: + - service: media_player.select_source + target: + entity_id: media_player.living_room_firetv + data: + source: com.spotify.tv.android + mode: single + icon: mdi:spotify +stop_spotify: + alias: Stop Spotify + sequence: + - service: media_player.select_source + target: + entity_id: media_player.living_room_firetv + data: + source: '!com.spotify.tv.android' + mode: single + icon: mdi:spotify +goodnight: + alias: Goodnight + sequence: + - service: scene.turn_on + target: + entity_id: + - scene.upstairs_hallway_nightlight + - scene.mud_room_nightlight + - service: light.turn_off + target: + device_id: + - cfa5796f2572082c37db92f809e432bc + - 3ccbb8face40bff22fd924966bbb19f5 + area_id: + - basement_studio + - master_bedroom + - kallen_bedroom + - furnace_room + - mud_room + - nursery + - service: switch.turn_off + target: + area_id: basement_studio + - service: switch.turn_on + target: + entity_id: + - switch.basement_echo_dot_do_not_disturb_switch + - switch.living_room_echo_dot_do_not_disturb_switch + mode: single + icon: mdi:weather-night +alexa_tts_test: + alias: Alexa TTS Test + sequence: + - service: notify.alexa_media + data: + data: + method: all + type: announce + target: Living Room Echo Dot + message: I farted + mode: single + icon: mdi:test-tube diff --git a/sensor.yaml b/sensor.yaml new file mode 100644 index 0000000..d1d943f --- /dev/null +++ b/sensor.yaml @@ -0,0 +1,10 @@ +- platform: time_date + display_options: + - 'time' + - 'date' + - 'date_time' + - 'date_time_utc' + - 'date_time_iso' + - 'time_date' + - 'time_utc' + - 'beat'