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:
-
Verbinden Sie das lokale Gerät über USB
-
Aktivieren Sie das Remote-Hardware-Modul
| meshtastic --set remote_hardware.enabled true |
-
Erstellen Sie einen GPIO-Kanal:
-
Ü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.
-
Verbinden Sie das entfernte Gerät über USB oder greifen Sie über das Mesh mit der Remote-Admin-Funktion darauf zu.
-
Aktivieren Sie das Remote-Hardware-Modul auf dem entfernten Gerät.
| meshtastic --set remote_hardware.enabled true |
-
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)
-
1× LED
-
1× 220 Ω Widerstand (optional, aber empfohlen)
-
1× Steckbrett (optional)
Vorbereitung
-
Trennen Sie das entfernte Gerät von seiner Stromquelle (Batterie oder USB).
-
Befestigen Sie den Widerstand am längeren (positiven) Anschluss der LED und verbinden Sie dann das gelbe Kabel mit dem anderen Ende des Widerstands.
-
Verbinden Sie das andere Ende des gelben Kabels mit einem sicheren GPIO-Pin (zum Beispiel können Sie bei TLoraV1 GPIO21 verwenden).
-
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.
-
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.