Find a file
ppfeiffer c443a9f26d feat(auth): Rolle Mitarbeiter + Einladungs-Workflow (closes #7)
- 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>
2026-02-20 22:51:06 +01:00
.claude refactor(config): .env in config.yaml integriert 2026-02-20 21:47:56 +01:00
config feat(auth): Rolle Mitarbeiter + Einladungs-Workflow (closes #7) 2026-02-20 22:51:06 +01:00
data fix(db): Datenbank nach data/ verschoben, WAL-Checkpoint + robuster Shutdown 2026-02-20 21:59:40 +01:00
docs docs: Release Notes 0.8.x auf v0.08.15 vervollständigt 2026-02-20 15:31:18 +01:00
meshbot feat(auth): Rolle Mitarbeiter + Einladungs-Workflow (closes #7) 2026-02-20 22:51:06 +01:00
static feat(auth): Rolle Mitarbeiter + Einladungs-Workflow (closes #7) 2026-02-20 22:51:06 +01:00
.dockerignore feat: v0.6.1 - Docker-Stack fuer Container-Betrieb 2026-02-17 21:21:50 +01:00
.env.example refactor: v0.5.3 - Zugangsdaten in .env auslagern 2026-02-16 20:09:48 +01:00
.gitignore fix(db): Datenbank nach data/ verschoben, WAL-Checkpoint + robuster Shutdown 2026-02-20 21:59:40 +01:00
CHANGELOG.md feat(auth): Rolle Mitarbeiter + Einladungs-Workflow (closes #7) 2026-02-20 22:51:06 +01:00
docker-compose.yml feat: v0.7.0 - Docker-Verbesserungen 2026-02-18 18:23:27 +01:00
Dockerfile feat: v0.7.0 - Docker-Verbesserungen 2026-02-18 18:23:27 +01:00
main.py feat(db): Initialen Admin-User beim ersten Start anlegen 2026-02-20 22:03:19 +01:00
meshdd-bot.service docs: v0.2.6 - WordPress article, systemd service, message splitting fix 2026-02-15 14:49:56 +01:00
meshdd.db-shm README.md erstellt 2026-02-15 16:04:54 +01:00
meshdd.db-wal README.md erstellt 2026-02-15 16:04:54 +01:00
README.md refactor(version): Versionsformat auf 2-stellige Minor- und Patch-Level umgestellt 2026-02-20 14:00:49 +01:00
requirements.txt feat: v0.5.0 - Benutzerverwaltung mit Session-Authentifizierung 2026-02-16 19:38:17 +01:00

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