- Rollensystem: Public → Mitarbeiter → Admin (Rolle user entfällt) - DB-Migration: must_change_password-Spalte, user→mitarbeiter - require_staff_api(): erlaubt mitarbeiter + admin - POST /api/admin/invite: Einladung mit auto-generiertem Passwort + E-Mail - POST /auth/change-password: Pflicht-Passwortwechsel - Login: force_password_change-Redirect - Sidebar: sidebar-staff für Scheduler/NINA/Einstellungen - Scheduler/NINA: read-only für Mitarbeiter Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .claude | ||
| config | ||
| data | ||
| docs | ||
| meshbot | ||
| static | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| CHANGELOG.md | ||
| docker-compose.yml | ||
| Dockerfile | ||
| main.py | ||
| meshdd-bot.service | ||
| meshdd.db-shm | ||
| meshdd.db-wal | ||
| README.md | ||
| requirements.txt | ||
MeshDD-Bot
Ein Meshtastic Bot für das Dresdner Mesh-Netzwerk
Mit dem MeshDD-Bot haben wir einen eigenentwickelten Bot für unser Meshtastic Mesh-Netzwerk in Dresden in Betrieb genommen. Der Bot verbindet sich per TCP mit einem Meshtastic-Knoten, empfängt und verarbeitet Nachrichten aus dem Mesh und stellt ein Web-Dashboard mit Live-Karte bereit.
Was kann der Bot?
Der MeshDD-Bot reagiert auf Befehle, die direkt im Mesh-Chat gesendet werden. Aktuell stehen folgende Kommandos zur Verfügung:
- /ping - Prüft, ob der Bot erreichbar ist
- /nodes - Zeigt die Anzahl der bekannten Nodes im Netzwerk
- /mesh - Liefert eine detaillierte Übersicht des Mesh-Netzwerks: Online-Nodes, aktive Nodes der letzten 24 Stunden, Hop-Verteilung und die am häufigsten verwendeten Hardware-Modelle
- /weather - Zeigt das aktuelle Wetter an der Position des anfragenden Nodes (Fallback: Dresden Zentrum)
- /stats - Statistiken zu Nodes und beantworteten Anfragen
- /info - Bot-Name, Version und Laufzeit
- /uptime - Wie lange der Bot bereits läuft
- /help - Liste aller verfügbaren Kommandos
Längere Antworten werden automatisch auf mehrere Nachrichten aufgeteilt
und mit einer Nummerierung wie [1/3] versehen, damit im Mesh nichts
verloren geht.
Web-Dashboard mit Live-Updates
Unter http://<server>:8080 steht ein Web-Dashboard zur Verfügung, das
in Echtzeit via WebSocket aktualisiert wird. Es zeigt:
- Status-Karten mit der Gesamtzahl der Nodes, aktiven Nodes (24h) und beantworteten Anfragen inkl. Aufschlüsselung nach Kommando
- Nodes-Tabelle mit Name, Hardware-Modell, SNR, Batteriestatus (farbcodiert), Hop-Anzahl und letzter Aktivität
- Nachrichten-Feed mit Absender, Kanalname und Zeitstempel
- Hell/Dunkel-Modus per Knopfdruck umschaltbar
Live-Karte
Über den Karten-Link im Dashboard öffnet sich eine Leaflet-Karte mit OpenStreetMap, auf der alle Nodes mit bekannter Position dargestellt werden. Die Marker sind farblich nach Hop-Anzahl kodiert:
- [Blau]{style="color:#2196F3;"} - Direkt erreichbar (0 Hops)
- [Grün]{style="color:#4CAF50;"} - 1 Hop
- [Orange]{style="color:#FF9800;"} - 2 Hops
- [Rot]{style="color:#F44336;"} - 3 Hops
- [Lila]{style="color:#9C27B0;"} - 4 Hops
- [Braun]{style="color:#795548;"} - 5+ Hops
Beim Überfahren eines Markers mit der Maus erscheint ein Tooltip mit detaillierten Node-Informationen: Name, Hardware, Hops, SNR, Batteriestatus, Höhe und letzte Aktivität.
Technik im Hintergrund
Der Bot ist in Python geschrieben und nutzt folgende Technologien:
- meshtastic - Python-Bibliothek für die TCP-Verbindung zum Meshtastic-Gerät
- aiohttp - Asynchroner Webserver mit WebSocket-Unterstützung
- SQLite - Lokale Datenbank für Nodes, Nachrichten und Kommando-Statistiken
- Leaflet.js - Interaktive Karte mit OpenStreetMap-Tiles
- Bootstrap 5.3 - Responsive Dashboard mit Dark/Light Theme
Die gesamte Konfiguration erfolgt über eine zentrale config.yaml, die
zur Laufzeit überwacht wird - Änderungen werden automatisch ohne
Neustart übernommen.
Ausblick
Der MeshDD-Bot wird kontinuierlich weiterentwickelt. Geplant sind unter anderem weitere Befehle, erweiterte Statistiken und zusätzliche Visualisierungen auf der Karte. Der Quellcode ist auf unserem Forgejo-Server verfügbar.
Aktueller Stand: Version 0.02.05