Suche Markdown für "Deutscher Wetterdienst (DWD) Weather Warnings"

Zur Vollständigkeit, gibt auch eine fertige Karte

https://github.com/MrBartusek/MeteoalarmCard

1 „Gefällt mir“

danke das war der fehler es war eindeutig zu spät gestern Abend xD
hab vielen dank

Hi,
vielleicht eine blöde Frage,
aber was muss ich anpassen, damit es für meinen Standort läuft?
Nur die Zahl bei set sensor_region_name ?
oder muss noch irgendwo der Stadtname rein?

Grüße
Hawk

Nur die Zahl für Deine Region/Stadt von DWD-HP.

Danke für die Info.
Leider wird bei mir nichts angezeigt, obwohl gerade eine Warnung raus ist (DWD App)

Vielleicht muss ich etwas warten oder den Pi neu starten?

Grüße
Hawk

Es sollte reichen, die Integration neu zu laden (3-Punkt).

Hi,
hatte die Entitäten mehrfach neu geladen und auch den Pi neu gestartet.
Ging nicht.

Dann habe ich das Update auf 2023.7.2 gemacht.

Nun läuft’s. Keine Ahnung warum? Hab am Markdown nichts geändert.

Egal,
Vielen Dank

Hat bei mir sofort funktioniert.
Danke!

Danke für den Code, hier mal der korrekte Link zur Datei mit den Regioncodes, das zu finden war nicht einfach :sweat_smile:
DWD Seite mit der CSV für die Regioncodes

Hallo zusammen,

bin gerade dabei das Markdown von @harryp anzuwenden, jedoch erscheint bei mir nach Änderung der region_id die Fehlermeldung wie folgt:

ValueError: Template error: as_timestamp got invalid input 'None' when rendering template '{# Beginn: Letzte Aktualisierung #} {% set sensor_region_name ="dwd_weather_warnings_106533000" %} {% set current_last_update = state_attr("sensor." ~ sensor_region_name ~ "_current_warning_level", "last_update") %} {% set weekday_last_update = as_timestamp(current_last_update) | timestamp_custom("%w", True) | int %} Stand: {{ ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_last_update-1] ~ ", " ~ as_timestamp(current_last_update) | timestamp_custom('%d.%m.%Y-%H:%M:%S') }} {# Ende: Letzte Aktualisierung #} {# Beginn: 1. Region #} {% set sensor_region_name ="dwd_weather_warnings_106533000" %} {% set current_region_name = state_attr("sensor." ~ sensor_region_name ~ "_current_warning_level", "region_name") %} {% set current_count = state_attr("sensor." ~ sensor_region_name ~ "_current_warning_level", "warning_count") %} {% set advance_count = state_attr("sensor." ~ sensor_region_name ~ "_advance_warning_level", "warning_count") %} ****{{ current_region_name }}**** {% if ((current_count == 0 or current_count == None) and (advance_count == 0 or advance_count == None)) %} **<font color=#c5e566>Keine Warnungen</font>**{% else %} {% for i in range(current_count) %} {% set headline = state_attr("sensor." ~ sensor_region_name ~ "_current_warning_level", "warning_" ~ loop.index ~ "_headline") %} {% set description = state_attr("sensor." ~ sensor_region_name ~ "_current_warning_level", "warning_" ~ loop.index ~ "_description") %} {% set instruction = state_attr("sensor." ~ sensor_region_name ~ "_current_warning_level", "warning_" ~ loop.index ~ "_instruction") %} {% set level = state_attr("sensor." ~ sensor_region_name ~ "_current_warning_level", "warning_" ~ loop.index ~ "_level") %} {% set time_start = state_attr("sensor." ~ sensor_region_name ~ "_current_warning_level", "warning_" ~ loop.index ~ "_start") %} {% set weekday_start = as_timestamp(time_start) | timestamp_custom("%w", True) | int %} {% set time_end = state_attr("sensor." ~ sensor_region_name ~ "_current_warning_level", "warning_" ~ loop.index ~ "_end") %} {% set weekday_end = as_timestamp(time_end) | timestamp_custom("%w", True) | int %} {% set color = state_attr("sensor." ~ sensor_region_name ~ "_current_warning_level", "warning_" ~ loop.index ~ "_color") %} **<font color={{ color }}>{{ headline }}</font>** **{{ ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_start-1] ~ ", " ~ as_timestamp(time_start) | timestamp_custom('%H:%M') ~ " Uhr - " ~ ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_end-1] ~ ", " ~ as_timestamp(time_end) | timestamp_custom('%H:%M') ~ " Uhr" }}** *{{ description|trim }}* {% if (instruction|trim != "None") %} ****{{ instruction|trim }}**** {% endif %} {% if not loop.last %}***{% endif %} {% endfor %} {% if ((current_count != 0) and (advance_count != 0)) %}***{% endif %} {% for i in range(advance_count) %} {% set headline = state_attr("sensor." ~ sensor_region_name ~ "_advance_warning_level", "warning_" ~ loop.index ~ "_headline") %} {% set description = state_attr("sensor." ~ sensor_region_name ~ "_advance_warning_level", "warning_" ~ loop.index ~ "_description") %} {% set instruction = state_attr("sensor." ~ sensor_region_name ~ "_advance_warning_level", "warning_" ~ loop.index ~ "_instruction") %} {% set level = state_attr("sensor.sensor." ~ sensor_region_name ~ "_advance_warning_level", "warning_" ~ loop.index ~ "_level") %} {% set time_start = state_attr("sensor." ~ sensor_region_name ~ "_advance_warning_level", "warning_" ~ loop.index ~ "_start") %} {% set weekday_start = as_timestamp(time_start) | timestamp_custom("%w", True) | int %} {% set time_end = state_attr("sensor." ~ sensor_region_name ~ "_advance_warning_level", "warning_" ~ loop.index ~ "_end") %} {% set weekday_end = as_timestamp(time_end) | timestamp_custom("%w", True) | int %} {% set color = state_attr("sensor." ~ sensor_region_name ~ "_advance_warning_level", "warning_" ~ loop.index ~ "_color") %} **<font color={{ color }}>{{ headline }}</font>** **{{ ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_start-1] ~ ", " ~ as_timestamp(time_start) | timestamp_custom('%H:%M') ~ " Uhr - " ~ ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_end-1] ~ ", " ~ as_timestamp(time_end) | timestamp_custom('%H:%M') ~ " Uhr" }}** *{{ description|trim }}* {% if (instruction|trim != "None") %} ****{{ instruction|trim }}**** {% endif %} {% if not loop.last %}***{% endif %} {% endfor %} {% endif %}' but no default was specified

Verwendet habe ich folgendens:

{# Beginn: Letzte Aktualisierung #}  

{% set sensor_region_name ="dwd_weather_warnings_106533000" %}

{% set current_last_update = state_attr("sensor." ~ sensor_region_name ~
"_current_warning_level", "last_update") %} {% set weekday_last_update =
as_timestamp(current_last_update) | timestamp_custom("%w", True) | int %}
Stand: {{
['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_last_update-1]
~ ", " ~ as_timestamp(current_last_update) |
timestamp_custom('%d.%m.%Y-%H:%M:%S') }}

{# Ende: Letzte Aktualisierung #} 

{# Beginn: 1. Region #}

{% set sensor_region_name ="dwd_weather_warnings_106533000" %}

...........

Den Rest wie gehabt.

Hat sich eventuell mal bei einem Update was geändert?

Also m.W.n. wurde da zwischenzeitlich nichts geändert und meine Karte funktioniert problemlos.
Hier nochmals mein Code:

{# Beginn: Letzte Aktualisierung #}  

{% set sensor_region_name ="dwd_weather_warnings_808121000" %}

{% set current_last_update = state_attr("sensor." ~ sensor_region_name ~
"_current_warning_level", "last_update") %} {% set weekday_last_update =
as_timestamp(current_last_update) | timestamp_custom("%w", True) | int %}
Stand: {{
['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_last_update-1]
~ ", " ~ as_timestamp(current_last_update) |
timestamp_custom('%d.%m.%Y-%H:%M:%S') }}

{# Ende: Letzte Aktualisierung #} 

{# Beginn: 1. Region #}

{% set sensor_region_name ="dwd_weather_warnings_808121000" %}

{% set current_region_name = state_attr("sensor." ~ sensor_region_name ~
"_current_warning_level", "region_name") %} {% set current_count =
state_attr("sensor." ~ sensor_region_name ~ "_current_warning_level",
"warning_count") %} {% set advance_count = state_attr("sensor." ~
sensor_region_name ~ "_advance_warning_level", "warning_count") %} 

****{{ current_region_name }}****

{% if ((current_count == 0 or current_count == None) and (advance_count ==
0 or advance_count == None)) %} **<font color=#c5e566>Keine
Warnungen</font>**{% else %}
  {% for i in range(current_count) %}
    {% set headline = state_attr("sensor." ~ sensor_region_name ~ "_current_warning_level", "warning_" ~ loop.index ~ "_headline") %}
    {% set description = state_attr("sensor." ~ sensor_region_name ~ "_current_warning_level", "warning_" ~ loop.index ~ "_description") %}
    {% set instruction = state_attr("sensor." ~ sensor_region_name ~ "_current_warning_level", "warning_" ~ loop.index ~ "_instruction") %}
    {% set level = state_attr("sensor." ~ sensor_region_name ~ "_current_warning_level", "warning_" ~ loop.index ~ "_level") %}
    {% set time_start = state_attr("sensor." ~ sensor_region_name ~ "_current_warning_level", "warning_" ~ loop.index ~ "_start") %}
    {% set weekday_start = as_timestamp(time_start) | timestamp_custom("%w", True) | int %}
    {% set time_end = state_attr("sensor." ~ sensor_region_name ~ "_current_warning_level", "warning_" ~ loop.index ~ "_end") %}
    {% set weekday_end = as_timestamp(time_end) | timestamp_custom("%w", True) | int %}
    {% set color = state_attr("sensor." ~ sensor_region_name ~ "_current_warning_level", "warning_" ~ loop.index ~ "_color") %}
  **<font color={{ color }}>{{ headline }}</font>**     
  **{{ ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_start-1] ~ ", " ~ as_timestamp(time_start) | timestamp_custom('%H:%M') ~ " Uhr - " ~ ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_end-1] ~ ", " ~ as_timestamp(time_end) | timestamp_custom('%H:%M') ~ " Uhr" }}**
  *{{ description|trim }}*
  {% if (instruction|trim != "None") %}
  ****{{ instruction|trim }}****
  {% endif %}
  {% if not loop.last %}***{% endif %}
  {% endfor %}
  {% if ((current_count != 0) and (advance_count != 0)) %}***{% endif %}
  {% for i in range(advance_count) %}
    {% set headline = state_attr("sensor." ~ sensor_region_name ~ "_advance_warning_level", "warning_" ~ loop.index ~ "_headline") %}
    {% set description = state_attr("sensor." ~ sensor_region_name ~ "_advance_warning_level", "warning_" ~ loop.index ~ "_description") %}
    {% set instruction = state_attr("sensor." ~ sensor_region_name ~ "_advance_warning_level", "warning_" ~ loop.index ~ "_instruction") %}
    {% set level = state_attr("sensor.sensor." ~ sensor_region_name ~ "_advance_warning_level", "warning_" ~ loop.index ~ "_level") %}
    {% set time_start = state_attr("sensor." ~ sensor_region_name ~ "_advance_warning_level", "warning_" ~ loop.index ~ "_start") %}
    {% set weekday_start = as_timestamp(time_start) | timestamp_custom("%w", True) | int %}
    {% set time_end = state_attr("sensor." ~ sensor_region_name ~ "_advance_warning_level", "warning_" ~ loop.index ~ "_end") %}
    {% set weekday_end = as_timestamp(time_end) | timestamp_custom("%w", True) | int %}
    {% set color = state_attr("sensor." ~ sensor_region_name ~ "_advance_warning_level", "warning_" ~ loop.index ~ "_color") %}
  **<font color={{ color }}>{{ headline }}</font>**
  **{{ ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_start-1] ~ ", " ~ as_timestamp(time_start) | timestamp_custom('%H:%M') ~ " Uhr - " ~ ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_end-1] ~ ", " ~ as_timestamp(time_end) | timestamp_custom('%H:%M') ~ " Uhr" }}**
  *{{ description|trim }}*
  {% if (instruction|trim != "None") %}
  ****{{ instruction|trim }}****
  {% endif %}
  {% if not loop.last %}***{% endif %}
  {% endfor %}
{% endif %}
1 „Gefällt mir“

Muss zuvor irgendwas in der configuration.yaml angelegt werden?

Ich habe durch die HA-Integration auch nur die beiden Sensoren:

  • sensor.dwd_weather_warnings_106533000_aktuelle_warnstufe
  • sensor.dwd_weather_warnings_106533000_vorwarnstufe

Ergänzt das Markdown die beiden jeweiligen warnstufen?

Bei mir wird aktuell nur in der aktuelle_warnstufe die entsprechenden Inhalte angezeigt die ausgegeben werden sollen.

Dieser hier existiert so an sich nicht

{% set sensor_region_name ="dwd_weather_warnings_106533000" %}

Nein, sonst würde hier:

dazu was stehen.

Ich habe in der Integration pro Ort/Sensor auch “nur” 2 Entitäten:
image


Hast Du es testhalber mal mit einer anderen Station probiert (am Besten mit einer, wo es aktuell eine Warnung gibt, sonst sieht man nämlich keine Attribute).

Problem erkannt, Problem gebannt :sweat_smile:

Dein Markdown ist auf Englisch geschrieben bzw. zieht sich die Daten aus den Attributen der englischen Sensoren des DWD. Bei mir sind die in deutsch und daher funktioniert das Markdown auch nicht. Einmal entsprechend abändern und schon klappts :+1:

Vorher:

Nachher:

  • sensor.dwd_weather_warnings_106533000_current_warning_level
  • sensor.dwd_weather_warnings_106533000_advance_warning_level

Nachtrag:
Jetzt bräuchte ich nur noch eine Abänderung dieses Markdowns um nur die Überschrift mir anzeigen zu lassen, sodass dies auf der Startseite im Dashboard angezeigt und dann auf ein Unter-Menü mit dem jetzt funktionierenden Markdown in Voller Beschreibung navigiert. Kenne mich mit da leider so gar nicht aus…

:crayon:by HarryP: Zusammenführung Doppelpost (bitte “bearbeiten” Funktion nutzen)

@realschmidt

Danke für den Tipp DE / EN.
Jetzt funktioniert es auch bei mir.

Auch von mir einen herzlichen Dank an @harryp für den Code und @realschmidt für den Hinweis auf DE/EN.

Hier mal der “eingedeutschte” Code für HA 2024.7 und der DWD Integration.
Der sensor_region_name ist natürlich an die eigenen Gegebenheiten anzupassen.

{# Beginn: Letzte Aktualisierung #}  

{% set sensor_region_name ="stadt_mainz" %}

{% set current_last_update = state_attr("sensor." ~ sensor_region_name ~
"_aktuelle_warnstufe", "last_update") %} {% set weekday_last_update =
as_timestamp(current_last_update) | timestamp_custom("%w", True) | int %}
Stand: {{
['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_last_update-1]
~ ", " ~ as_timestamp(current_last_update) |
timestamp_custom('%d.%m.%Y %H:%M:%S') }}

{# Ende: Letzte Aktualisierung #} 

{# Beginn: 1. Region #}

{% set sensor_region_name ="stadt_mainz" %}

{% set current_region_name = state_attr("sensor." ~ sensor_region_name ~
"_aktuelle_warnstufe", "region_name") %} {% set current_count =
state_attr("sensor." ~ sensor_region_name ~ "_aktuelle_warnstufe",
"warning_count") %} {% set advance_count = state_attr("sensor." ~
sensor_region_name ~ "_vorwarnstufe", "warning_count") %} 

****{{ current_region_name }}****

{% if ((current_count == 0 or current_count == None) and (advance_count ==
0 or advance_count == None)) %} **<font color=#c5e566>Keine
Warnungen</font>**{% else %}
  {% for i in range(current_count) %}
    {% set headline = state_attr("sensor." ~ sensor_region_name ~ "_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_headline") %}
    {% set description = state_attr("sensor." ~ sensor_region_name ~ "_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_description") %}
    {% set instruction = state_attr("sensor." ~ sensor_region_name ~ "_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_instruction") %}
    {% set level = state_attr("sensor." ~ sensor_region_name ~ "_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_level") %}
    {% set time_start = state_attr("sensor." ~ sensor_region_name ~ "_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_start") %}
    {% set weekday_start = as_timestamp(time_start) | timestamp_custom("%w", True) | int %}
    {% set time_end = state_attr("sensor." ~ sensor_region_name ~ "_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_end") %}
    {% set weekday_end = as_timestamp(time_end) | timestamp_custom("%w", True) | int %}
    {% set color = state_attr("sensor." ~ sensor_region_name ~ "_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_color") %}
  **<font color={{ color }}>{{ headline }}</font>**     
  **{{ ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_start-1] ~ ", " ~ as_timestamp(time_start) | timestamp_custom('%H:%M') ~ " Uhr - " ~ ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_end-1] ~ ", " ~ as_timestamp(time_end) | timestamp_custom('%H:%M') ~ " Uhr" }}**
  *{{ description|trim }}*
  {% if (instruction|trim != "None") %}
  ****{{ instruction|trim }}****
  {% endif %}
  {% if not loop.last %}***{% endif %}
  {% endfor %}
  {% if ((current_count != 0) and (advance_count != 0)) %}***{% endif %}
  {% for i in range(advance_count) %}
    {% set headline = state_attr("sensor." ~ sensor_region_name ~ "_vorwarnstufe", "warning_" ~ loop.index ~ "_headline") %}
    {% set description = state_attr("sensor." ~ sensor_region_name ~ "_vorwarnstufe", "warning_" ~ loop.index ~ "_description") %}
    {% set instruction = state_attr("sensor." ~ sensor_region_name ~ "_vorwarnstufe", "warning_" ~ loop.index ~ "_instruction") %}
    {% set level = state_attr("sensor.sensor." ~ sensor_region_name ~ "_vorwarnstufe", "warning_" ~ loop.index ~ "_level") %}
    {% set time_start = state_attr("sensor." ~ sensor_region_name ~ "_vorwarnstufe", "warning_" ~ loop.index ~ "_start") %}
    {% set weekday_start = as_timestamp(time_start) | timestamp_custom("%w", True) | int %}
    {% set time_end = state_attr("sensor." ~ sensor_region_name ~ "_vorwarnstufe", "warning_" ~ loop.index ~ "_end") %}
    {% set weekday_end = as_timestamp(time_end) | timestamp_custom("%w", True) | int %}
    {% set color = state_attr("sensor." ~ sensor_region_name ~ "_vorwarnstufe", "warning_" ~ loop.index ~ "_color") %}
  **<font color={{ color }}>{{ headline }}</font>**
  **{{ ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_start-1] ~ ", " ~ as_timestamp(time_start) | timestamp_custom('%H:%M') ~ " Uhr - " ~ ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_end-1] ~ ", " ~ as_timestamp(time_end) | timestamp_custom('%H:%M') ~ " Uhr" }}**
  *{{ description|trim }}*
  {% if (instruction|trim != "None") %}
  ****{{ instruction|trim }}****
  {% endif %}
  {% if not loop.last %}***{% endif %}
  {% endfor %}
{% endif %}

Gruß Sascha

4 „Gefällt mir“

Hier gibts auch schon was dazu mit dem neuen Update

irgendwas scheint echt seit neustem mit DWD passiert zu sein… was heißt Loop? seit wochen bekomme ich keine meldungen angezeigt nur ständig “Keine Warnungen”


@harryp

Hab auch den Code von @harryp in Verwendung, funktioniert tadellos :slightly_smiling_face:Danke dafür.

Jetzt suche ich noch eine Möglichkeit, in einer Push Notification (am besten über Pushover) das aktuelle Warnlevel bzw. nur die Überschrift der Meldung („Warnung vor Frost“) darzustellen. Bisher habe ich dazu nichts gefunden, wenn, dann finde ich nur sehr komplexen Code mit zu viel Info.

Wie sehen eure Benachrichtigungen aus, sofern ihr welche im Einsatz habt?

Die Meldung ist ein Attribut (warning_1_headline) vom Sensor (sensor.stadt_xy_aktuelle_warnstufe), die Nachricht könntest du also so ähnlich gestalten

action: notify.mobile_app_maxe
metadata: {}
data:
  message: "{{ state_attr('sensor.stadt_xy_aktuelle_warnstufe','warning_1_headline') }}"
  title: Test