diff --git a/README.md b/README.md index 5cdba42..931fd70 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,83 @@ # 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://: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.2.5* diff --git a/meshdd.db-shm b/meshdd.db-shm new file mode 100644 index 0000000..7f72aa4 Binary files /dev/null and b/meshdd.db-shm differ diff --git a/meshdd.db-wal b/meshdd.db-wal new file mode 100644 index 0000000..1a12211 Binary files /dev/null and b/meshdd.db-wal differ