Contact – Terminal-UI für Meshtastic-Nodes

Python-basierter TUI-Client zum Austausch von Nachrichten und Konfigurieren von Meshtastic-Nodes.

Neulich haben wir euch bereits die Software Connect von Benjamin K1PDX vorgestellt. Auf seiner GitHub-Seite pdxlocations finden sich weitere praktische Tools rund um Meshtastic – alle in Python geschrieben und definitiv einen Blick wert.

Für die Konfiguration eines Meshtastic-Nodes an einem entfernten Standort, der per serieller Verbindung an einen Raspberry Pi angeschlossen ist, habe ich bisher die Meshtastic-CLI verwendet. Diese erfordert jedoch die Eingabe teils sehr langer Befehle über die Kommandozeile – das ist nicht nur zeitaufwändig, sondern auch anfällig für Tippfehler. Die integrierte UI der Meshtastic-CLI konnte ich nicht nutzen, da der Raspberry Pi keine grafische Oberfläche installiert hat.

Mit Contact steht eine Software zur Verfügung, die eine textbasierte Benutzeroberfläche direkt im Terminal bietet. Die Konfiguration einer verbundenen Meshtastic-Node erfolgt bequem über Menüs – ähnlich wie in den Meshtastic-Apps für Smartphones.

Doch Contact kann mehr: Neben der Geräteeinrichtung lassen sich auch Nachrichten anzeigen und versenden – sowohl an Kanäle als auch als Direktnachrichten an einzelne Nodes im Mesh.

Screenshot von github.com

GitHub-Seite von Contact

Installation

Contact steht bereits als Paket über pip zur Verfügung, was die Installation besonders einfach macht. Wenn Python 3 und pip bereits auf eurem System vorhanden sind, könnt ihr Meshtastic und Contact mit folgendem Befehl installieren:

pip install meshtastic contact

Bei Betriebssystemen, auf denen Python auch für systemkritische Aufgaben verwendet wird (z. B. bei vielen Linux-Distributionen), ist es empfehlenswert – teils sogar notwendig – Meshtastic und Contact in einer virtuellen Umgebung zu installieren. Führt dazu zunächst die folgenden Befehle aus, bevor ihr pip install verwendet:

python3 -m venv venv
source venv/bin/activate

Aufruf und Nachrichtenversand

Contact kann sich mit eurer Meshtastic-Node entweder über eine serielle Verbindung, per Bluetooth oder via IP-Netzwerk verbinden. Die gewünschte Option gebt ihr einfach beim Starten des Programms mit an – zum Beispiel:

contact --port /dev/ttyUSB0
contact --host 192.168.1.123
contact --ble BlAddressOfDevice

Im Hauptfenster von Contact werden die konfigurierten Kanäle, das Nachrichtenempfangsfenster sowie die verbundenen Nodes übersichtlich dargestellt. Bei Bedarf kann zusätzlich das Paket-Log eingeblendet werden.

Die Navigation innerhalb der Terminal-Oberfläche erfolgt über die Pfeiltasten eurer Tastatur.

Um eine Nachricht in einem bestimmten Kanal zu senden, markiert zunächst im linken Bereich den gewünschten Kanal. Anschließend gebt ihr eure Nachricht im oberen Bereich unter Input ein und bestätigt sie mit der Enter-Taste.

Um eine Direktnachricht an eine andere Node zu versenden, navigiert mit den Pfeiltasten zunächst in den rechten Bildschirmbereich und wählt dort die gewünschte Node aus. Mit Enter markiert ihr sie – sie erscheint daraufhin auch im linken Bereich der Kanalübersicht und ist dort automatisch aktiviert. Gebt nun wie gewohnt eure Nachricht im Input-Feld ein und sendet sie mit der Enter-Taste.

Konfiguration

Um eure Node zu konfigurieren, öffnet ihr das Konfigurationsmenü mit der Backtick-Taste auf eurer Tastatur. Wenn ihr eure Node bereits mit der Android- oder iOS-App konfiguriert habt, werdet ihr euch in der Menüstruktur von Contact schnell zurechtfinden.

Zu fast jedem Konfigurationsparameter zeigt Contact im unteren Bereich des Bildschirms eine kurze Erklärung sowie den Standardwert an.

Fazit

Für meinen Einsatzzweck – die Fernkonfiguration eines Nodes über einen headless Raspberry Pi – ist Contact genau das, was ich gebraucht habe. Endlich keine langen Kommandozeilen-Befehle mehr, sondern eine übersichtliche Menüoberfläche direkt im Terminal. Eine klare Empfehlung! 😊

Kennt ihr weitere Meshtastic-Software, die nicht unerwähnt bleiben sollte? Dann schreibt sie uns gerne in die Kommentare unter diesem Beitrag oder diskutiert sie mit uns in unserer Telegram- oder WhatsApp-Gruppe.

Team DL-Nordwest, Stephan 9V1LH/(9M2/)DG1BGS


Möchtest du das DL-Nordwest Projekt unterstützen? Dann freuen wir uns über deinen Gastbeitrag, das Teilen unserer Inhalte oder eine (kleine) Spende 🤑 Vielen Dank für deine Unterstützung! 😘

Connect – Nodeless MQTT-Client für Meshtastic

Python-basierter MQTT-Client kurz vorgestellt.

Benjamin K1PDX stellt auf seiner GitHub-Seite pdxlocations eine Reihe interessanter Projekte rund um Meshtastic vor, die alle in Python realisiert wurden. Eines davon ist Connect – ein Chat-Client für Meshtastic-Netzwerke. Im Gegensatz zu anderen Anwendungen wie MeshSense, die eine direkte Verbindung zu einer Meshtastic-Node erfordern, kommt Connect vollständig ohne eigene Node aus. Eine oder mehrere Nodes des Netzwerks dienen dabei als Gateway, um Nachrichten via Funk auszusenden und zu empfangen.

Installation

Die Installation unter macOS und Linux-basierten Betriebssystemen ist auf der GitHub-Seite des Projekts dokumentiert. Unter Linux können die Befehle einfach in ein Terminalfenster kopiert und ausgeführt werden. Wechselt zuvor mit dem Befehl cd in das gewünschte Installationsverzeichnis, z. B. cd ~ für euer Homeverzeichnis. Achtet darauf, dass euer Benutzer in diesem Verzeichnis über Schreibrechte verfügt. Falls nötig, können diese mit dem Befehl sudo chown angepasst werden.

Für einen komfortablen Start der Software empfiehlt es sich, eine entsprechende Verknüpfung auf dem Desktop abzulegen. Auf Raspbian-basierten Systemen kann dies im Verzeichnis /home/pi/Desktop erfolgen. Ein automatischer Start beim Systemstart ist ebenfalls möglich, indem man einen symbolischen Link der erstellten Desktop-Datei im Verzeichnis /home/pi/.config/autostart ablegt.

Screenshot von github.com

Anleitung auf der Projektseite von Connect

Konfiguration

Wie bei einer „echten“ Node wird auch hier zunächst eine im Netzwerk eindeutige Node-ID im hexadezimalen Format vergeben, z. B. !dcdcdcdc. Zusätzlich müssen ein Long- und Short-Name, eine statische Position (Breiten- und Längengrad) sowie die Höhe angegeben werden. Diese Angaben – ebenso wie die Konfiguration des zu verwendenden MQTT-Servers und die Login-Daten – lassen sich bequem über die grafische Benutzeroberfläche der Software eintragen und als Profile speichern. Nach dem Start kann eines der zuvor angelegten Profile ausgewählt und verwendet werden.

Nachrichtenversand

Nach erfolgreicher Verbindung zum konfigurierten MQTT-Server sendet die Software in regelmäßigen Abständen automatisch die eigene Node-Info samt Position. Kurz darauf erscheinen im rechten Bereich der Benutzeroberfläche die ersten über MQTT empfangenen Nodes – inklusive ihrer ID sowie ihres Short- und Long-Names. Statusmeldungen der Software sowie empfangene Kanal- und Direktnachrichten werden in einem Fenster unterhalb der Konfiguration angezeigt.

Darunter befindet sich ein Texteingabefeld und ein mit „Broadcast“ beschrifteter Button, über den eigene Nachrichten an den unter „Channel“ definierten Kanal gesendet werden können. Klickt man auf eine Node in der Liste, wird deren ID automatisch in das Feld „DM to“ übernommen. Mit dem Button „Direct Message“ lässt sich anschließend gezielt eine Nachricht an diese Node senden.

Kartendarstellung

Um die empfangenen Nodes übersichtlich auf einer Karte darzustellen, muss zunächst ein zusätzliches Paket installiert und eine Variable im Quellcode auf „True“ gesetzt werden. Auch diese Schritte sind auf der GitHub-Seite des Projekts ausführlich beschrieben. Anschließend generiert eine weitere Python-Anwendung die Karte als HTML-Datei, die im Browser geöffnet werden kann.

Wer eine kontinuierlich aktualisierte Karte wünscht, kann diesen Vorgang etwa unter Linux mit einem Cronjob automatisieren und die Karte dann auf einer Webseite mit automatischer Aktualisierung einbinden.

Fazit

Die Python-Software Connect bietet eine einfache Möglichkeit, auch ohne eigene Meshtastic-Node aktiv am Netzwerkgeschehen teilzunehmen. Voraussetzung dafür ist ein Gateway, das die Funkdaten an einen MQTT-Server weiterleitet, auf den man selbst Zugriff hat. Zusätzlich müssen die verbundenen Meshtastic-Clients in ihrer Konfiguration der Weiterleitung an einen öffentlichen MQTT-Server zustimmen (Option „OK to MQTT“ aktiviert) und dürfen nicht die Option „Ignore MQTT“ aktiviert haben – nur dann wird man selbst im Netzwerk sichtbar.

Wünschenswerte Erweiterungen wären etwa die Unterstützung mehrerer Kanäle mit separaten Tabs im Nachrichtenfenster, eine stärkere Hervorhebung privater Nachrichten sowie die Möglichkeit, Statusmeldungen per Checkbox ein- oder auszublenden. Da der Quellcode offen zugänglich ist und in Python vorliegt, steht eigenen Anpassungen und Erweiterungen nichts im Weg.

Kennt ihr weitere Meshtastic-Software, die nicht unerwähnt bleiben sollte? Dann schreibt sie uns gerne in die Kommentare unter diesem Beitrag oder diskutiert sie mit uns in unserer Telegram- oder WhatsApp-Gruppe.

Team DL-Nordwest, Stephan 9V1LH/(9M2/)DG1BGS


Möchtest du das DL-Nordwest Projekt unterstützen? Dann freuen wir uns über deinen Gastbeitrag, das Teilen unserer Inhalte oder eine (kleine) Spende 🤑 Vielen Dank für deine Unterstützung! 😘