WarnBridge – Offizielle Katastrophenwarnungen offline ins MeshCore-Mesh
MeshCore ist eine der interessantesten Entwicklungen im Bereich dezentraler LoRa-Kommunikation. Kein Internet, dezentrale Infrastruktur, trotzdem Nachrichten übermitteln. Was aber fehlt: eine zuverlässige Quelle für offizielle Warnmeldungen – gerade dann, wenn das Internet ausgefallen ist und es eigentlich drauf ankommt.
Das Problem
Das BBK betreibt mit NINA eine gute API für Katastrophenwarnungen. MoWaS, DWD, Hochwasserpegel – alles strukturiert, maschinenlesbar, kostenlos. Das Problem: NINA braucht Internet. Im Katastrophenfall – Stromausfall, überlastetes Mobilfunknetz, Internetausfall – ist genau das nicht mehr verfügbar.
DAB+ dagegen läuft weiter. Solange Strom da ist (oder eine kleine USV), empfängt ein RTL-SDR-Dongle das Signal zuverlässig. Und DAB+ überträgt seit 2024 mit ASA (Automatic Safety Alert) ein standardisiertes Warnsignal direkt im Datenstrom – inklusive strukturiertem Warntext über Journaline.
WarnBridge verbindet beides: DAB+ als resilienten Primärkanal, NINA als Komfortkanal für den Normalbetrieb, und MeshCore als Ausgangsweg zu den Nutzern.
Wie es funktioniert
Ein Raspberry Pi empfängt über einen RTL-SDR-Dongle den DAB+-Multiplex. welle.io dekodiert das Signal und stellt eine HTTP-API bereit. WarnBridge pollt diese API alle zwei Sekunden auf ASA-Events (FIG 0/15 nach ETSI TS 104 089) und Journaline-Textobjekte.
Parallel läuft ein NINA-Poller der alle 15 Minuten MoWaS- und DWD-Meldungen für das konfigurierte Bundesland abruft und in SQLite speichert.
Beide Quellen landen in einem CAP-Normalizer, werden dedupliziert und nach konfigurierten Kreisen gefiltert. Relevante Meldungen gehen per TCP an einen Heltec WiFi LoRa 32 v3 und von dort als kompakte Nachricht ins Mesh.
Im Mesh sieht das dann so aus:
⚠ WARNUNG BW | Hochwasser Neckar | Stufe 2 Gebiet: Böblingen, Stuttgart | /details
Per Bot-Befehl können Nutzer im Mesh Details abrufen (/details, /warnings Stuttgart, /status) – die Antworten kommen direkt aus der lokalen SQLite-Datenbank, ohne Internet.
Was an welle.io angepasst wurde
Der Standard-welle.io unterstützt ASA nicht. Ich habe einen Fork entwickelt der folgendes ergänzt:
FIG 0/15 Decoder – Heartbeat, Trigger, Sustain und End werden korrekt ausgewertet
Geocode-Filter – nur Alerts die den konfigurierten Standort betreffen (ETSI TS 104 089 Annex F)
Fraunhofer NML Journaline Decoder – die zlib-komprimierten JML-Objekte werden korrekt dekodiert
Neue HTTP-Endpunkte –
/journaline.jsonund/rxlog.json
Der Fork ist unter github.com/TogeriX-hub/welle.io verfügbar.
Aktueller Stand
Das System läuft seit Juni 2026 produktiv auf einem Raspberry Pi 4. NINA und MeshCore funktionieren zuverlässig. ASA und Journaline wurden live auf Kanal 5C (DLF) getestet – der 5C-Dauertest von Deutschlandradio (alle 5 Minuten, Geo-Code Paris) wird korrekt erkannt und durch den Geocode-Filter ignoriert.
Der eigentliche End-to-End-Test kommt am 10. September 2026 – dem bundesweiten Warntag. Kanal 9D (SWR BW N) überträgt dann ein echtes MoWaS-Signal, das WarnBridge vollautomatisch verarbeiten und ins Mesh einspeisen soll.
Hardware
Der komplette Stack kostet unter 200 Euro:
Raspberry Pi 4 (2 GB)
Nooelec NESDR SMArt v5 (RTL-SDR)
Heltec WiFi LoRa 32 v3
DAB+-Antenne
Der Pi läuft als systemd-Service mit Watchdog, überlebt Neustarts und braucht nach der Einrichtung keine weitere Pflege.
Code und Dokumentation
Das gesamte Projekt ist Open Source:
github.com/TogeriX-hub/dab-warnings-meshcore
Installation auf macOS (für Entwicklung) und Raspberry Pi ist vollständig dokumentiert. Wer MeshCore bereits betreibt und einen RTL-SDR-Dongle hat, kann WarnBridge mit wenigen Befehlen in Betrieb nehmen.
Feedback, Issues und Pull Requests sind willkommen.