Wetterwarnung - DWD

Bereich rings rum zum Thema Yaml und seine Tücken.


Antworten
Benutzeravatar
Volker
Beiträge: 226
Registriert: Mi 28. Jun 2023, 17:20
Wohnort: Südhessen
Has thanked: 71 times
Been thanked: 26 times

Wetterwarnung - DWD

Beitrag von Volker »

Moin,

ich bekomme in meinem Dashboard die aktuellsten Warnungen des DWD Angezeigt. Dafür nutze ich folgenden Code:

Code: Alles auswählen

    - type: markdown
      content: |2-
          {% set level_colors = {0:'#c5e566', 1:'#ffeb3b', 2:'#fb8c00', 3:'#e53935', 4:'#880e4f', 20:'#fe68fe', 50:'#fe68fe'} %}
          {% set current_count = state_attr("sensor.dwd_weather_warnings_806433004_current_warning_level", "warning_count") %}
          {% set advance_count = state_attr("sensor.dwd_weather_warnings_806433004_advance_warning_level", "warning_count") %}
          {% if ((current_count == 0 or current_count == None) and (advance_count == 0 or advance_count == None)) %}
          **<font color={{ level_colors[0] }}>Keine Warnungen</font>**
          {% else %}
            {% for i in range(current_count) %}
              {% set headline = state_attr("sensor.dwd_weather_warnings_806433004_current_warning_level", "warning_" ~ loop.index ~ "_headline") %}
              {% set description = state_attr("sensor.dwd_weather_warnings_806433004_current_warning_level", "warning_" ~ loop.index ~ "_description") %}
              {% set level = state_attr("sensor.dwd_weather_warnings_806433004_current_warning_level", "warning_" ~ loop.index ~ "_level") %}
              {% set time_start = state_attr("sensor.dwd_weather_warnings_806433004_current_warning_level", "warning_" ~ loop.index ~ "_start") %}
              {% set time_end = state_attr("sensor.dwd_weather_warnings_806433004_current_warning_level", "warning_" ~ loop.index ~ "_end") %}
            **<font color={{ level_colors[level] }}>{{ headline }}</font>**
            {{ time_start.strftime("%a %H:%M") ~ " - " ~ time_end.strftime("%a %H:%M") }}
            *{{ 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.dwd_weather_warnings_806433004_advance_warning_level", "warning_" ~ loop.index ~ "_headline") %}
              {% set description = state_attr("sensor.dwd_weather_warnings_806433004_advance_warning_level", "warning_" ~ loop.index ~ "_description") %}
              {% set level = state_attr("sensor.dwd_weather_warnings_806433004_advance_warning_level", "warning_" ~ loop.index ~ "_level") %}
              {% set time_start = state_attr("sensor.dwd_weather_warnings_806433004_advance_warning_level", "warning_" ~ loop.index ~ "_start") %}
              {% set time_end = state_attr("sensor.dwd_weather_warnings_806433004_advance_warning_level", "warning_" ~ loop.index ~ "_end") %}
            **<font color={{ level_colors[level] }}>{{ headline }}</font>**
            {{ time_start.strftime("%a %H:%M") ~ " - " ~ time_end.strftime("%a %H:%M") }}
            *{{ description|trim }}*
            {% if not loop.last %}***{% endif %}
            {% endfor %}
          {% endif %}
      title: Wetterwarnung

Folgendes wird angezeigt:

dwd.png
dwd.png (10.46 KiB) 1064 mal betrachtet

Die erste Hälfte funktioniert (Überschrift wird in entsprechender Farbe dargestellt)
Bei der 2. Meldung wird statt der richtig formatierten Überschrift der YAML Code angezeigt. Kann ich mir einfach nicht erklären....
Kann mir jemand helfen, den Fehler zu finden ?

Danke
Volker

Home Assistant auf HP T630 8GB SSD 128GB
.... und einen unbändigen Spieltrieb :D ....

Jim_OS

Re: Wetterwarnung - DWD

Beitrag von Jim_OS »

Moin,

ich hatte DWD bisher zwar gar nicht eingebunden, aber ich habe das gerade mal für mich gebastelt. :) Wie wäre es damit:

HA_DWD_Warnung.png

Code dafür:

Code: Alles auswählen

        {% set current_count = state_attr("sensor.dwd_weather_warnings_803459010_aktuelle_warnstufe", "warning_count") %}
        {% set advance_count = state_attr("sensor.dwd_weather_warnings_803459010_vorwarnstufe", "warning_count") %}
        {% if ((current_count == 0 or current_count == None) and (advance_count == 0 or advance_count == None)) %}
        **<font color=#44739e>Keine Warnungen</font>**
        {% else %}
          {% for i in range(current_count) %}
            {% set headline = state_attr("sensor.dwd_weather_warnings_803459010_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_headline") %}
            {% set description = state_attr("sensor.dwd_weather_warnings_803459010_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_description") %}
            {% set level = state_attr("sensor.dwd_weather_warnings_803459010_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_level") %}
            {% set time_start = state_attr("sensor.dwd_weather_warnings_803459010_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_start") | as_timestamp %}
            {% set weekday_start = time_start | timestamp_custom("%w", True) | int %}
            {% set time_end = state_attr("sensor.dwd_weather_warnings_803459010_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_end") | as_timestamp %}
            {% set weekday_end = time_end | timestamp_custom("%w", True) | int %}
  **<font color=#fdd835>{{ headline }}</font>**     

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

  *<font color=gray>{{
  ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_start-1]
  ~ ", " ~ time_start | timestamp_custom("%H:%M") ~ " - " ~
  ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_end-1]
  ~ ", " ~ time_end | timestamp_custom("%H:%M") }}</font>*
          {{ description|trim }}
          {% if not loop.last %}
  ***
          {% endif %}
          {% endfor %}
        {% endif %} 

Die ID musst Du noch durch Deine ersetzen. Bei der Formatierung der Farben usw. kannst Du dann ja die Anpassungen vornehmen wie Du möchtest.

Edit: War doch zu schnell gebastelt. :lol: Die Anzeige funktioniert zwar richtig, aber im HA Log erscheinen Fehler bzgl. des Template

Code: Alles auswählen

Error while processing template: Template<template=(content: >- {% set level_colors = ["#c5e566", "#ffeb3b", "#fb8c00", "#e53935", "#880e4f"]
...

Da musst Du selber dann doch noch mal schauen. Für mich hat die DWD Integration nicht wirklich einen Mehrwert, sodass ich die bereits wieder gelöscht habe.

VG Jim

Jim_OS

Re: Wetterwarnung - DWD

Beitrag von Jim_OS »

Durch mein basteln habe ich mir - wie sagt man so schön - jetzt selber ins Knie geschossen. :lol: Obwohl ich die DVD Integration wieder gelöscht habe und HA, incl. dem HA Host neu gebootet habe, habe ich jetzt weiterhin zwei Fehlermeldungen im Log die damit im Zusammenhang stehen. :?

Fehlermeldung 1:

Code: Alles auswählen

Logger: homeassistant.helpers.event
Source: helpers/template.py:570
First occurred: 10:33:34 (2 occurrences)
Last logged: 10:33:34

Error while processing template: Template<template=(content: >- {% set level_colors = ["#c5e566", "#ffeb3b", "#fb8c00", "#e53935", "#880e4f"] %} {% set current_count = state_attr("sensor.warnwetter_current_warning_level", "warning_count") %} {% set advance_count = state_attr("sensor.warnwetter_advance_warning_level", "warning_count") %} {% if ((current_count == 0) and (advance_count == 0)) %} **<font color={{ level_colors[0] }}>Keine Warnungen</font>** {% else %} {% for i in range(current_count) %} {% set headline = state_attr("sensor.warnwetter_current_warning_level", "warning_" ~ loop.index ~ "_headline") %} {% set description = state_attr("sensor.warnwetter_current_warning_level", "warning_" ~ loop.index ~ "_description") %} {% set level = state_attr("sensor.warnwetter_current_warning_level", "warning_" ~ loop.index ~ "_level") %} {% set time_start = state_attr("sensor.warnwetter_current_warning_level", "warning_" ~ loop.index ~ "_start") %} {% set time_end = state_attr("sensor.warnwetter_current_warning_level", "warning_" ~ loop.index ~ "_end") %} **<font color={{ level_colors[level] }}>{{ headline }}</font>** {{ time_start.strftime("%a %H:%M") ~ " - " ~ time_end.strftime("%a %H:%M") }} *{{ description }}* {% 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.warnwetter_advance_warning_level", "warning_" ~ loop.index ~ "_headline") %} {% set description = state_attr("sensor.warnwetter_advance_warning_level", "warning_" ~ loop.index ~ "_description") %} {% set level = state_attr("sensor.warnwetter_advance_warning_level", "warning_" ~ loop.index ~ "_level") %} {% set time_start = state_attr("sensor.warnwetter_advance_warning_level", "warning_" ~ loop.index ~ "_start") %} {% set time_end = state_attr("sensor.warnwetter_advance_warning_level", "warning_" ~ loop.index ~ "_end") %} **<font color={{ level_colors[level] }}>{{ headline }}</font>** {{ time_start.strftime("%a %H:%M") ~ " - " ~ time_end.strftime("%a %H:%M") }} *{{ description }}* {% if not loop.last %}***{% endif %} {% endfor %} {% endif %} type: markdown title: DWD Wetterwarnungen The result looks like:) renders=2>
Error while processing template: Template<template=(content: >- {% set level_colors = ["#c5e566", "#ffeb3b", "#fb8c00", "#e53935", "#880e4f"] %} {% set current_count = state_attr("sensor.warnwetter_current_warning_level", "warning_count") %} {% set advance_count = state_attr("sensor.warnwetter_advance_warning_level", "warning_count") %} {% if ((current_count == 0) and (advance_count == 0)) %} **<font color={{ level_colors[0] }}>Keine Warnungen</font>** {% else %} {% for i in range(current_count) %} {% set headline = state_attr("sensor.dwd_weather_warnings_803459010_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_headline") %} {% set description = state_attr("sensor.dwd_weather_warnings_803459010_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_description") %} {% set level = state_attr("sensor.dwd_weather_warnings_803459010_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_level") %} {% set time_start = state_attr("sensor.dwd_weather_warnings_803459010_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_start") %} {% set time_end = state_attr("sensor.dwd_weather_warnings_803459010_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_end") %} **<font color={{ level_colors[level] }}>{{ headline }}</font>** {{ time_start.strftime("%a %H:%M") ~ " - " ~ time_end.strftime("%a %H:%M") }} *{{ description }}* {% 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.dwd_weather_warnings_803459010_vorwarnstufe", "warning_" ~ loop.index ~ "_headline") %} {% set description = state_attr("sensor.dwd_weather_warnings_803459010_vorwarnstufe", "warning_" ~ loop.index ~ "_description") %} {% set level = state_attr("sensor.dwd_weather_warnings_803459010_vorwarnstufe", "warning_" ~ loop.index ~ "_level") %} {% set time_start = state_attr("sensor.dwd_weather_warnings_803459010_vorwarnstufe", "warning_" ~ loop.index ~ "_start") %} {% set time_end = state_attr("sensor.dwd_weather_warnings_803459010_vorwarnstufe", "warning_" ~ loop.index ~ "_end") %} **<font color={{ level_colors[level] }}>{{ headline }}</font>** {{ time_start.strftime("%a %H:%M") ~ " - " ~ time_end.strftime("%a %H:%M") }} *{{ description }}* {% if not loop.last %}***{% endif %} {% endfor %} {% endif %} type: markdown title: DWD Wetterwarnungen) renders=2>
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 568, in async_render
    render_result = _render_with_context(self.template, compiled, **kwargs)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 2198, in _render_with_context
    return template.render(**kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/jinja2/environment.py", line 1301, in render
    self.environment.handle_exception()
  File "/usr/local/lib/python3.11/site-packages/jinja2/environment.py", line 936, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "<template>", line 8, in top-level template code
  File "/usr/local/lib/python3.11/site-packages/jinja2/sandbox.py", line 393, in call
    return __context.call(__obj, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/jinja2/sandbox.py", line 101, in safe_range
    rng = range(*args)
          ^^^^^^^^^^^^
TypeError: 'NoneType' object cannot be interpreted as an integer

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 694, in async_render_to_info
    render_info._result = self.async_render(
                          ^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 570, in async_render
    raise TemplateError(err) from err
homeassistant.exceptions.TemplateError: TypeError: 'NoneType' object cannot be interpreted as an integer

Fehlermeldung 2:

Code: Alles auswählen

Logger: homeassistant.helpers.event
Source: helpers/template.py:514
First occurred: 10:33:34 (1 occurrences)
Last logged: 10:33:34

Error while processing template: Template<template=(content: >- {% set level_colors = ["#c5e566", "#ffeb3b", "#fb8c00", "#e53935", "#880e4f"] %} {% set current_count = state_attr("sensor.dwd_weather_warnings_803459010_aktuelle_warnstufe", "warning_count") %} {% set advance_count = state_attr("sensor.dwd_weather_warnings_803459010_vorwarnstufe"", "warning_count") %} {% if ((current_count == 0) and (advance_count == 0)) %} **<font color={{ level_colors[0] }}>Keine Warnungen</font>** {% else %} {% for i in range(current_count) %} {% set headline = state_attr("sensor.dwd_weather_warnings_803459010_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_headline") %} {% set description = state_attr("sensor.dwd_weather_warnings_803459010_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_description") %} {% set level = state_attr("sensor.dwd_weather_warnings_803459010_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_level") %} {% set time_start = state_attr("sensor.dwd_weather_warnings_803459010_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_start") %} {% set time_end = state_attr("sensor.dwd_weather_warnings_803459010_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_end") %} **<font color={{ level_colors[level] }}>{{ headline }}</font>** {{ time_start.strftime("%a %H:%M") ~ " - " ~ time_end.strftime("%a %H:%M") }} *{{ description }}* {% 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.dwd_weather_warnings_803459010_vorwarnstufe", "warning_" ~ loop.index ~ "_headline") %} {% set description = state_attr("sensor.dwd_weather_warnings_803459010_vorwarnstufe", "warning_" ~ loop.index ~ "_description") %} {% set level = state_attr("sensor.dwd_weather_warnings_803459010_vorwarnstufe", "warning_" ~ loop.index ~ "_level") %} {% set time_start = state_attr("sensor.dwd_weather_warnings_803459010_vorwarnstufe", "warning_" ~ loop.index ~ "_start") %} {% set time_end = state_attr("sensor.dwd_weather_warnings_803459010_vorwarnstufe", "warning_" ~ loop.index ~ "_end") %} **<font color={{ level_colors[level] }}>{{ headline }}</font>** {{ time_start.strftime("%a %H:%M") ~ " - " ~ time_end.strftime("%a %H:%M") }} *{{ description }}* {% if not loop.last %}***{% endif %} {% endfor %} {% endif %} type: markdown title: DWD Wetterwarnungen) renders=2>
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 512, in ensure_valid
    self._compiled_code = self._env.compile(self.template)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 2607, in compile
    cached = self.template_cache[source] = super().compile(source)
                                           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/jinja2/environment.py", line 768, in compile
    self.handle_exception(source=source_hint)
  File "/usr/local/lib/python3.11/site-packages/jinja2/environment.py", line 936, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "<unknown>", line 4, in template
jinja2.exceptions.TemplateSyntaxError: expected token ',', got 'warning_count'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 694, in async_render_to_info
    render_info._result = self.async_render(
                          ^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 562, in async_render
    compiled = self._compiled or self._ensure_compiled(limited, strict, log_fn)
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 765, in _ensure_compiled
    self.ensure_valid()
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 514, in ensure_valid
    raise TemplateError(err) from err
homeassistant.exceptions.TemplateError: TemplateSyntaxError: expected token ',', got 'warning_count'

Ich habe noch keine Ahnung was da jetzt los ist. Falls dazu jemand spontan eine Idee hat dann immer her damit.

VG Jim

Jim_OS

Re: Wetterwarnung - DWD

Beitrag von Jim_OS »

Öfter mal was Neues: HA schafft es immer mal wieder Dinge zu machen die ich nicht wirklich nachvollziehen kann. :?

Die Template Fehlermeldungen im HA Log sind jetzt weg. Die Lösung war den Browser - in dem Fall Chome - einfach zu schließen und wieder neu zu starten. Ein Cache löschen und Seite neu laden hätte vermutlich auch gereicht.

Wieso HA jetzt irgendwelche "wilden" Log-Einträge, incl. Line-Verweise zu angeblichen Fehlern in z.B. /usr/src/homeassistant/homeassistant/helpers/template.py oder auch /usr/local/lib/python3.11/site-packages/jinja2/environment.py macht muss und will ich gar nicht verstehen. :lol: Die Fehler sind jetzt weg und das reicht mir.

@Volker Ob diese Fehlermeldungen im Log jetzt tatsächlich einen Zusammenhang mit dem Code von mir hatten, oder es ggf. ein anderes Problem gab, kann ich nicht sagen. Die Anzeige der DWD Warnmeldungen hat bei mir mit dem Code jedenfalls funktioniert. Trotzdem dürfte wohl besser sein meinen Code oben so nicht zu verwenden. Daher sorry.

VG Jim

Jim_OS

Re: Wetterwarnung - DWD

Beitrag von Jim_OS »

So das lies mir jetzt doch keine Ruhe und ich habe mir das jetzt noch einmal in Ruhe angeschaut. Hier jetzt das Ergebnis davon, bzw. die Variante die bei mir funktioniert und das ohne das wieder irgendwelche komischen Fehlermeldungen im HA Log auftauchen.. ;)

Code: Alles auswählen

type: markdown
content: >2-
        {% set current_count = state_attr("sensor.dwd_weather_warnings_803459010_aktuelle_warnstufe", "warning_count") %}
        {% set advance_count = state_attr("sensor.dwd_weather_warnings_803459010_vorwarnstufe", "warning_count") %}
        {% if ((current_count == 0 or current_count == None) and (advance_count == 0 or advance_count == None)) %}
        **<font color=#44739e>Keine Warnungen</font>**
        {% else %}
          {% for i in range(current_count) %}
            {% set headline = state_attr("sensor.dwd_weather_warnings_803459010_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_headline") %}
            {% set description = state_attr("sensor.dwd_weather_warnings_803459010_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_description") %}
            {% set level = state_attr("sensor.dwd_weather_warnings_803459010_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_level") %}
            {% set time_start = state_attr("sensor.dwd_weather_warnings_803459010_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_start") | as_timestamp %}
            {% set weekday_start = time_start | timestamp_custom("%w", True) | int %}
            {% set time_end = state_attr("sensor.dwd_weather_warnings_803459010_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_end") | as_timestamp %}
            {% set weekday_end = time_end | timestamp_custom("%w", True) | int %}
  **<font color=#fdd835>{{ headline }}</font>**     

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

  *<font color=gray>{{
  ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_start-1]
  ~ ", " ~ time_start | timestamp_custom("%H:%M") ~ " - " ~
  ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_end-1]
  ~ ", " ~ time_end | timestamp_custom("%H:%M") }}</font>*
          {{ description|trim }}
          {% if not loop.last %}
  ***
          {% endif %}
          {% endfor %}
        {% endif %} 
title: DWD Wetterwarnung

Was dann so aussieht:

HA_DWD_Wetterwarnung_neu.png

Die beiden Sensoren:

sensor.dwd_weather_warnings_803459010_aktuelle_warnstufe
sensor.dwd_weather_warnings_803459010_vorwarnstufe

musst Du dann im Code gegen die von Dir austauschen, sprich gegen die beiden die Dir bei der DWD Wetter Integration bei Entitäten angezeigt werden.

VG Jim

Benutzeravatar
Volker
Beiträge: 226
Registriert: Mi 28. Jun 2023, 17:20
Wohnort: Südhessen
Has thanked: 71 times
Been thanked: 26 times

Re: Wetterwarnung - DWD

Beitrag von Volker »

Hallo @Jim_OS
Danke - da hast du dir wieder mal für mich und die Community sehr viel Arbeit gemacht.

Ich wer das jetzt mal bei mir mit einbinden, testen und dann berichten

Home Assistant auf HP T630 8GB SSD 128GB
.... und einen unbändigen Spieltrieb :D ....

Benutzeravatar
Volker
Beiträge: 226
Registriert: Mi 28. Jun 2023, 17:20
Wohnort: Südhessen
Has thanked: 71 times
Been thanked: 26 times

Re: Wetterwarnung - DWD

Beitrag von Volker »

@Jim_OS Ich hab deinen COde jetzt mal genau so übernommen (nur die Sensordaten angepasst)....
Die Karte zeigt dann KEINE Wetterwarnung an.
Bei meinem alten Code werden die Warnungen angezeigt. Habs auch in verschiedenen Browsern mit gleichem Ergebnis getestet. Irgendwie komisch

Home Assistant auf HP T630 8GB SSD 128GB
.... und einen unbändigen Spieltrieb :D ....

Jim_OS

Re: Wetterwarnung - DWD

Beitrag von Jim_OS »

Hm komisch das sollte jetzt eigentlich auch bei Dir funktionieren. Ich habe das jetzt bei meinem HA-Testsystem unter Core 2023.11.3 erstellt und getestet. Heute Vormittag war nur auf die Schnelle und da hatte ich auch Bugs in dem Code. Aber jetzt funktioniert der Code bei mir vollkommen korrekt und ohne Fehler im Log.

Hast Du, nachdem Du die Sensor-Entitäten von Dir eingetragen hast, den Code im Code Editor so übernommen. Also da

HA_Markdown_Visuellen_Editor.png

Ich habe das gerade noch einmal erneut probiert und eine neue Karte erstellt und bei mir funktioniert das.

Wie lauten die beiden Sensor-Entitäten die Du bei Dir benutzt hast?

Poste hier mal Deinen Code.

VG Jim

Jim_OS

Re: Wetterwarnung - DWD

Beitrag von Jim_OS »

Die DWD Integration sieht halt so aus und da steht ja auch die ID

HD_DWD_Integration.png

und die beiden Entitäten bei mir sind dann:
sensor.dwd_weather_warnings_803459010_aktuelle_warnstufe
sensor.dwd_weather_warnings_803459010_vorwarnstufe

D.h. wenn Du alle Entitäten von mir durch Deine im Code ersetzt hast sollte das funktionieren. Wenn nicht weiß ich leider auch nicht weiter. Dann müsste hier jemand anderes ggf. noch mal einen Gegentest machen.

Wie gesagt bei mir funktioniert das so. Habe ich mehrfach überprüft.

Edit: Auch wenn die Browser nicht wirklich eine Rolle spielen, aber ich habe eben trotzdem mal Chrome und FF getestet. Funktioniert alles bei beiden.

VG Jim

Benutzeravatar
Volker
Beiträge: 226
Registriert: Mi 28. Jun 2023, 17:20
Wohnort: Südhessen
Has thanked: 71 times
Been thanked: 26 times

Re: Wetterwarnung - DWD

Beitrag von Volker »

ist der identische Code wie von dir - nur hat ein anderer Sensor

Code: Alles auswählen

type: markdown
content: >2-
        {% set current_count = state_attr("sensor.dwd_weather_warnings_806433004_aktuelle_warnstufe", "warning_count") %}
        {% set advance_count = state_attr("sensor.dwd_weather_warnings_806433004_vorwarnstufe", "warning_count") %}
        {% if ((current_count == 0 or current_count == None) and (advance_count == 0 or advance_count == None)) %}
        **<font color=#44739e>Keine Warnungen</font>**
        {% else %}
          {% for i in range(current_count) %}
            {% set headline = state_attr("sensor.dwd_weather_warnings_806433004_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_headline") %}
            {% set description = state_attr("sensor.dwd_weather_warnings_806433004_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_description") %}
            {% set level = state_attr("sensor.dwd_weather_warnings_806433004_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_level") %}
            {% set time_start = state_attr("sensor.dwd_weather_warnings_806433004_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_start") | as_timestamp %}
            {% set weekday_start = time_start | timestamp_custom("%w", True) | int %}
            {% set time_end = state_attr("sensor.dwd_weather_warnings_806433004_aktuelle_warnstufe", "warning_" ~ loop.index ~ "_end") | as_timestamp %}
            {% set weekday_end = time_end | timestamp_custom("%w", True) | int %}
  **<font color=#fdd835>{{ headline }}</font>**     

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

  *<font color=gray>{{
  ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_start-1]
  ~ ", " ~ time_start | timestamp_custom("%H:%M") ~ " - " ~
  ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_end-1]
  ~ ", " ~ time_end | timestamp_custom("%H:%M") }}</font>*
          {{ description|trim }}
          {% if not loop.last %}
  ***
          {% endif %}
          {% endfor %}
        {% endif %} 
title: DWD Wetterwarnung

Home Assistant auf HP T630 8GB SSD 128GB
.... und einen unbändigen Spieltrieb :D ....

Benutzeravatar
Volker
Beiträge: 226
Registriert: Mi 28. Jun 2023, 17:20
Wohnort: Südhessen
Has thanked: 71 times
Been thanked: 26 times

Re: Wetterwarnung - DWD

Beitrag von Volker »

wart... ich denke ich hab den Fehler.... die sensoren haben bei mir Englische Namen..... ich hatte nur die ID getauscht

Home Assistant auf HP T630 8GB SSD 128GB
.... und einen unbändigen Spieltrieb :D ....

Benutzeravatar
Volker
Beiträge: 226
Registriert: Mi 28. Jun 2023, 17:20
Wohnort: Südhessen
Has thanked: 71 times
Been thanked: 26 times

Re: Wetterwarnung - DWD

Beitrag von Volker »

ja, das wars... lag am englischen Sensorname. Jetzt funktioniert es!

Home Assistant auf HP T630 8GB SSD 128GB
.... und einen unbändigen Spieltrieb :D ....

Jim_OS

Re: Wetterwarnung - DWD

Beitrag von Jim_OS »

Ja manchmal stellt sich schon eine gewisse "Betriebsblindheit" ein wenn man Dinge schon x-mal probiert hat. Fein das es jetzt funktioniert. :)

VG Jim

breitby
Beiträge: 1
Registriert: So 18. Feb 2024, 06:56

Re: Wetterwarnung - DWD

Beitrag von breitby »

Vielen dank für die Vorlage, leider bekomme ich eine Fehlermeldung und kenne keine Lösung. :roll:

Dateianhänge
Screenshot 2024-02-18 072311.png
Screenshot 2024-02-18 072311.png (59.26 KiB) 802 mal betrachtet
Benutzeravatar
Volker
Beiträge: 226
Registriert: Mi 28. Jun 2023, 17:20
Wohnort: Südhessen
Has thanked: 71 times
Been thanked: 26 times

Re: Wetterwarnung - DWD

Beitrag von Volker »

Auf Anhieb fällt mir da jetzt nichts auf.... oft ist es nur ein Leerzeichen mehr oder weniger..

Hier mal den Code den ich aktuell nutze:

Code: Alles auswählen

type: conditional
conditions:
  - entity: sensor.dwd_weather_warnings_806433004_current_warning_level
    state_not: '0'
card:
  type: vertical-stack
  cards:
    - type: markdown
      content: >2
              {% set level_colors = {0:'#c5e566', 1:'#ffeb3b', 2:'#fb8c00', 3:'#e53935', 4:'#880e4f', 20:'#fe68fe', 50:'#fe68fe'} %}
              {% set current_count = state_attr("sensor.dwd_weather_warnings_806433004_current_warning_level", "warning_count") %}
              {% set advance_count = state_attr("sensor.dwd_weather_warnings_806433004_advance_warning_level", "warning_count") %}
              {% if ((current_count == 0 or current_count == None) and (advance_count == 0 or advance_count == None)) %}
              **<font color={{ level_colors[level] }}>{{ headline }}</font>**
              {% else %}
                {% for i in range(current_count) %}
                  {% set headline = state_attr("sensor.dwd_weather_warnings_806433004_current_warning_level", "warning_" ~ loop.index ~ "_headline") %}
                  {% set description = state_attr("sensor.dwd_weather_warnings_806433004_current_warning_level", "warning_" ~ loop.index ~ "_description") %}
                  {% set level = state_attr("sensor.dwd_weather_warnings_806433004_current_warning_level", "warning_" ~ loop.index ~ "_level") %}
                  {% set time_start = state_attr("sensor.dwd_weather_warnings_806433004_current_warning_level", "warning_" ~ loop.index ~ "_start") | as_timestamp %}
                  {% set weekday_start = time_start | timestamp_custom("%w", True) | int %}
                  {% set time_end = state_attr("sensor.dwd_weather_warnings_806433004_current_warning_level", "warning_" ~ loop.index ~ "_end") | as_timestamp %}
                  {% set weekday_end = time_end | timestamp_custom("%w", True) | int %}
        **<font color={{ level_colors[level] }}>{{ headline }}</font>**     

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

        *<font color=gray>{{
        ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_start-1]
        ~ ", " ~ time_start | timestamp_custom("%H:%M") ~ " - " ~
        ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][weekday_end-1]
        ~ ", " ~ time_end | timestamp_custom("%H:%M") }}</font>*
                {{ description|trim }}
                {% if not loop.last %}
        ***
                {% endif %}
                {% endfor %}
                {% endif %} 
      title: Wetterwarnung
    - camera_view: auto
      type: picture-glance
      entities: []
      camera_image: camera.www_dwd_de
    - type: picture
      image: local/pictures/agenda2.png
      

Home Assistant auf HP T630 8GB SSD 128GB
.... und einen unbändigen Spieltrieb :D ....

Antworten