Meshtastic-Anleitung – Fernbedienung des Hardware-Moduls

Das Remote Hardware Modul ermöglicht das Lesen, Schreiben und Überwachen von GPIO-Pins an einem entfernten Knoten. Konfigurationsoption: Aktiviert.
Hinweis: Für Firmware-Versionen über 2.5.3 erfordert dieses Modul das Kompilieren einer eigenen Firmware und das Entfernen des -DMESHTASTIC_EXCLUDE_REMOTEHARDWARE=1 Build-Flags aus der platformio.ini. Obwohl Konfigurationsoptionen für dieses Modul in Clients erscheinen können, werden das Setzen und Lesen von GPIO derzeit nur über die Meshtastic Python CLI unterstützt.

Konfigurationsparameter für Remote Hardware

Stellen Sie sicher, dass das Modul aktiviert ist.

Verfügbarkeit des Remote Hardware Moduls in Clients

Android

Alle Konfigurationsoptionen für das Remote Hardware Modul sind in der Android-App verfügbar. Öffnen Sie die Meshtastic-App und gehen Sie zu Einstellungen > Remote Hardware.

Apfel

Alle Konfigurationsoptionen für das Remote Hardware Modul sind in den iOS-, iPadOS- und macOS-Apps (Version und höher) unter Einstellungen > Modulkonfiguration > Remote Hardware verfügbar.

CLI

Alle Konfigurationseinstellungen des Remote Hardware Moduls können über die Python-CLI verwaltet werden.

Web

Nicht implementiert.

Fernsteuerung des Hardware-Moduls

Tipp: Der Zugriff auf GPIO-Pins birgt inhärente Risiken, da falsche Einstellungen Ihre Hardware beschädigen oder zerstören können. Stellen Sie sicher, dass Sie das Schaltbild Ihres spezifischen Geräts vollständig verstehen, bevor Sie fortfahren, da keine Garantie übernommen wird. Verwenden Sie diese Funktion auf eigene Gefahr.

Unterstützte Operationen

Sie können jeden GPIO setzen, jeden GPIO lesen und Mesh-Benachrichtigungen erhalten, wann immer sich der Zustand eines GPIO ändert. Beachten Sie, dass schnelle Übergänge—wie Tastendrücke—nicht erkannt werden können; für diese Anwendungsfälle siehe das Detection Sensor-Modul. Die Ergebnisse der GPIO-Lesungen sowie Benachrichtigungen über GPIO-Zustandsänderungen werden auch über MQTT (falls aktiviert) im JSON-Format (falls aktiviert) veröffentlicht.

Einrichtung

Sie können die neuesten Python-Tools und Bibliotheken installieren, indem Sie pip3 install --upgrade meshtastic unter Windows, Linux oder OS-X ausführen. Weitere Details finden Sie im Python-Abschnitt.
Um unbefugten Zugriff zu verhindern, müssen Sie zuerst einen GPIO-Kanal erstellen, der authentifizierten Zugriff auf diese Funktion bietet. Dieser Kanal muss sowohl zum lokalen als auch zum entfernten Knoten hinzugefügt werden, und das Modul muss auf beiden Geräten aktiviert sein.
Die Schritte mit dem Python-Kommandozeilen-Tool sind wie folgt:
  1. Verbinden Sie das lokale Gerät über USB
  2. Aktivieren Sie das Remote-Hardware-Modul
 meshtastic --set remote_hardware.enabled true
  1. Erstellen Sie einen GPIO-Kanal:
 meshtastic --ch-add gpio
  1. Überprüfen Sie, ob der Kanal erstellt wurde, und kopieren Sie dann die lange „Vollständige URL“, die alle Kanäle auf dem Gerät enthält.
 meshtastic --info
  1. Verbinden Sie das entfernte Gerät über USB oder greifen Sie über das Mesh mit der Remote-Admin-Funktion darauf zu.
  2. Aktivieren Sie das Remote-Hardware-Modul auf dem entfernten Gerät.
 meshtastic --set remote_hardware.enabled true
  1. Konfigurieren Sie das entfernte Gerät so, dass es dem GPIO-Kanal beitritt, den Sie zuvor erstellt haben.
 meshtastic --seturl dieurldiedusicherschritt3kopiert hast
Beide Geräte sollten nun über den GPIO-Kanal kommunizieren können. Um dies zu bestätigen, senden Sie eine Textnachricht von einem Gerät zum anderen. Sie können auch --nodes um sicherzustellen, dass der zweite Knoten erkannt wird.

Masken

Eine Maske wird verwendet, um anzugeben, welche GPIOs gesteuert werden sollen. Für GPIO 1 wird Bit 1 der Maske gesetzt (hexadezimal 0x2); für GPIO 2 wird Bit 2 der Maske gesetzt (0x4); und so weiter. Um die korrekte Maske für den/die Pin(s) zu bestimmen, die Sie verwenden möchten, kann das unten gezeigte Python-Programm (und seine Ausgabe) hilfreich sein.
 >>> für i im Bereich(1,45):
...     print(f'GPIO:{i} Maske:{hex(2**i)}')
...
GPIO:1 Maske:0x2
GPIO:2 Maske:0x4
GPIO:3 Maske:0x8
GPIO:4 Maske:0x10
GPIO:5 Maske:0x20
GPIO:6 Maske:0x40
GPIO:7 Maske:0x80
GPIO:8 Maske:0x100
GPIO:9 Maske:0x200
GPIO:10 Maske:0x400
GPIO:11 Maske:0x800
GPIO:12 Maske:0x1000
GPIO:13 Maske:0x2000
GPIO:14 Maske:0x4000
GPIO:15 Maske:0x8000
GPIO:16 Maske:0x10000
GPIO:17 Maske:0x20000
GPIO:18 Maske:0x40000
GPIO:19 Maske:0x80000
GPIO:20 Maske:0x100000
GPIO:21 Maske:0x200000
GPIO:22 Maske:0x400000
GPIO:23 Maske:0x800000
GPIO:24 Maske:0x1000000
GPIO:25 Maske:0x2000000
GPIO:26 Maske:0x4000000
GPIO:27 Maske:0x8000000
GPIO:28 Maske:0x10000000
GPIO:29 Maske:0x20000000
GPIO:30 Maske:0x40000000
GPIO:31 Maske:0x80000000
GPIO:32 Maske:0x100000000
GPIO:33 Maske:0x200000000
GPIO:34 Maske:0x400000000
GPIO:35 Maske:0x800000000
GPIO:36 Maske:0x1000000000
GPIO:37 Maske:0x2000000000
GPIO:38 Maske:0x4000000000
GPIO:39 Maske:0x8000000000
GPIO:40 Maske:0x10000000000
GPIO:41 Maske:0x20000000000
GPIO:42 Maske:0x40000000000
GPIO:43 Maske:0x80000000000
GPIO:44 Maske:0x100000000000

Verwaltung der GPIOs über die Python-CLI

Hinweis: Sie können die GPIOs Ihres USB-verbundenen Knotens steuern oder überwachen, indem Sie --dest auf die ID des lokalen Knotens setzen. In diesem Fall ist kein GPIO-Kanal erforderlich.

Ein GPIO schreiben

Beispiel: GPIO4 einschalten

 meshtastic --port /dev/ttyUSB0 --gpio-wrb 4 1 --dest 28979058
 # Mit Funkgerät verbunden
 # Schreibe GPIO-Maske 0x10 mit Wert 0x10 an !28979058

Ein GPIO lesen

Beispiel: GPIO4 lesen
 meshtastic --port /dev/ttyUSB0 --gpio-rd 0x10 --dest 28979058
 # Mit Funkgerät verbunden
 # Lese GPIO-Maske 0x10 von !28979058
 # GPIO-Leseantwort gpio_value=16
Hinweis: Wenn die Maske und der gpio_value übereinstimmen, ist der Wert "ein". Wenn der gpio_value 0 ist, ist der Wert "aus".

Überwachen von GPIO-Änderungen

Beispiel: Überwachen von GPIO4 auf Änderungen
 meshtastic --port /dev/ttyUSB0 --gpio-watch 0x10 --dest 28979058
 # Mit Funkgerät verbunden
 # Überwache GPIO-Maske 0x10 von !28979058
 # RemoteHardware empfangen typ=GPIOS_CHANGED, gpio_value=16
 # RemoteHardware empfangen typ=GPIOS_CHANGED, gpio_value=0
 # RemoteHardware empfangen typ=GPIOS_CHANGED, gpio_value=16
 # < drücken Sie Strg-C zum Beenden >

GPIO-Operationstest

Sie können GPIO-Operationen direkt aus Ihrem eigenen Python-Code mit der Meshtastic RemoteHardwareClient-Klasse ausführen. Weitere Details finden Sie in der Python-API-Dokumentation.
Um zu bestätigen, dass die GPIO-Operationen korrekt funktionieren, können Sie eine einfache LED und einen Widerstand als Test anschließen. Verwenden Sie das bereitgestellte Tutorial als Referenz.

Anforderungen

  • 2× Meshtastic-Geräte (eines mit einem lokalen Computer verbunden, das andere einfach mit Strom versorgt und für die LED-Verbindung verwendet)
  • 2× Kabel (üblicherweise schwarz für Masse und gelb für Signal, aber es können beliebige Farben verwendet werden)
  • LED
  • 1× 220 Ω Widerstand (optional, aber empfohlen)
  • 1× Steckbrett (optional)

Vorbereitung

  1. Trennen Sie das entfernte Gerät von seiner Stromquelle (Batterie oder USB).
  2. Befestigen Sie den Widerstand am längeren (positiven) Anschluss der LED und verbinden Sie dann das gelbe Kabel mit dem anderen Ende des Widerstands.
  3. Verbinden Sie das andere Ende des gelben Kabels mit einem sicheren GPIO-Pin (zum Beispiel können Sie bei TLoraV1 GPIO21 verwenden).
  4. Verbinden Sie das schwarze Erdungskabel vom Erdungs-Pin des Geräts (bei TLoraV1 ist dies der End-Pin neben der RST-Taste) mit dem kürzeren (negativen) Anschluss der LED.
  5. Stellen Sie die Stromversorgung des Geräts wieder her.

Validierung

Standardmäßig kann ein Pin entweder „aus“ oder „ein“ sein (meistens „aus“). Siehe die folgenden Schritte zum Ausführen von Befehlen. Zum Beispiel ist beim Verwenden von GPIO21 der entsprechende Maskenwert 0x200000.

Für unseren Newsletter anmelden

Erhalten Sie die neuesten Informationen über unsere Produkte und Sonderangebote.

Website Feedback

Help us improve OpenELAB

Found a website issue or have an idea? Tell us what would make your experience better.