Plugin-Daten
AutorJörg Siedhof
Logo
StatusSTABLE
Version2.0.7
Min. LB Version2.2.0
Release Downloadhttps://github.com/joesie/GPIO/archive/2.0.7.zip
BeschreibungDieses Modul stellt die digitalen Ein- und Ausgänge des Raspberry zur Verfügung
SprachenDE
Diskussionhttps://www.loxforum.com/forum/projektforen/loxberry/plugins/296663-gpio-2-x

GPIO

Version History...


Die neue Version 2.0.7 ist nicht kompatibel mit den vorherigen Pluginversionen. Wurde bereits eine Pluginversion 1.x  auf dem Loxberry installiert, muss dieser nach dem Update neu konfiguriert werden. 

Außerdem muss auch die LoxConfig des verwendeten Miniservers angepasst werden!


The new Version 2.0.7 is not compatible with older versions of this plugin. Did you installed a plugin version with 1.x on your Loxberry, you must reconfigure the plugin after update.

Furthermore you have also to reconfigure the LoxConfig for the Miniserver you use with this plugin!

Einführungsvideo

Installation

Für dieses Plugin muss das Plugin MQTT Gateway installiert sein. Außerdem werden die Bibliotheken "python3-pigpio", "python3-paho-mqtt", "python3-colorlog" während der Plugin Installation automatisch installiert. Hierfür muss der Loxberry eine Verbindung zum Internet haben.

Konfigurationsoptionen

Über die Konfigurationsoberfläche können folgende Einstellungen vorgenommen werden:

  • Anzahl der Eingänge
  • Anzahl der Ausgänge
  • Zuweisung der GPIO Pins zu den Kanälen die über die LoxConfig aufgerufen werden können.
  • Auswahl des Minservers an den der Zustand der Eingänge gesendet werden soll

Funktion des Plugins

Konfiguration

Anzahl Ein/Ausgänge

Als erstes werde die Anzahl der benötigten Ein- und Ausgänge angegeben. Dabei können die Anzahl der Ein- und Ausgänge gemischt oder auch nur Ein- oder nur Ausgänge gewählt werden. siehe folgende Abbildung:

Die Auswahl muss gespeichert werden. Nach dem speichern wird der untere Bereich, die Kanalkonfiguration angepasst. 

Kanalkonfiguration

In der Kanalkonfiguration wird die Zuordnung der physischen Ein- und Ausgänge (GPIOs) als Ein- bzw. Ausgänge vorgenommen. 

Die Zuweisung erfolgt durch Eingabe der entsprechenden GPIO Nummer. Hierbei ist darauf zu achten, dass jedem GPIO nur ein Kanal zugewiesen wird. Außerdem darf ein GPIO nur ein Ein-oder Ausgang sein. Die Verwendung sowohl als Ausgang wie Eingang ist nicht möglich! Im Plugin wird die korrekte Eingabe nicht überprüft!

Die Pinbelegung des PIs kann z.B. nachgelesen werden: https://www.raspberrypi.org/documentation/usage/gpio/

Die weiteren Einstellungen werden ausschließlich für die Eingänge benötigt:

Beschaltung (Pullup/Pulldown)

Für jeden Eingang kann gewählt werden, ob dieser mit dem internen Pullup oder Pulldown beschaltet werden soll. Dieser Widerstand dient dazu, bei nicht anliegendem Signal am Eingang, diesen auf einen definierten Wert 0V (Pulldown) oder 3,3V (Pullup) zu ziehen (siehe https://de.wikipedia.org/wiki/Open_circuit#Beschaltung_der_Signalleitungen). Der Defaultwert ist Pulldown.

Präfix

Das Plugin verwendet den Hostname des Loxberry als Präfix. Somit ist es möglich, mehrere Loxberrys mit dem Plugin zu verwenden und die Eingänge eindeutig zu zuordnen. In der Konfiguration des Plugins muss hierfür keine Anpassung vorgenommen werden. 

Verwendung der Ein- und Ausgänge

Im folgenden Abschnitt wird beschrieben, wie die Ein-und Ausgänge funktionieren. Praktische Tipps rund um die GPIOs wurden hier zusammengefasst: Allgemeines zu den GPIOs.

Das Plugin kommuniziert über MQTT Nachrichten. Eine Nachricht besteht hierbei immer aus dem <Topic> und <Payload>. Im Plugin MQTT Gateway ist detailliert beschrieben, wie Nachrichten funktionieren, wie diese aufgebaut sind und wie man überprüfen kann, ob die Nachrichten richtig ankommen.

Dieses Plugin verfügt zusätzlich über eine Status Nachricht, mit der überprüft werden kann, ob das Plugin aktiv ist, oder nicht. 

Diese Nachricht kann wie folgt abgefragt werden:

<Hostname des Loxberry>/gpio/status (online/offline)

Schalten der Ausgänge

Der Topic zum setzen eines Ausgangs ist hierbei wie folgt aufgebaut:

<Hostname des Loxberry>/gpio/set/<Nummer des GPIOs>

Als Payload können zum Einschalten folgende Werte übergeben werden: 

ON, on, 1

Als Payload können zum Ausschalten folgende Werte übergeben werden: 

OFF, off, 0

Achtung: Sowohl der Topic wie auch der Payload muss ohne Leerzeichen, Zeilenumbruch und sonstige Formatierungen angegeben werden!

Wurde die Nachricht korrekt gesendet, wird der entsprechende Ausgang gesetzt und zusätzlich erfolgt eine Quittierung der mit einer Statusnachricht, die wie folgt aufgebaut ist:

Der Topic zum bestätigen des setzen des Ausgangs ist wie folgt aufgebaut:

<Hostname des Loxberry>/gpio/<Nummer des GPIOs>

Folgende Werte werden hierbei übertragen:

stateText=OFF/ON (Im Fehlerfall wird hier im Klartext eine Meldung geschrieben, dass der Ausgang nicht gesetzt werden konnte)

state=0/1

timestamp_OFF=<Date Time>

timestamp_ON=<Date Time>

Beispiel:

Der Ausgang 1 (GPIO5) soll eingeschaltet werden, dann sieht die Nachricht zum Beispiel wie folgt aus:

loxberry/gpio/set/5 on

Das Plugin antwortet mit:

loxberry/gpio/5/stateText=ON

loxberry/gpio/5/state=1

loxberry/gpio/5/timestamp_ON=2021-03-16 13:41:59

Der Ausgang 1 soll ausgeschaltet werden, dann sieht die Nachricht zum Beispiel wie folgt aus:

loxberry/gpio/set/5 off

Das Plugin antwortet mit:

loxberry/gpio/5/stateText=OFF

loxberry/gpio/5/state=0

loxberry/gpio/5/timestamp_OFF=2021-03-16 13:41:59

Schalten mehrerer Ausgänge in einem Request

Es ist auch möglich, in einem Request mehrere Ausgänge auf einmal zu schalten. Die  zu schaltenden Ausgänge und deren Werte werden dabei imm json Format übergeben.

Es muss darauf geachtet werden, dass technisch bedingt, die Ausgänge NICHT exakt zur gleichen Zeit geschaltet werden! Daher ist es nicht möglich, eine direkte Umschaltung z.B. von Motoren (Jalousien) vorzunehmen. In diesem Fall muss vorher zwangsweise ein Aus-Kommando an alle betreffenden Ausgänge gesendet werden!

Der Topic zum setzen mehrerer Ausgänge ist hierbei wie folgt aufgebaut:

<Hostname des Loxberry>/gpio/set/json

Des Payload zum schalten mehrerer Ausgänge ist wie folgt aufgebaut. Hierbei werden die GPIO Pin und Wertepaare jeweils kommasepariert aufgelistet. Es muss immer ein valides JSON übergeben werden: 

{"GPIO":"on/off","GPIO":"on/off","GPIO":"on/off"}

GPIO: Nummer des zu schaltenden Pins

on/off: Angabe, on der Pin ein-, oder ausgeschaltet werden soll. Alternativ kann auch 0/1 als Wert für Ein/Aus übergeben werden

Beispiel:

Der Ausgang 1 (GPIO5) soll ein und der Ausgang 2 (GPIO6) soll ausgeschaltet werden:

loxberry/gpio/set/json {"5":"on", "6":"off"}

Das Plugin antwortet mit:

loxberry/gpio/5/stateText=ON

loxberry/gpio/5/state=1

loxberry/gpio/5/timestamp_ON=2021-03-16 13:41:59

loxberry/gpio/6/stateText=OFF

loxberry/gpio/6/state=0

loxberry/gpio/6/timestamp_OFF=2021-03-16 13:41:59

Verwendung der Eingänge

Eine Änderung des Wertes am Eingang wird automatisch (Interrupts) vom Plugin erkannt. Jede Änderung (von OFF nach ON oder ON nach OFF) wird über MQTT Nachrichten gemeldet. Die Nachricht ist wie folgt aufgebaut:

Der Topic zum melden der Änderung ist wie folgt aufgebaut:

<Hostname des Loxberry>/gpio/<Nummer des Eingangs>

Folgende Werte werden hierbei übertragen:

stateText=OFF/ON 

state=0/1

timestamp_OFF=<Date Time>

timestamp_ON=<Date Time>

Beispiel:

Am Eingang 2 (GPIO4) wurde ein Signalwechsel von Aus nach Ein erkannt. Das Plugin antwortet mit:

loxberry/gpio/4/stateText=ON

loxberry/gpio/4/state=1

loxberry/gpio/4/timestamp_ON=2021-03-16 13:41:59

Am Eingang 2 wurde ein Signalwechsel von Ein nach Aus erkannt. Das Plugin antwortet mit:

loxberry/gpio/4/stateText=OFF

loxberry/gpio/4/state=0

loxberry/gpio/4/timestamp_OFF=2021-03-16 13:41:59

Einrichtung in der Loxone Config Software

Ausgänge

Wie die Ausgänge in der Loxone Config eingerichtet werden müssen, ist detailliert auf der Seite MQTT - Schritt für Schritt: Loxone -> MQTT beschrieben.

Die genauen Befehle und Bezeichnungen werden nach dem Speichern der Konfigurationsseite für jeden Kanal angezeigt. Hierzu ist unter jedem Eingabefeld ein Link, der nach dem anklicken die Informationen anzeigt.


Beispiel:

Es soll der Ausgang 5 über einen Schalter geschaltet werden.

  1. Anlegen eines Virtuellen Ausgang.

Die Adresse ist wie folgt aufgebaut:

/dev/udp/<Adresse des Loxberry>/<Gateway UDP in-Port>

Im Beispiel ist die <Adresse des Loxberry>=192.168.2.41, der <Gateway UDP in-Port>=Default=11884

Somit lautet im Beispiel die zu verwendende Adresse: /dev/udp/192.168.2.41/11884 

2.   Anlegen eines Virtuellen Ausgang Befehls

Konfigurieren der Befehle für Ein/Aus:

Ein: publish loxberry/gpio/set/5 on

Aus: publish loxberry/gpio/set/5 off


Eingänge

Damit die Eingänge übermittelt werden können, muss im Loxberry und im Plugin ein Miniserver konfiguriert sein.

Wie ihr die Eingänge in der Loxone Config anlegt, könnt ihr detailliert auf folgender Seite nachlesen MQTT - Schritt für Schritt: MQTT -> Loxone

Die genaue Bezeichnung für jeden Wert wird nach dem Speichern der Konfigurationsseite für jeden Kanal angezeigt. Hierzu ist unter jedem Eingabefeld ein Link, der nach dem anklicken die Informationen anzeigt.

Beispiel:

Als Beispiel soll der Status von dem Eingang 1 in Loxone übernommen werden.

  1. Aus der "Incoming View" des Plugins MQTT Gateway wird die exakte Bezeichnung des Eingangs entnommen. In diesem Beispiel: "loxberry_gpio_5_state" (Es ist der Topic mit "_" statt "/")
  2. Anlegen eines Virtuellen Eingangs. Als Bezeichnung wird exakt der Name des Eingangs, in dem Beispiel "loxberry_gpio_5_state" eingetragen. Zusätzlich wird das Häkchen bei "Als Digitaler Eingang verwenden" entfernt


Roadmap

Die Roadmap wird hier gepflegt: https://github.com/joesie/GPIO/issues

Fragen stellen und Fehler melden

Fehler bitte im Github als Issue einstellen. Fragen bitte im Forum: https://www.loxforum.com/forum/projektforen/loxberry/plugins/296663-gpio-2-x stellen.