Last active
November 4, 2023 20:35
-
-
Save aschamberger/088aacec628fd7e51a59106b11cab755 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
type: entity-filter | |
entities: | |
- sensor.dwd_weather_warnings_709162019_current_warning_level | |
- sensor.dwd_weather_warnings_709162019_advance_warning_level | |
state_filter: | |
- operator: ">" | |
value: 0 | |
card: | |
type: markdown | |
title: DWD Warnungen | |
content: >- | |
{% if config.entities | length < 1 %} **<font color=#44739e>Keine Warnungen</font>** {% endif %} | |
{# --- Loop through the entities with state 'on' --- #} | |
{% for item in config.entities %} | |
{# --- SETTINGS --- #} | |
{% set show_recommend_action = true %} | |
{% set show_timeframe = true %} | |
{% set show_timestamp_sent = false %} | |
{% set minor_severity = "info" %} | |
{% set moderate_severity = "info" %} | |
{% set default_severity = "success" %} | |
{# --- Item attributes --- #} | |
{% set warning_count = state_attr(item.entity, "warning_count") %} | |
{% set has_sent = (not not state_attr(item.entity, "last_update")|default(false, true)) %} | |
{% if has_sent %} | |
{% set time_sent = as_timestamp(state_attr(item.entity, "last_update")) %} | |
{% else %} | |
{% set time_sent = as_timestamp("1970-01-01T00:00:00+00:00") %} | |
{% endif %} | |
{% set num_weekday_sent = time_sent | timestamp_custom("%w", True) | int %} | |
{% set weekday_sent = "" ~ ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][num_weekday_sent-1] %} | |
{# --- Loop through the warnings --- #} | |
{% for i in range(warning_count) %} | |
{# --- Initialise attribute values --- #} | |
{% set headline = state_attr(item.entity, "warning_" ~ loop.index ~ "_headline")|default('Meldung', true) %} | |
{% set description = state_attr(item.entity, "warning_" ~ loop.index ~ "_description")|default('', true)|trim %} | |
{% set recommended_actions = state_attr(item.entity, "warning_" ~ loop.index ~ "_instruction")|default('', true)|trim %} | |
{% set warn_timeframe = "" %} | |
{% set level = state_attr(item.entity, "warning_" ~ loop.index ~ "_level")|default(default_severity, true) %} | |
{# --- Set severity --- #} | |
{% if level == "4" %} {% set severity = "error" %} | |
{% elif level == "3" %}{% set severity = "warning" %} | |
{% elif level == "2" %}{% set severity = moderate_severity %} | |
{% elif level == "1" %}{% set severity = minor_severity %} | |
{% else %}{% set severity = default_severity %} {% endif %} | |
{# --- Check attribute content --- #} | |
{% set has_start = (not not state_attr(item.entity, "warning_" ~ loop.index ~ "_start")|default(false, true)) %} | |
{% set has_end = (not not state_attr(item.entity, "warning_" ~ loop.index ~ "_end")|default(false, true)) %} | |
{% set has_recommended_actions = (not not state_attr(item.entity, "warning_" ~ loop.index ~ "_instruction")|default(false, true)) %} | |
{# --- Fill timestamp variables --- #} | |
{% if has_start %} | |
{% set time_start = as_timestamp(state_attr(item.entity, "warning_" ~ loop.index ~ "_start")) %} | |
{% else %} | |
{% set time_start = as_timestamp("1970-01-01T00:00:00+00:00") %} | |
{% endif %} | |
{% set num_weekday_start = time_start | timestamp_custom("%w", True) | int %} | |
{% set weekday_start = "" ~ ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][num_weekday_start-1] %} | |
{% if has_end %} | |
{% set time_end = as_timestamp(state_attr(item.entity, "warning_" ~ loop.index ~ "_end")) %} | |
{% else %} | |
{% set time_end = as_timestamp("1970-01-01T00:00:00+00:00") %} | |
{% endif %} | |
{% set num_weekday_end = time_end | timestamp_custom("%w", True) | int %} | |
{% set weekday_end = "" ~ ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][num_weekday_end-1] %} | |
{# --- Format recommended_actions for warning --- #} | |
{% if has_recommended_actions %} | |
{% set recommended_actions = "<br/>**Empfehlung:** " ~ recommended_actions ~ "<br/>" %} | |
{% endif %} | |
{# --- Format custom timeframe for warning --- #} | |
{% if show_timeframe %} | |
{% set warn_timeframe = "<br/>**" ~ weekday_sent ~ ", " ~ time_sent | timestamp_custom("%H:%M Uhr") %} | |
{% if has_start %} | |
{% set warn_timeframe = "<br/>**" ~ weekday_start ~ ", " ~ time_start | timestamp_custom("%H:%M Uhr") %} | |
{% endif %} | |
{% if has_end %} | |
{% set warn_timeframe = warn_timeframe ~ " - " ~ weekday_end ~ ", " ~ time_end | timestamp_custom("%H:%M Uhr") ~ "**<br/>" %} | |
{% else %} | |
{% set warn_timeframe = "" %} | |
{% set show_timestamp_sent = true %} | |
{% endif %} | |
{% endif %} | |
{# --- Construct ha-alert elements --- #} | |
<ha-alert alert-type="{{ severity }}" title="{{ headline }}"> | |
{{ description }} <br/> | |
{{ recommended_actions }} | |
{{ warn_timeframe }} | |
{% if show_timestamp_sent %} | |
<br/>`{{ time_sent | timestamp_custom("Meldung vom: %d.%m.%Y, %H:%M Uhr") }}` | |
{% endif %}</ha-alert> | |
{% endfor %} | |
{% endfor %} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment