Im Gegensatz zu anderen Python-Bibliotheken für die GPIO-Programmierung folgt GPIO Zero einem anderen Konzept. Statt GPIOs als Eingänge oder Ausgänge zu definieren, definiert man ein Device (Gerät oder Bauelement) als Objekt, dass an einem GPIO hängt. GPIO Zero kümmert sich dann darum, ob es sich um ein Input Device (Eingang) oder ein Output Device (Ausgang) handelt. Wie ich feststellen musste, hat es allerdings auch Einschränkungen, weshalb ich auch RPi.GPIO benutzen musste.
Die Funktionen sind auf der Seite https://gpiozero.readthedocs.org ausführlich beschrieben.
GPIO Zero benutze ich, wenn ich mit einem Browser etwas steuern oder eine Ausgabe haben möchte:
- Mit Flask wird das Programm geschrieben.
- Dazu benutze ich die Spyder IDE.
- Gunicorn ist ein Python WSGI HTTP Server und stellt die Verbindung zum NGINX-Server her.
- NGINX ist ein Webserver und Reverse Proxy.
Ziel dieser Dokumentation ist zu zeigen, wie das Waveshare Raspberry Pi Relais Board richtig angesteuert wird. Was ich bisher von Waveshare gesehen habe, ist unbrauchbar.
Warum unbrauchbar?
- Erst wird ein Javascipt im Browser ausgeführt.
- Dadurch wird die Anzeige im Browser gesteuert.
- Das funktioniert auch auf einem PC, der keine GPIO hat.
- Die Anzeige sagt damit nichts über den Zustand der Relais aus und ist völlig unbrauchbar, wenn Relais auch noch von mehreren Stellen angesteuert werden oder nach dem booten angezogen sind.
Problemlösung:
- Der Befehl wird über HTML und Flask / Python ausgeführt.
- Damit wird der GPIO Pin direkt angesteuert.
- Dann werden die Pins der GPIO abgefragt und der Status angezeigt.
- Dies erfolgt im Browser über HTML / CSS, wo die Tastenfarbe zwischen rot und grün umgeschaltet wird.
- Es besteht die Möglichkeit, dass die Relais von einem anderen Programm oder über einen Cronjob gesteuert werden. Dann würde die Anzeige nicht mehr stimmen.
- Dafür gibt es die Taste: Seite neu laden
- Hiermit wird eine neue Statusabfrage gestartet und die Tasten werden farblich korrekt dargestellt.
Projektablauf:
- Erst richten wir NGINX und Gunicorn ein, damit wir die Voraussetzungen für den späteren Betrieb haben.
- Dann richten wir die Spyder IDE zum Editieren und Testen des Programms mit Flask ein.
- Als Nächstes sind das Flask-Programm, HTML, CSS und Javascript erklärt.
Informationen
Ich möchte hier an dieser Stelle GPIO Zero nicht komplett erklären, dazu gibt es genug Dokumentationen auch in Deutsch.
Hier sind einige Links, wo Sie Informationen finden:
Elektronik Kompendium: Raspberry Pi: GPIO mit Python und GPIO Zero programmieren
Die komplette englische Dokumentation zu GPIO Zero finden Sie auf https://gpiozero.readthedocs.org
Wer nicht so fit in Englisch ist, kann sich gut mit dem DeepL Übersetzer behelfen: https://www.deepl.com/translator
Weiter: NGINX und Gunicorn | Update: 21.01.2023 |