_active speichert jetzt msgType/area/monitor_only. get_active_alerts() gibt
sortierte Liste zurück. nina.js lädt beim Init und dedupliziert per ID.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
TCPInterface-Konstruktor kehrt zurück bevor das Event aus dem Bibliotheks-Thread
feuert. _conn_event.wait(timeout=10s) wartet sauber auf _on_connection statt
sofort den Fallback auszulösen.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- bot.py: vollständige Payload-Daten für Position, Telemetry (Device+Env),
NodeInfo (hw_model), Routing (error), Traceroute (hops), Neighborinfo (count)
- packets.js: fmtPayload() zeigt alle Felder; TELEMETRY_APP vom eigenen Node
(my_node_id / short_name FTLW) wird unterdrückt und nicht gezählt
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Konfiguration speichern löst sofort eine NINA-Abfrage aus (trigger_poll)
- Frontend lädt Config 5s nach Save neu um last_poll-Zeitstempel zu zeigen
- Unterhalb Abfrageintervall-Feld: Datum/Uhrzeit der letzten Abfrage
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Warnmeldungen zeigen jetzt das Herkunftsgebiet (AGS-Regionsname) in
der Weboberfläche (neue Spalte "Gebiet") und im Mesh-Nachrichtentext
(z.B. "[NINA] Schwerwiegend: Sturmböen (Dresden, Stadt)")
- AGS-Code-Tabelle zeigt lesbaren Ortsnamen als zweite Spalte
- Datalist mit allen sächsischen AGS-Codes bei der Eingabe
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
mapData liefert bundesweite Meldungen ohne geografische Filterung.
Mit konfigurierten AGS-Codes deckt der Dashboard-Endpunkt bereits
alle Quellen regional ab – mapData wird dann nicht mehr benötigt
und würde Meldungen außerhalb der konfigurierten Regionen zeigen.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- resend_interval: zweiter Intervall fuer erneutes Senden aktiver
Warnmeldungen ins Mesh (nur bei send_to_mesh=true). Standard 3600s.
NinaBot._resend_loop() laeuft als eigener asyncio-Task; _active-Dict
haelt aktive Warnungen vor (Cancel entfernt Eintraege).
- AGS-Code-Verwaltung als Tabelle mit Trash-Button je Zeile statt
Badges mit X-Button.
- Severity-Badges: explizite text-white/text-dark, kein bg-opacity-85
mehr - lesbar in beiden Themes.
- colspan-Fix: leere Alerts-Zeile auf 5 Spalten korrigiert.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Version in Navbar aller Seiten (app.js holt /api/stats beim Init)
- Statistiken: Anfragen-Zähler rolling 24h statt Mitternacht-Reset
- Karte: Nodes nach Alter transparent (<24h voll, 24-48h 45%, 48-72h 20%, >72h unsichtbar)
- Legende um Alter-Sektion erweitert
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
meshtastic.node.updated sendet (node, interface), _on_node_updated
akzeptierte nur (node) -> SenderUnknownMsgDataError beim Empfang
von Node-Updates.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Fernet-Objekt direkt an EncryptedCookieStorage uebergeben statt
bytes (die intern nochmal base64-encoded wurden).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Rollen-basiertes Zugriffsystem (public/user/admin), Registrierung mit
E-Mail-Verifikation, bcrypt Passwort-Hashing, Admin-Benutzerverwaltung.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Store bot-sent messages in DB and broadcast via WebSocket. Sent messages
appear right-aligned with green bubble in the messages panel.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add /me command showing requesting node's info. Add sea-level pressure
and dewpoint to weather response.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Show city name via reverse geocoding in weather response. Allow
specifying a German postal code with plz:XXXXX argument.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add /settings page showing device, LoRa, channels, position, power and
bluetooth/network config read from the Meshtastic node. Rebuild map page
with consistent sidebar layout instead of standalone fullscreen view.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Redesign dashboard and scheduler with AdminLTE-inspired layout: fixed sidebar
navigation, top navbar, info-boxes, card-outline styling, table-striped.
Fix channel names missing on initial load by sending channels before messages.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add message sending from web dashboard with channel selector, new POST /api/send
endpoint, scheduler support for free-text messages (type field), and modernized
dashboard layout with glassmorphism navbar, gradient stat cards, chat bubbles.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add WordPress blog post describing the bot (docs/)
- Add systemd service file for production deployment
- Message split numbering [x/y], increase delay to 3s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Split long messages at 170 bytes with 1.5s delay between parts
- /mesh: proper sections with line breaks and indentation
- Hop labels: "Direkt", "1 Hop", "2 Hops" instead of "0h", "1h"
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Track bot command responses in new `commands` DB table
- Stats cards: total nodes, active 24h, total commands answered
- Full-width command breakdown row with badges per command
- Update bot /stats response
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Stats cards compacter with smaller font and padding
- Battery status with Bootstrap Icons and color coding
- Version displayed in navbar from config
- Map fits all nodes on open with invalidateSize
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Central config.yaml with live-reload file watcher
- Configurable command prefix (default: /)
- Light/dark theme toggle with localStorage persistence
- Map: hop-based node coloring with legend, hover tooltips
- Dashboard: node long names, hop column, channel names in messages
- Load existing messages on WebSocket connect
- Weather fallback to Dresden center
- Remove version.py and pre-commit hook
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move all configuration to config.yaml with live-reload (file watcher).
Version is now managed in config.yaml instead of version.py.
Remove pre-commit hook for automatic version bumping.
Pin meshtastic dependency to >=2.7.7.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implements full MeshDD-Bot with TCP connection to Meshtastic devices,
SQLite storage for nodes/messages, aiohttp web dashboard with WebSocket
live updates, and Leaflet.js map view with color-coded node markers.
Includes bot commands (!ping, !nodes, !info, !help, !weather, !stats,
!uptime) and automatic version bumping via pre-commit hook.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>