Warnungen der NINA-Warn-App in Home Assistant anzeigen

NINA-Warnmeldungen kannst du relativ einfach in Home Assistant einbinden und dir „im Ernstfall“ auf deinem Dashboard anzeigen lassen. Du benötigst lediglich die NINA-Integration sowie fürs Frontend eine Erweiterung über HACS. Wie du genau vorgehen musst, erkläre ich dir in diesem Beitrag!

Wenn immer ich eine App von meinem Handy schmeißen kann, mache ich dies! Nun habe ich dank des Hinweises vom Blog-Leser Theo mit Home Assistant eine weitere App von meinem Smartphone werfen können. Home Assistant ist für mich nun die „Schaltzentrale“, um mich über mögliche Warnmeldungen der NINA-Warn-App zu informieren.

Eine solche Warnmeldung kann wie folgt aussehen, hier an einem echten Beispiel von gestern Abend, zu einem Stromausfall innerhalb der von mir definierten Region:

Beispielhafte Ansicht einer Warnmeldung der NINA-Warn-App

Du magst Home Assistant? Dann abonniere kostenlos meine Beiträge mit Tipps, Tricks und Anleitungen rund um Home Assistant:

Follow Home Assistant
( 687 Followers )
X

Follow Home Assistant

E-mail : *
* Ich stimme der Datenschutzerklärung zu!

Garantiert kein Spam, keine Werbung und immer mit Abmelde-Link, solltest du es dir anders überlegen!

Eine solche Warnmeldung möchte ich nicht mehr über die extra zu installierende NINA-Warn-App erhalten, sondern zukünftig in Home Assistant angezeigt bekommen. Zusätzlich kann man sich natürlich von Home Assistant auch per Push benachrichtigen lassen, was aber nicht Bestandteil dieses Beitrages ist!

Hier findest du das Ganze auch als Video von mir:

Sie sehen gerade einen Platzhalterinhalt von YouTube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.

Mehr Informationen
NINA-Warnmeldungen im Home Assistant Dashboard

NINA-Integration für Home Assistant

Für Home Assistant gibt es eine NINA-Integration, die man unter Integrations hinzufügen kann.

NINA-Integration in Home Assistant

Fügt man diese Integration hinzu, wird man aufgefordert Städte/Landkreise auszuwählen, für die man Warnmeldungen erhalten möchte. Neben der Angabe von Städten und Landkreisen, kann man noch definieren, wie viele Warnmeldungen man maximal je Stadt/Landkreis erhalten möchte (ich habe dies auf den vorausgewählten 5 gelassen). Ebenso ist bereits aktiviert, dass Corona Warnungen ignoriert werden.

Sobald die Integration eingerichtet ist, solltest du neue Entitäten haben, die wie folgt aufgebaut sind:

binary_sensor.warning_deinestadt_stadt_1

Für die Stadt Köln könnte das dann wie folgt aussehen:

5 NINA Entitäten für die Stadt Köln

Nun da Home Assistant NINA-Warnmeldungen für die von dir gewählte Stadt erhalten kann, können wir uns diese anzeigen lassen, sofern es eine (oder mehrere) Warnmeldung(en) gibt:

Lovelace-Code für die dynamische Benachrichtigung

Vorweg: Damit die Meldungen immer nur angezeigt werden, wenn es tatsächlich eine Warnmeldung gibt, benötigen wir über HACS eine Erweiterung für das Frontend, die es erlaubt Lovelace-Cards in Abhängigkeit von Bedingungen (also einer Condition) anzuzeigen: Lovelace Local Condition Card

Meine Umsetzung basiert auf einem Code-Beispiel von Chaosville im offiziellen Home Assistant Forum. Vielen Dank dafür!

Und hier dann der YAML-Code, welchen ich bei mir für die situative Darstellung im Dashboard nutze:

cards:
  - type: conditional
	conditions:
	  - entity: binary_sensor.warning_koln_stadt_1
		state: 'on'
	card:
	  type: entities
	  style: |
		ha-card {
		  background-color: rgba(255, 80, 80, 0.2);
		  font-size: 16px;
		}
	  entities:
		- type: attribute
		  entity: binary_sensor.warning_koln_stadt_1
		  attribute: headline
		  name: Köln
		  image: /local/Nina_app.png
		- type: attribute
		  entity: binary_sensor.warning_koln_stadt_1
		  attribute: sent
		  name: " "

In meinem Code-Beispiel ist lediglich eine Warnmeldung für die Stadt Köln aufgeführt. Je nach von dir gewählter Anzahl an Warnmeldungen, musst du den Code (ohne das „cards:“ am Anfang) x-fach wiederholen. Ebenso natürlich auch, wenn du mehr als nur eine Stand ausgewählt hast.

Mit „/local/Nina_app.png“ gebe ich ein Bild in der Card an. Dieses habe ich einmalig im Verzeichnis „www“ abgelegt. Da es sich lediglich um das NINA-Icon handelt, ist dies natürlich reine Geschmackssache 😉

YAML-Code aus der Videoanleitung

Über die Zeit habe ich meine Nutzung der Wanmeldungen im Dashboard etwas angepasst. Wie in meinem Video beschrieben, nutze ich nun eine Markdown-Karte mit der Bedingung diese nur anzuzeigen, wenn der Sensor der NINA-Integration auf „on“ ist.

Hier der Code aus dem Video (bitte auf deine Sensoren anpassen!):

<ha-alert alert-type="warning">{{ state_attr('binary_sensor.warning_overath_stadt_rheinisch_bergischer_kreis_nordrhein_westfalen_1', 'headline') }}</ha-alert>
{% if is_state('binary_sensor.warning_overath_stadt_rheinisch_bergischer_kreis_nordrhein_westfalen_2', 'on') %}
<ha-alert alert-type="warning">{{ state_attr('binary_sensor.warning_overath_stadt_rheinisch_bergischer_kreis_nordrhein_westfalen_2', 'headline') }}</ha-alert>
{% endif %}
{% if is_state('binary_sensor.warning_overath_stadt_rheinisch_bergischer_kreis_nordrhein_westfalen_3', 'on') %}
<ha-alert alert-type="warning">{{ state_attr('binary_sensor.warning_overath_stadt_rheinisch_bergischer_kreis_nordrhein_westfalen_3', 'headline') }}</ha-alert>
{% endif %}
{% if is_state('binary_sensor.warning_overath_stadt_rheinisch_bergischer_kreis_nordrhein_westfalen_4', 'on') %}
<ha-alert alert-type="warning">{{ state_attr('binary_sensor.warning_overath_stadt_rheinisch_bergischer_kreis_nordrhein_westfalen_4', 'headline') }}</ha-alert>
{% endif %}
{% if is_state('binary_sensor.warning_overath_stadt_rheinisch_bergischer_kreis_nordrhein_westfalen_5', 'on') %}
<ha-alert alert-type="warning">{{ state_attr('binary_sensor.warning_overath_stadt_rheinisch_bergischer_kreis_nordrhein_westfalen_5', 'headline') }}</ha-alert>
{% endif %}

Situative Anzeige von NINA-Warnmeldungen in Home Assistant

Sofern du nun die NINA-Integration in Home Assistant nutzt und mittels conditional-card in deinem Dashboard eingebunden hast, solltest du in Home Assistant immer dann eine neue Card im Dashboard sehen, sobald es für die von dir gewählte Stadt eine Warnmeldung gibt.

Konkret kann dies dann wie folgt aussehen:

Warnung der NINA-Warn-App im Dashboard von Home Assistant

Das konkrete Beispiel ist das passende Beispiel zu der eingangs gezeigten Warnmeldung der NINA-App.

Natürlich kann man sich nun auch immer von Home Assistant informieren lassen, sobald eine der Entitäten einen Warnmeldung beinhaltet. Ggf. schreibe ich hierzu noch ein konkretes Beispiel in einem Folgebeitrag.

Dieser Beitrag ist Teil einer kleinen Beitrags-Serie rund um das Smarthome mit Home Assistant.

27 Gedanken zu „Warnungen der NINA-Warn-App in Home Assistant anzeigen“

  1. die Attribute stehen tatsächlich gar nicht „Standardmäßig“ zur Verfügung, deswegen hatte ich sie nicht gefunden. der Tipp mit dem template war super.

    Ich hab mir jetzt irgendeinen deutschen Kreis mit Warnung rausgesucht und damit konnte ich es tatsächlich konfigurieren und v.a. testen
    Danke dir! 🤗

  2. Hallo, danke für die Beschreibung!
    aber… gab es eine Änderung? Ich kann keinerlei Attribute ausgeben , es wird nur „sicher“/“unsicher“ angezeigt.
    VG

    • Hi!
      Also hier wurden heute noch Unwetter/Hochwasserwarnungen wie im Beitrag beschrieben angezeigt. Was wird dir denn bei einer aktiven Meldung (also „unsicher“) in den Entwicklertools unter Templates angezeigt, wenn du folgenden Code reinkopierst?

      {{ (states.binary_sensor.warning_overath_stadt_rheinisch_bergischer_kreis_nordrhein_westfalen_1.attributes|list) }}
      (natürlich statt warning_overath_stadt_rheinisch_bergischer_kreis_nordrhein_westfalen_1 deinen Namen eingeben)

      Im Falle von „unsicher“ solltest du dort device_class, friendly_name, headline und sent bspw. angezeigt bekommen.

      Durch

      {{ (states.binary_sensor.warning_overath_stadt_rheinisch_bergischer_kreis_nordrhein_westfalen_1.attributes|list)[ZAHL] }}
      mit ZAHL = Index der Attribute (also 0, 1, 2, …) kannst du dir dann die Values des jeweiligen Attributes ausgeben lassen.

      Vielleicht hast du nur nen Typo in deinem Dashboard?

      VG
      Olli

        • @distanzcheck Klar, wenn du die Infos über eine Markdown-Karte anzeigen lässt, kannst du das mit folgender Abfrage lösen:

          {% if 'Hoch' not in state_attr('binary_sensor.warning_overath_stadt_rheinisch_bergischer_kreis_nordrhein_westfalen_1', 'headline') %}
          {{ state_attr('binary_sensor.warning_overath_stadt_rheinisch_bergischer_kreis_nordrhein_westfalen_1', 'headline') }}
          {% endif %}

          Du musst natürlich „binary_sensor.warning_overath_stadt_rheinisch_bergischer_kreis_nordrhein_westfalen_1“ gegen den für dich zutreffenden Sensor ersetzen.

          • @olli Super, gerade versucht aber wohl falsch eingefügt.Wo muss das
            {% if ‚Hoch‘ not in state_attr(‚binary_sensor.warning_bochum_stadt_1‘, ‚headline‘) %}
            {{ state_attr(‚binary_sensor.warning_bochum_stadt_1‘, ‚headline‘) }}
            {% endif %}
            hin wenn die Markdown so aussieht:
            <ha-alert alert-type=“warning“>{{ state_attr(‚binary_sensor.warning_bochum_stadt_1‘, ‚headline‘) }}</ha-alert>
            {% if is_state(‚binary_sensor.warning_bochum_stadt_2‘, ‚on‘) %}
            <ha-alert alert-type=“warning“>{{ state_attr(‚binary_sensor.warning_bochum_stadt_2‘, ‚headline‘) }}</ha-alert>
            {% endif %}
            {% if is_state(‚binary_sensor.warning_bochum_stadt_3‘, ‚on‘) %}
            <ha-alert alert-type=“warning“>{{ state_attr(‚binary_sensor.warning_bochum_stadt_3‘, ‚headline‘) }}</ha-alert>
            {% endif %}
            {% if is_state(‚binary_sensor.warning_bochum_stadt_4‘, ‚on‘) %}
            <ha-alert alert-type=“warning“>{{ state_attr(‚binary_sensor.warning_bochum_stadt_4‘, ‚headline‘) }}</ha-alert>
            {% endif %}
            {% if is_state(‚binary_sensor.warning_bochum_stadt_5‘, ‚on‘) %}
            <ha-alert alert-type=“warning“>{{ state_attr(‚binary_sensor.warning_bochum_stadt_5‘, ‚headline‘) }}</ha-alert>
            {% endif %}

          • Und bei dem anderen geht das nicht richtig ? Oder kann man da auch beide ins eins anzeigen lassen. Also Anzeige nur wenn dann.
            [attach]41[/attach]

          • @distanzcheck Also das müsste dann so aussehen:

            {% if is_state('binary_sensor.warning_bochum_stadt_1', 'on') and 'Hoch' not in state_attr('binary_sensor.warning_bochum_stadt_1', 'headline') %}
            <ha-alert alert-type="warning">{{ state_attr('binary_sensor.warning_bochum_stadt_1', 'headline') }}</ha-alert>
            { % endif % }
            {% if is_state('binary_sensor.warning_bochum_stadt_2', 'on') and 'Hoch' not in state_attr('binary_sensor.warning_bochum_stadt_2', 'headline')%}
            <ha-alert alert-type="warning">{{ state_attr('binary_sensor.warning_bochum_stadt_2', 'headline') }}</ha-alert>
            {% endif %}
            {% if is_state('binary_sensor.warning_bochum_stadt_3', 'on') and 'Hoch' not in state_attr('binary_sensor.warning_bochum_stadt_3', 'headline')%}
            <ha-alert alert-type="warning">{{ state_attr('binary_sensor.warning_bochum_stadt_3', 'headline') }}</ha-alert>
            {% endif %}
            {% if is_state('binary_sensor.warning_bochum_stadt_4', 'on') and 'Hoch' not in state_attr('binary_sensor.warning_bochum_stadt_4', 'headline') %}
            <ha-alert alert-type="warning">{{ state_attr('binary_sensor.warning_bochum_stadt_4', 'headline') }}</ha-alert>
            {% endif %}
            {% if is_state('binary_sensor.warning_bochum_stadt_5', 'on') and 'Hoch' not in state_attr('binary_sensor.warning_bochum_stadt_5', 'headline')%}
            <ha-alert alert-type="warning">{{ state_attr('binary_sensor.warning_bochum_stadt_5', 'headline') }}</ha-alert>
            {% endif %}

            Man muss die Abfrage nach dem „Hoch“ für jede Entität (also 1-5) machen.

          • @distanzcheck Sorry für die späte Antwort, aber ich glaube ich weiß nun, was die Ursache für das Flackern ist – zumindest hatte ich heute etwas ähnliches. In meinem Fall lag es daran, dass die Entität nicht verfügbar war, weshalb der YAML-Code das Frontend anscheinend überfordert.

            Existieren bei dir alle 5 Entitäten/Sensoren

            • binary_sensor.warning_bochum_stadt_1
            • binary_sensor.warning_bochum_stadt_2
            • binary_sensor.warning_bochum_stadt_3
            • binary_sensor.warning_bochum_stadt_4
            • binary_sensor.warning_bochum_stadt_5

            Aus diese wird ja im Code referenziert. Wenn du beispielsweise nur 3 Warnungen je Stadt in NINA konfiguriert hast, gibt es ja nur 1-3 und der Code prüft auf nicht vorhandene Sensoren.

            Oder NINA hat(te) warum auch immer die Entitäten/Sensoren (noch) nicht bereitgestellt.

          • @distanzcheck kannst du einen Screenshot aus den Entwicklerwerkzeugen bereitstellen, in dem man die Entitäten vollständig, also inkl. Spalte „Attribute“ sehen kann?

          • Ich glaube ich weiß, was das Problem ist: wenn der Sensor sicher ist, gibt es keine Attribute. Der Code prüft aber darauf, was dann „knallt“. Ich lasse mir was einfallen! 🤔 

          • @distanzcheck Es ist mir wirklich unangenehm, aber der Fehler liegt in der Syntax meines Code-Schnipsels an dich… Da scheint beim Copy & Paste bei mir irgendwas schief gegangen zu sein – sorry!

            Beim ersten endif haben sich zwei Leerzeichen eingeschlichen, die da nicht sein dürften. 

            Statt

            {% if is_state('binary_sensor.warning_bochum_stadt_1', 'on') and 'Hoch' not in state_attr('binary_sensor.warning_bochum_stadt_1', 'headline') %}
            <ha-alert alert-type="warning">{{ state_attr('binary_sensor.warning_bochum_stadt_1', 'headline') }}</ha-alert>
            { % endif % }

            muss es natürlich

            {% if is_state('binary_sensor.warning_bochum_stadt_1', 'on') and 'Hoch' not in state_attr('binary_sensor.warning_bochum_stadt_1', 'headline') %}
            <ha-alert alert-type="warning">{{ state_attr('binary_sensor.warning_bochum_stadt_1', 'headline') }}</ha-alert>
            {% endif %}

            heißen, also ohne die Leerzeichen zwischen den geschweiften Klammern und den Prozentzeichen.

            Ich hoffe nun klappt es endlich! 😲 

             

          • @olli Habe es mal eingefügt und es Flackert nichts.
            Ich gebe eine Rückmeldung wenn man ein Alarm da ist.
            lg Dirk
             

          • Klappt! Jetzt versuche ich dies gerade in eine Automation einzubauen welche die Nina Warnungen auf der Ulanzi Pixel Clock ausgibt. Lüppt aber noch net so richtig. Hochwasser wird gemeldet.
             

          • Ich habe gerade in der Beschreibung bei Home Assistant der Nina Warn Integration folgendes gefunden.
            Wo muß dieses „Regex: .*corona.*“ eingetragen werden ?
            Headline filter
            This filter filters warnings based on the headline as a blacklist. In other words, if the regular expression matches the headline of the warning, the warning will be ignored.
            Default: Match nothing (/(?!)/)
            Example
            Ignore warnings that contain the word corona
            Regex: .*corona.* Headline: corona-verordnung des landes: warnstufe durch landesgesundheitsamt ausgerufen

          • Habe es gerade selbst gefunden, in der Konfiguration der Integration. Damit hätten wir uns das herrausfiltern von Hochwasser ersparen können. 😀 🤣 

          • @distanzcheck Ja, jetzt wo du es sagst… 🤣 

            Aber betrachte es mal so: Auf diese Weise hast du eine weitere Funktionalität/Möglichkeit von HA kennenlernen dürfen 😉

    • Hi Marcel,
      wie du eine Benachrichtigung an Telegram schickst, ist bspw. hier beschrieben: https://smarterkram.de/1570/

      VG

      Olli

  3. Danke für die Info, aber ich verstehe nicht wo Dein Yaml-Code hin soll. Cards: führt zu Fehlern in der conditional card und auch an anderen Stellen. Nun, wo wird der Yaml-Code platziert?

    • Hi!
      Wenn du dein Dashboard nicht im YAML-Modus bearbeitest, sondern über den Editor, klickst du auf „Karte hinzufügen“ und scrollst dann bis ganz nach unten klickst da auf „Manuell“. Der Editor-Feld beinhaltet ja schon „type: ““. Hier kannst du also den Code ab Zeile 2 oben reinkopieren. Es kann dann sein, dass die Einrückungen nicht korrekt übernommen werden bzw. passen. Die Zeile „type: conditional“ muss gleich eingerückt sein, wie die Zeilen „conditions:“ und „card:“ – ggf. musst du also ein paar Leerzeichen am Zeilenanfang der Zeile „type: conditional“ machen, bis diese auf gleicher Höhe mit den genannten ist. Dann sollte die Fehlermeldung „Konfigurationsfehler erkannt:
      bad indentation of a mapping entry (2:15)“ verschwinden. Eine Vorschau im rechten Bereich wird es aber vermutlich nicht geben, da die Karte ja eben nur angezeigt wird, wenn der Sensor den Wert ‚on‘ hat.

      Ich hoffe das hilft soweit!

      VG
      Olli

    • Ja das geht mir genauso. Auch die manuelle Karte brachte keinen Erfolg obwohl die Einrückungen alle gepasst haben.

      • Probier mal folgendes in dem Editor-Fenster aus:


        type: conditional
        conditions:
        - entity: binary_sensor.warning_koln_stadt_1
        state: 'on'
        card:
        type: entities
        style: |
        ha-card {
        background-color: rgba(255, 80, 80, 0.2);
        font-size: 16px;
        }
        entities:
        - type: attribute
        entity: binary_sensor.warning_koln_stadt_1
        attribute: headline
        name: Köln
        image: /local/Nina_app.png
        - type: attribute
        entity: binary_sensor.warning_koln_stadt_1
        attribute: sent
        name: " "

        Also ohne

        cards:
        -

        Im Kommentar hier gehen leider die Einrückungen verloren, die musst du natürlich beachten!

Die Kommentare sind geschlossen.