5 NINA Service
ppfeiffer edited this page 2026-04-19 16:00:15 +02:00
This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

NINA Warnungs-Service

Der NINA-Service pollt die offizielle Bundeswarn-API (warnung.bund.de) auf neue Katastrophenschutzmeldungen und sendet diese automatisch in konfigurierbare Mesh-Kanäle.

Unterstützte Quellen

Quelle Beschreibung
MOWAS Modulares Warnsystem (BBK) Behördenmeldungen
BIWAPP Bürger-Info- und Warn-App kommunale Warnungen
KATWARN Katastrophenwarnungen
DWD Deutscher Wetterdienst Unwetterwarnungen
LHP Länderübergreifendes Hochwasserportal

Konfiguration

[Nina_Service]
enabled = true

# AGS-Codes der zu überwachenden Gebiete (kommagetrennt, 12-stellig)
# Dresden: 146120000000  |  Berlin: 110000000000  |  Hamburg: 020000000000
# Den AGS für deinen Ort findest du unter https://warnung.bund.de
ags_codes = 146120000000

# Kanal in dem Warnungen gesendet werden
channel = general

# Schweregrade (Minor, Moderate, Severe, Extreme)  leer = alle
min_severities = Minor,Moderate,Severe,Extreme

# Abfrageintervall in Sekunden (empfohlen: 60-300)
poll_interval_seconds = 120

# Einzelne Quellen aktivieren/deaktivieren
source_mowas   = true
source_biwapp  = true
source_katwarn = true
source_dwd     = true
source_lhp     = true

AGS-Code ermitteln

Der AGS (Amtlicher Gemeindeschlüssel) ist ein 12-stelliger Code, der einen Landkreis oder eine kreisfreie Stadt identifiziert.

  1. Öffne warnung.bund.de im Browser
  2. Gib deinen Ort in die Suche ein
  3. Der AGS erscheint in der URL: .../146120000000/...

Häufige Beispiele:

Ort AGS
Dresden 146120000000
Leipzig 147130000000
Berlin 110000000000
Hamburg 020000000000
München 091620000000
Köln 053150000000
Frankfurt/Main 064120000000

Schweregrade

Wert Bedeutung Emoji
Minor Gering
Moderate Mittel 🔶
Severe Schwer ⚠️
Extreme Extrem 🚨

Beispiel-Nachrichten im Mesh

Neue Warnung:

🔶 NINA-WARNUNG: Hochwasserwarnung  Elbe  Dresden
Typ: Hochwasser
Gebiet: Dresden-Neustadt; Dresden-Pieschen
Stand: 11.03.2026 14:30
Erhöhte Wasserführung. Pegelstand am Pegel Dresden: 5,8 m.
Bitte Uferbereich meiden.

Entwarnung:

✅ ENTWARNUNG: Hochwasserwarnung  Elbe  Dresden
Gebiet: Dresden-Neustadt; Dresden-Pieschen
Aufgehoben: 11.03.2026 18:00

Technische Details

  • Beim Start werden bekannte IDs aus der DB geladen — kein Spam nach Neustart
  • Jede Warn-ID wird nur einmal gesendet (auch über Intervallgrenzen hinweg)
  • Bei mehreren neuen Warnungen werden diese mit 2 Sekunden Abstand gesendet (Mesh-Rate-Limit)
  • Beschreibungen werden auf 280 Zeichen gekürzt
  • HTTP-Session mit automatischem Retry (3 Versuche) bei Server-Fehlern

Entwarnungen

Der Service erkennt aufgehobene Warnungen auf zwei Wegen:

  1. Dashboard-Diff — nach jedem Poll wird der aktuelle Stand mit dem vorherigen verglichen. Verschwindet eine Warn-ID aus dem Dashboard, gilt sie als aufgehoben.
  2. msgType = Cancel — der NINA-Detail-Endpoint liefert das CAP-Feld msgType. Explizite Cancel-Nachrichten werden sofort als Entwarnung behandelt.

Bei einer Aufhebung:

  • is_active wird auf FALSE gesetzt, lifted_at auf den aktuellen Zeitstempel
  • Eine Entwarnung-Nachricht wird ins Mesh gesendet (sofern broadcast_enabled global aktiv)

Versand steuern

Globaler Schalter

broadcast_enabled = false   # Polling und DB-Speicherung aktiv, kein Mesh-Versand

Mit broadcast_enabled = false werden Warnungen weiterhin abgefragt und in der Datenbank gespeichert, aber weder Warnungen noch Entwarnungen ins Mesh gesendet.

Per-Warnung im Web Viewer

Neue Warnungen haben Versand standardmäßig deaktiviert. Unter Einstellungen → NINA-Warnungen (/settings/nina) können Admins den Versand pro Warnung über den 🔔-Toggle aktivieren — unabhängig vom globalen Schalter.

Mehrere Gebiete überwachen

ags_codes = 146120000000,147130000000,110000000000

Jedes Gebiet wird separat abgefragt. Doppelte Warn-IDs werden automatisch dedupliziert.

Nur kritische Warnungen

min_severities = Severe,Extreme

Datenbank

Alle Warnungen werden dauerhaft in der Tabelle nina_warnings gespeichert:

Spalte Bedeutung
id NINA-Warn-ID (eindeutig)
headline Überschrift der Meldung
severity Schweregrad (minor/moderate/severe/extreme)
source Quelle (mowas/biwapp/katwarn/dwd/lhp)
area_desc Betroffene Gebiete
first_seen / last_seen Unix-Timestamp des ersten/letzten Auftretens
broadcast_enabled Ob diese Warnung ins Mesh gesendet werden darf (default: FALSE)
sent_to_mesh Ob die Warnung bereits gesendet wurde
is_active Ob die Warnung noch aktiv ist (FALSE = aufgehoben)
lifted_at Unix-Timestamp der Aufhebung

Beim Neustart des Bots werden bekannte IDs aus der DB geladen — kein Spam nach Neustart.

Dienststatus im Web Viewer

Der NINA-Service erscheint unter Einstellungen → NINA-Warnungen (/settings/nina) mit:

  • Aktivierungsstatus und globalem Versand-Schalter
  • Liste aller gespeicherten Warnungen mit Status (Aktiv/Aufgehoben), Schweregrad, Quelle und Toggle pro Eintrag
  • AGS-Codes, Kanal und Quellen-Konfiguration
  • Vorschau der letzten gespeicherten Warnung als Mesh-Nachricht