- docs/bot-beschreibung.md: umfassende Dokumentation mit Architektur, Komponenten, API-Referenz, Konfiguration, Datenbank-Schema, Deployment und chronologischer Erweiterungshistorie (v0.1.0–v0.8.9) - docs/whats-new-0.8.md: Neuigkeiten der 0.8.x-Release-Serie (NINA, Paket-Log, Karte, Bugfixes, API-Endpunkte, Versionshistorie) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7.1 KiB
Was ist neu in MeshDD-Bot 0.8.x
Aktueller Stand: v0.8.9 · Release-Datum: 2026-02-19
Übersicht
Release 0.8 bringt die vollständige Integration des NINA BBK Warnsystems in den MeshDD-Bot, ergänzt um eine Reihe von Verbesserungen am Paket-Log, der Karte und der Verbindungsinitialisierung.
Neue Funktionen
NINA Warnmeldungs-Integration (/nina)
Der Bot ist jetzt an die NINA Warn-App des BBK (Bundesamt für Bevölkerungsschutz
und Katastrophenhilfe) angebunden. Warnmeldungen werden automatisch per HTTP-Polling
von warnung.bund.de/api31 abgerufen und ins Meshtastic-Netz gesendet.
Konfigurationsseite
Unter /nina (Admin-only) steht eine vollständige Verwaltungsseite bereit:
| Einstellung | Beschreibung |
|---|---|
| Aktiviert | NINA-Abfragen ein-/ausschalten |
| Ins Mesh senden | Aus = Monitor-Modus (nur Weboberfläche, kein Mesh-Versand) |
| Abfrageintervall | Wie oft neue Warnmeldungen abgerufen werden (Sek., min. 60) |
| Wiederholungsintervall | Aktive Warnungen werden in diesem Abstand erneut ins Mesh gesendet |
| Kanal | Meshtastic-Kanal (0–7) für den Versand |
| Mindest-Schweregrad | Gering / Mäßig / Schwerwiegend / Extrem |
| AGS-Codes | Amtliche Gemeindeschlüssel der zu überwachenden Regionen |
| Quellen | Katwarn, BIWAPP, MoWaS, DWD, LHP, Polizei |
AGS-Code-Verwaltung
- AGS-Codes werden in einer Tabelle mit Ortsname und Lösch-Button angezeigt
- Bei der Eingabe schlägt eine Combobox alle sächsischen Landkreise und kreisfreien Städte vor (Name + 12-stelliger Code)
- Voreingestellt: 5 Codes für den Raum Dresden (Stadt Dresden, LK Meißen, LK Sächsische Schweiz-Osterzgebirge, LK Bautzen, LK Görlitz)
Polling-Strategie
Zwei parallele Abfragestrategien pro Zyklus:
- Dashboard-Endpunkt (
/dashboard/{AGS12}.json) — regionale Filterung durch den BBK-Server; deckt alle Quellen für konfigurierte AGS-Codes ab. - mapData-Endpunkt (
/{quelle}/mapData.json) — wird nur verwendet, wenn keine AGS-Codes konfiguriert sind (bundesweite Abfrage ohne Geo-Filterung).
Quellenübergreifende De-Duplikation via ID-Normalisierung verhindert doppelte
Meldungen (z. B. dwdmap. ↔ dwd., mow. ↔ mowas.).
Warnmeldungen im Mesh
Nachrichten-Format im Meshtastic-Netz:
[NINA] Schwerwiegend: Sturmböen (Dresden, Stadt)
Beschreibung des Ereignisses (max. 120 Zeichen)...
[NINA] Aufgehoben: Sturmböen (Dresden, Stadt)
Das Herkunftsgebiet (AGS-Regionsname) wird automatisch an Meldung und Aufhebung angehängt.
Live-Anzeige in der Weboberfläche
Die Tabelle „Letzte Warnmeldungen" zeigt:
| Spalte | Inhalt |
|---|---|
| Schweregrad | Farbiger Badge (Extrem / Schwerwiegend / Mäßig / Gering / Aufgehoben) |
| Meldung | Headline der Warnung |
| Gebiet | AGS-Regionsname (z. B. „Dresden, Stadt") |
| Typ | Quell-Präfix (z. B. dwd, katwarn) |
| Mesh | Broadcast-Icon (gesendet) oder Auge-Icon (Monitor-Only) |
| Zeitstempel | Sendezeitpunkt der Warnung |
Beim Seitenaufruf werden alle aktuell aktiven Warnungen sofort geladen
(GET /api/nina/alerts). Neue Warnungen erscheinen live via WebSocket.
Sofortabfrage nach dem Speichern
Nach dem Klick auf „Speichern" wird unmittelbar eine NINA-Abfrage gestartet — kein Warten auf den nächsten Intervall-Zyklus. Unterhalb des Abfrageintervall-Felds wird Datum und Uhrzeit der letzten erfolgreichen Abfrage angezeigt.
Verbesserungen am Paket-Log (/packets)
Informativerer Payload
Die Info-Spalte zeigt jetzt deutlich mehr Daten je Pakettyp:
| Typ | Angezeigte Felder |
|---|---|
POSITION_APP |
Koordinaten + Höhe (m), Geschwindigkeit (km/h), Satelliten |
TELEMETRY_APP |
Akku (%), Spannung (V), Kanalauslastung (%), TX-Auslastung (%), Temperatur (°C), Luftfeuchtigkeit (%), Luftdruck (hPa) |
NODEINFO_APP |
long_name, short_name, Hardware-Modell |
ROUTING_APP |
Fehlercode (wenn vorhanden) |
TRACEROUTE_APP |
Anzahl Hops |
NEIGHBORINFO_APP |
Anzahl Nachbarn |
Unterdrückung eigener Telemetrie
Telemetriepakete vom eigenen Node werden im Paket-Log weder angezeigt noch gezählt.
Die Erkennung erfolgt automatisch per my_node_id (WebSocket-Initial-Payload) sowie als
Fallback über den Short-Name FTLW.
Verbesserungen an der Karte (/map)
Neue Legendenposition
Die Kartenlegende wurde von bottomright nach topleft verschoben — direkt
unterhalb der Zoom-Schaltfläche, wo sie auf allen Bildschirmgrößen sicher sichtbar ist.
Neues Legengendesign
Die Legende wurde komplett neu gestaltet:
- Theme-aware: passt sich automatisch Light- und Dark-Mode an (CSS-Variablen)
- Kompaktes Layout: kleine Uppercase-Abschnittsköpfe (
HOPS/ALTER) - Weicherer Schatten und dezentes Border
Bugfixes
Startup-Warning „connection.established missed" (fixes #2)
Beim Start erschien regelmäßig eine Warnung im Log:
[WARNING] meshbot.bot: connection.established missed – applying fallback
Ursache: bot.connect() läuft in einem separaten Thread. Der TCPInterface-Konstruktor
kehrte zurück, bevor das connection.established-Event aus dem Meshtastic-Bibliotheks-Thread
gefeuert wurde. Der sofortige Check sah _connected = False und löste den Fallback aus.
Fix: Ein threading.Event (_conn_event) wird in _on_connection gesetzt.
Nach dem Konstruktor wartet der Code bis zu 10 Sekunden auf dieses Event. Der
Fallback greift nur noch bei echtem Ausbleiben.
Konfigurationsdateien
nina.yaml
Separate Hot-reload-fähige Konfigurationsdatei für NINA (analog zu scheduler.yaml).
Wird automatisch angelegt wenn nicht vorhanden.
enabled: false
send_to_mesh: true
poll_interval: 300 # Sekunden, min. 60
resend_interval: 3600 # Sekunden, Wiederholung aktiver Warnungen
channel: 0 # Meshtastic-Kanal 0–7
min_severity: Severe # Minor | Moderate | Severe | Extreme
ags_codes: []
sources:
katwarn: true
biwapp: true
mowas: true
dwd: true
lhp: true
police: false
Neue API-Endpunkte
| Methode | Pfad | Beschreibung | Auth |
|---|---|---|---|
GET |
/api/nina/config |
NINA-Konfiguration lesen | Admin |
PUT |
/api/nina/config |
NINA-Konfiguration speichern + Poll auslösen | Admin |
GET |
/api/nina/alerts |
Aktuell aktive Warnmeldungen | Admin |
Versionshistorie 0.8.x
| Version | Datum | Schwerpunkt |
|---|---|---|
| 0.8.0 | 2026-02-19 | NINA-Integration (Grundfunktion) |
| 0.8.1 | 2026-02-19 | Wiederholungsintervall, AGS-Tabelle, Badge-Fixes |
| 0.8.2 | 2026-02-19 | mapData nur ohne AGS-Codes (geografische Filterung) |
| 0.8.3 | 2026-02-19 | Gebietsanzeige, AGS-Ortsname, Sachsen-Combobox |
| 0.8.4 | 2026-02-19 | Sofortabfrage nach Speichern, Zeitstempel letzte Abfrage |
| 0.8.5 | 2026-02-19 | Kartenlegende nach topleft verschoben (fixes #5) |
| 0.8.6 | 2026-02-19 | Informativer Paket-Payload, FTLW-Telemetrie unterdrückt (fixes #3) |
| 0.8.7 | 2026-02-19 | threading.Event-Fix für Startup-Warning (fixes #2) |
| 0.8.8 | 2026-02-19 | Kartenlegende neu gestaltet (theme-aware) |
| 0.8.9 | 2026-02-19 | Aktive NINA-Warnungen beim Seitenaufruf laden |