DWD Dashboard Karte ab HA 2024-07

Guten Morgen zusammen,

da sich ab der Version 2024-07 die DWD Entitäten geändert haben, ist auch der Code für die Dashboard-Karte zu verändern. Hier mal mein Code der Markdown-Card (stadt_xy ist dann natürlich noch zu ersetzen):

type: markdown
content: >-
  {# Beginn: Letzte Aktualisierung #} 

  {% set sensor_region_name = "stadt_xy" %}

  {% 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_xy" %}

  {% 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" }}**
      **{{ level }}**
      *{{ 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" }}**
      **{{ level }}**
      *{{ description|trim }}*
      {% if (instruction|trim != "None") %}  ****{{ instruction|trim }}****{% endif %}
      {% if not loop.last %}***{% endif %}
    {% endfor %}
  {% endif %}

Ich hoffe es ist kein Fehler drin, ansonsten gerne drauf hinweisen.

VG
maxe

4 „Gefällt mir“

@maxe
Bei mir klappt es nicht ganz:
image

Wenn ich die Entitäten
sensor.stadt_x_aktuelle_warnstufe
sensor.stadt_x_vorwarnstufe

von 0 auf einen beliebigen Wert ändere, ändert sich nichts im Markdown.
Ich habe nur die erste Zeile ersetzt durch “stadt_x” alles andere wird ja dann erweitert.

Irgendwo noch ein denkfehler?

Du hast “stadt_x” reingeschrieben?? Das musst Du anpassen auf den Entitätsnamen, den Du bei der Intergation auslesen kannst:
grafik

Wenn Du also nicht in “x” wohnst, sollte das ein Stadt-name drinstehen :wink:
(so wie bei mir eben “dorfen”)

Das habe ich gemacht.
Und die entitäten mal manuell geändert, steht aber immer noch die ganze zeit Keine Warnung angezeigt.
Das müsste sich ja eigentlich sofort ändern.
Er übernimmt ja auch den richtigen Stadtnamen allerdings zeigt er nichts an.

Hast Du denn aktuell eine Warnung?? Check mal direkt in der Indentitär die Attribute

grafik

Ja habe ich ja über den Zustand von 0 auf 1 2 3 4 manuell angepasst.
Siehe Bild.

image

Das reicht nicht! Wenn Du nur den WERT änderst, hast ja in den Attributen nicht den “Warntext” stehen…

Gibt die Entität nicht nur die Stufe an?
Das doch ein numerischer Wert der da zurückgegeben wird.
Gibt die wirklich Warntexte an, wäre mir komplett neu.

Der WERT der Entität ist die Warnstufe von 0-4 (glaub ich). Der Warnmeldungstext steht in einem Attribut der Entität.

Wenn Du nur den WERT änderst, hast ja in den Attributen immer noch nicht den “Warntext” stehen…
Dummerweise hab ich jetzt grade eben auch keine Warnung, sonst könnt ich fotografieren.

Ok das beobachte ich mal ob es dann ein Attribut Text gibt

Kannst Du so testen:
Gehe nach Entwicklerwerkzeuge, nach Zustände, such Dir “stadt-x.Warnstufe” und schreib als “warning_1” ein Attribut rein: und änder den Wert des Zusatnds auf z.B. 4

Wenn dann die Attribute der Entität anzeigst, schauts so aus:

grafik

Ich benutze nicht die Markup-Card, hab mir selber was gebastel:
grafik

1 „Gefällt mir“

Ist bei mir (in Node-Red) auch so, deshalb mein Trick der problemlos funktioniert:

Einfach die Entitäten wieder so umbenennen, wie sie vor dem Update waren und gut! :grinning:

Valider Ansatz, nur:

a) keine Ahnung, ob das beim nächsten Update der DWD-Integration nicht wieder überschrieben wird
b) hab ich tatsächlich überlegt, das auch zu machen, aber ich habs nur an ein paar wenigen Stellen in den Dashboards ändern müssen
c) finde ich die neuen Namen “sprechender” als die alten mit der Region-ID.

→ Jeder nach seinem Gusto!

1 „Gefällt mir“

Gibt offensichtlich noch mehr Probleme mit der Änderung:

Das ist das gleiche Problem. Umbenennung der Entität.

Bei dem Quellcode von Maxe fehlt mir wieder die Umrechnung mit | as_local() auf lokale Zeit, ohne die bei meiner Installation die Start und Endzeiten verschoben sind. Daher nochmals mein Quellcode zum Vergleich:

{% set current_count = state_attr("sensor.stadt_frondenberg_ruhr_aktuelle_warnstufe", "warning_count") %} {% set advance_count = state_attr("sensor.stadt_frondenberg_ruhr_vorwarnstufe", "warning_count") %} {% 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.stadt_frondenberg_ruhr_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_headline") %}
    {% set description = state_attr("sensor.stadt_frondenberg_ruhr_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_description") %}
    {% set level = state_attr("sensor.stadt_frondenberg_ruhr_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_level") %}
    {% set time_start = state_attr("sensor.stadt_frondenberg_ruhr_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_start") | as_local() %}
    {% set weekday_start = as_timestamp(time_start) | timestamp_custom("%w", True) | int %}
    {% set time_end = state_attr("sensor.stadt_frondenberg_ruhr_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_end") | as_local() %}
    {% set weekday_end = as_timestamp(time_end) | timestamp_custom("%w", True) | int %}
    {% set color = state_attr("sensor.stadt_frondenberg_ruhr_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_color") %}
  **<font color={{ color }}>{{ headline }}</font>**     
  {{ ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_start-1] ~ ", " ~ time_start.strftime("%H:%M") ~ " Uhr - " ~ ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_end-1] ~ ", " ~ time_end.strftime("%H:%M") ~ " Uhr" }}

  *{{ description | trim }}*
  {% 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.stadt_frondenberg_ruhr_vorwarnstufe", "warning_" ~ loop.index ~ "_headline") %}
    {% set description = state_attr("sensor.stadt_frondenberg_ruhr_vorwarnstufe", "warning_" ~ loop.index ~ "_description") %}
    {% set level = state_attr("sensor.sensor.stadt_frondenberg_ruhr_vorwarnstufe", "warning_" ~ loop.index ~ "_level") %}
    {% set time_start = state_attr("sensor.stadt_frondenberg_ruhr_vorwarnstufe", "warning_" ~ loop.index ~ "_start") | as_local() %}
    {% set weekday_start = as_timestamp(time_start) | timestamp_custom("%w", True) | int %}
    {% set time_end = state_attr("sensor.stadt_frondenberg_ruhr_vorwarnstufe", "warning_" ~ loop.index ~ "_end") | as_local() %}
    {% set weekday_end = as_timestamp(time_end) | timestamp_custom("%w", True) | int %}
    {% set color = state_attr("sensor.stadt_frondenberg_ruhr_vorwarnstufe", "warning_" ~ loop.index ~ "_color") %}
  **<font color={{ color }}>{{ headline }}</font>**
  {{ ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_start-1] ~ ", " ~ time_start.strftime("%H:%M") ~ " Uhr - " ~ ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_end-1] ~ ", " ~ time_end.strftime("%H:%M") ~ " Uhr" }}
  *{{ description|trim }}*
  {% if not loop.last %}***{% endif %}
  {% endfor %}
{% endif %}

Kannst du mal deinen Kompletten YAML Code einmal posten?

Kannst du mal deine Lösung vorstellen, die du nutzt?

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

Welchen Yaml-Code, bzw. von was??

Die Karte auf dem Dash ist eine simple Tile-Card, die überhaupt nur sichtbar ist, wenn was ansteht:

type: horizontal-stack
cards:
  - type: tile
    entity: sensor.stadt_dorfen_aktuelle_warnstufe
    name: Warnstufe
    show_entity_picture: false
    hide_state: false
    state_content:
      - state
      - warning_1_name
    color: red
visibility:
  - condition: state
    entity: sensor.stadt_dorfen_aktuelle_warnstufe
    state_not: '0'

Der Horizontale Stack ist nur drin, weil da weiter unten noch mehr ist, was hier nicht interessiert, und damit das immer an der selben Stelle auftaucht.

Die Karte ist dann einfach nicht da, wenn keine Warnung ansteht und wenn Sie da ist, sieht sie aus wie oben. Alles HA-Bordmittel :wink:

Nur der Vollständigkeit halber, weil ich grade ne Warnung gekriegt hab, so sieht das dann “in echt” aus:

Das wird in meiner Karte dann das:

Ich zeige also nur das Attribut “Warning 1 headline” an und das ganze ist nur sichtbar, wenn der Level nicht “0” ist…

Ich hab gerade auch eine Vorwarnung bekommen und gemerkt, dass die Einrückungen nicht ganz passten. Außerdem hab ich das Level noch mit eingebaut.
Hier noch mal der aktualisierte Code

type: markdown
content: >-
  {# Beginn: Letzte Aktualisierung #} 

  {% set sensor_region_name = "stadt_xy" %}

  {% 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_xy" %}

  {% 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 }}>Level {{ level }} - {{ 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 }}>Level {{ level }} - {{ 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 %}

4 „Gefällt mir“

Moin,

Danke fürs Teilen, macht, was es soll :slight_smile:

VG
Bernd

1 „Gefällt mir“