diff --git a/CHANGELOG.md b/CHANGELOG.md index d531dd8..b125fb9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [0.2.6] - 2026-02-15 +### Added +- WordPress-Beitrag unter docs/wordpress-beitrag.html +- Systemd Service-File meshdd-bot.service +- Nachrichten-Splitting mit [x/y] Nummerierung + +### Changed +- Pause zwischen gesplitteten Nachrichten auf 3 Sekunden erhöht + ## [0.2.5] - 2026-02-15 ### Added - Automatisches Aufteilen langer Nachrichten (max 170 Zeichen) mit 1,5s Pause diff --git a/config.yaml b/config.yaml index 7096f13..e4a8348 100644 --- a/config.yaml +++ b/config.yaml @@ -1,4 +1,4 @@ -version: "0.2.5" +version: "0.2.6" bot: name: "MeshDD-Bot" diff --git a/docs/wordpress-beitrag.html b/docs/wordpress-beitrag.html new file mode 100644 index 0000000..6c4dbfe --- /dev/null +++ b/docs/wordpress-beitrag.html @@ -0,0 +1,66 @@ +
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.
+ +Der MeshDD-Bot reagiert auf Befehle, die direkt im Mesh-Chat gesendet werden. Aktuell stehen folgende Kommandos zur Verfügung:
+ +Längere Antworten werden automatisch auf mehrere Nachrichten aufgeteilt und mit einer Nummerierung wie [1/3] versehen, damit im Mesh nichts verloren geht.
Unter http://<server>:8080 steht ein Web-Dashboard zur Verfügung, das in Echtzeit via WebSocket aktualisiert wird. Es zeigt:
Ü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:
+ +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.
+ +Der Bot ist in Python geschrieben und nutzt folgende Technologien:
+ +Die gesamte Konfiguration erfolgt über eine zentrale config.yaml, die zur Laufzeit überwacht wird - Änderungen werden automatisch ohne Neustart übernommen.
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/meshbot/bot.py b/meshbot/bot.py index bf7712f..c468e2b 100644 --- a/meshbot/bot.py +++ b/meshbot/bot.py @@ -217,12 +217,15 @@ class MeshBot: async def _send_text(self, text: str, channel: int, max_len: int = 170): if not self.interface: return - parts = self._split_message(text, max_len) + # Reserve space for "[x/y] " prefix (max 7 bytes) + parts = self._split_message(text, max_len - 7) + total = len(parts) for i, part in enumerate(parts): if i > 0: - await asyncio.sleep(1.5) + await asyncio.sleep(3.0) + msg = f"[{i+1}/{total}] {part}" if total > 1 else part try: - self.interface.sendText(part, channelIndex=channel) + self.interface.sendText(msg, channelIndex=channel) except Exception: logger.exception("Error sending text") diff --git a/meshdd-bot.service b/meshdd-bot.service new file mode 100644 index 0000000..ea8df6c --- /dev/null +++ b/meshdd-bot.service @@ -0,0 +1,14 @@ +[Unit] +Description=MeshDD-Bot - Meshtastic Bot with Web Dashboard +After=network.target + +[Service] +Type=simple +User=peter +WorkingDirectory=/home/peter/meshdd-bot +ExecStart=/home/peter/meshdd-bot/venv/bin/python main.py +Restart=on-failure +RestartSec=10 + +[Install] +WantedBy=multi-user.target