MeshDD-Bot/docs/whats-new-0.8.md
ppfeiffer 3bcb44afe3 docs: Release Notes 0.8.x auf v0.08.15 vervollständigt
Neue Abschnitte für v0.08.10–v0.08.15:
- Nachrichten-Seite (/messages), öffentlich ab v0.08.14
- Dashboard: RSSI/GPS-Spalten, Links-Card
- Scheduler: {nodes_online} + {version}, theme-aware Badges
- Konfiguration: web.online_threshold
- Bugfixes: Dashboard-Charts, Kartenlegende, Telemetrie-Filter, wantAck=False
- /api/links in API-Endpunkte-Tabelle ergänzt
- Versionshistorie bis v0.08.15 vervollständigt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-20 15:31:18 +01:00

11 KiB
Raw Permalink Blame History

Was ist neu in MeshDD-Bot 0.8.x

Aktueller Stand: v0.08.15 · Release-Datum: 2026-02-20


Ü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 (07) 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:

  1. Dashboard-Endpunkt (/dashboard/{AGS12}.json) — regionale Filterung durch den BBK-Server; deckt alle Quellen für konfigurierte AGS-Codes ab.
  2. 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 07
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
GET /api/links Konfigurierte Links aus config.yaml

Neue Seite: Nachrichtenverlauf (/messages)

Eine eigenständige Seite für den vollständigen Nachrichtenverlauf:

  • Kanal-Farbcodierung: Jeder Kanal erhält eine eigene Farbe (Bubble-Rand + Avatar-Hintergrund)
  • Richtungs-Kennzeichnung: Empfangene Nachrichten links (Absender-Avatar), gesendete Bot-Nachrichten rechts (grüne Bubble)
  • Kanalfilter: Filterbuttons oben (farblich je Kanal) + Löschen-Button
  • Absender-ID: Node-ID unterhalb des Absendernamens
  • Sidebar-Eintrag nur für eingeloggte Benutzer sichtbar (sidebar-user)

Ab v0.08.14 ist die Seite öffentlich zugänglich — kein Login mehr erforderlich. initial_messages und new_message werden an alle WebSocket-Clients gesendet.


Dashboard-Erweiterungen

Nodes-Tabelle (v0.08.10)

Zwei neue Spalten in der Nodes-Tabelle:

Spalte Inhalt
RSSI Signalstärke in dBm
GPS Grünes Pin-Icon wenn Position bekannt, graues sonst

Die bisherige Nachrichten-Card wurde durch eine frei konfigurierbare Links-Card ersetzt. Links werden in config.yaml unter links: eingetragen:

links:
  - url: "https://meshtastic.org"
    label: "Meshtastic"
  - url: "https://meshmap.net"
    label: "MeshMap"

Scheduler: neue Template-Variablen

Zwei neue Variablen stehen in Scheduler-Nachrichten-Templates bereit (v0.08.13):

Variable Beschreibung
{nodes_online} Anzahl online gesehener Nodes (innerhalb des konfigurierten Schwellwerts)
{version} Aktuelle Bot-Version aus config.yaml

Die Variablen-Badges in der Scheduler-UI sind jetzt theme-aware (bg-secondary-subtle text-secondary-emphasis border-secondary-subtle).


Konfiguration

Online-Schwellwert (web.online_threshold, v0.08.15)

Der Online-Schwellwert (bisher hardcodiert auf 900 s) ist jetzt zentral konfigurierbar:

web:
  online_threshold: 900   # Sekunden; Node gilt als online wenn last_seen < Schwellwert

Wirkt sofort auf:

  • Dashboard-Tabelle (Online-Status)
  • ?mesh-Bot-Kommando (Anzahl Online-Nodes)
  • nodes_online-Zähler in Stats-API, WebSocket und Scheduler-Template

Bugfixes (v0.08.10v0.08.11)

Dashboard Charts initial leer (fixes #10)

updateChannelChart wurde aufgerufen bevor der channels-WebSocket-Event eintraf — Charts blieben bei Seitenaufruf leer. Fix: lastStats wird gespeichert und Charts werden neu gezeichnet sobald die Channel-Daten eintreffen.

Dashboard Pakettypen-Chart immer leer (fixes #10)

packet_type_breakdown fehlte komplett in get_stats(). Die Daten werden jetzt per SQL-Abfrage über die packets-Tabelle befüllt und über Stats-API sowie WebSocket geliefert.

Kartenlegende transparenter Hintergrund (fixes #10)

CSS-Variablen wurden im Leaflet-Control-Container nicht zuverlässig aufgelöst. Fix: explizite Hintergrundfarben für Light- und Dark-Mode per [data-bs-theme]-Selektor.

Eigene Telemetrie aus Pakettypen-Diagramm ausgeschlossen (v0.08.11)

get_stats() akzeptiert jetzt den optionalen Parameter my_node_id. Eigene TELEMETRY_APP- Pakete werden aus packet_type_breakdown herausgefiltert — konsistent mit der isSuppressed()-Logik im Paket-Log.

Bot-Nachrichtenversand ohne ACK (v0.08.12, fixes #14)

sendText() verwendet jetzt wantAck=False — Nachrichten werden einmal gesendet ohne auf Bestätigung zu warten. Reduziert unnötige ACK-Pakete im Netz; sinnvoll für Broadcasts und periodische Status-Meldungen.


Versionshistorie 0.8.x

Version Datum Schwerpunkt
0.08.00 2026-02-19 NINA-Integration (Grundfunktion)
0.08.01 2026-02-19 Wiederholungsintervall, AGS-Tabelle, Badge-Fixes
0.08.02 2026-02-19 mapData nur ohne AGS-Codes (geografische Filterung)
0.08.03 2026-02-19 Gebietsanzeige, AGS-Ortsname, Sachsen-Combobox
0.08.04 2026-02-19 Sofortabfrage nach Speichern, Zeitstempel letzte Abfrage
0.08.05 2026-02-19 Kartenlegende nach topleft verschoben (fixes #5)
0.08.06 2026-02-19 Informativer Paket-Payload, FTLW-Telemetrie unterdrückt (fixes #3)
0.08.07 2026-02-19 threading.Event-Fix für Startup-Warning (fixes #2)
0.08.08 2026-02-19 Kartenlegende neu gestaltet (theme-aware)
0.08.09 2026-02-19 Aktive NINA-Warnungen beim Seitenaufruf laden
0.08.10 2026-02-19 Nachrichten-Seite, Dashboard-Charts-Fix, Pakettypen-API (fixes #10)
0.08.11 2026-02-20 Eigene Telemetrie aus Pakettypen-Diagramm ausgeschlossen
0.08.12 2026-02-20 Bot-Nachrichten ohne ACK/Retry (fixes #14)
0.08.13 2026-02-20 Scheduler: {nodes_online} + {version}, theme-aware Badges (fixes #15)
0.08.14 2026-02-20 Links-Card, öffentliche Nachrichten-Seite (fixes #11)
0.08.15 2026-02-20 Konfigurierbarer Online-Schwellwert web.online_threshold (fixes #12)