From 7a0ff15b51b46936c958465070219416ccdacf0e Mon Sep 17 00:00:00 2001 From: ppfeiffer Date: Sun, 15 Feb 2026 14:49:56 +0100 Subject: [PATCH] docs: v0.2.6 - WordPress article, systemd service, message splitting fix - 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 --- CHANGELOG.md | 9 +++++ config.yaml | 2 +- docs/wordpress-beitrag.html | 66 +++++++++++++++++++++++++++++++++++++ meshbot/bot.py | 9 +++-- meshdd-bot.service | 14 ++++++++ 5 files changed, 96 insertions(+), 4 deletions(-) create mode 100644 docs/wordpress-beitrag.html create mode 100644 meshdd-bot.service 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 @@ +

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:

+ + + +

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:

+ + + +

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:

+ + + +

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:

+ + + +

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/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