raspberrypi-tutorials.de

Raspberry Pi Tutorials

GPIO am Raspberry Pi über ein Webinterface mit PHP schalten

Das Schalten der GPIO Ein-und Ausgänge über ein Webinterface ist natürlich viel komfortabler als über die shell über eine manuelle Eingabe.

Voraussetzungen für dieses Tutorial

Dafür braucht man zuerst einen Webserver - zum Schalten müssen allerdings nur Apache2 und PHP installiert sein. SSH Zugriff und FTP Zugang sind sehr zu empfehlen um später die PHP Datei auf den Webserver zu legen.

Außerdem wird in diesem Tutorial WiringPi zum Schalten verwendet, wie ihr WiringPi installiert und darüber GPIO’s schaltet erfahrt ihr hier: WiringPi installieren und GPIO’s über WiringPi schalten

Um das ganze reizvoller zu machen, sollte natürlich beim Schalten etwas passieren. Wie ihr eine LED als Testumgebung anschließt, sodass ihr diese über die GPIO’s schalten könnt erfahrt ihr hier: LED Über GPIOs schalten

>>> Zeig mir den neuen Raspberry Pi 2


Das Webinterface einrichten

Ein einfaches Webinterface ist eigentlich nichts außer eine Webseite bestehend aus HTML und CSS welche später noch PHP Code ausführt.

Nachfolgend findet ihr den Code für die HTML Seite. Diese beinhaltet ein Formular mit 2 Buttons welche später den GPIO schalten sollen (ich habe hier den GPIO17 gewählt). In diesem Beispiel könnte der GPIO zB an einer LED oder einem Licht angeschlossen sein. So kann zum Beispiel eine Lampe bequem mit dem Smartphone vom Sofa aus steuern.

Ein neues HTML Dokument erstellt ihr genauso wie ein PHP Dokument mit jedem gewöhnlichen Texteditor, einfach den Code reinkopieren und als .html oder .php Datei abspeichern. In diesem Fall speichern wir das Dokument als "gpio.php” ab und schreiben das HTML und den PHP Code in ein Dokument. Nachfolgend findet ihr den Code für das gesamte Dokument:



Erklärung des Codes:

sorgt dafür, dass die Webseite auch auf mobilen Geräten gut dargestellt wird.
Das nächste wichtige Element ist das "Form” Element. Dieses stellt die beiden Buttons bereit, welche später als Oberfläche zum Schalten des GPIO17 verwendet werden.
Dieses Formular verweist auf die Datei gpio.php. Die Zeile
$modeon17 = trim(@shell_exec("/usr/local/bin/gpio -g mode 17 out"));
legt den GPIO17 als Ausgang fest.
Das Anschalten erfolgt nun über
trim(@shell_exec("/usr/local/bin/gpio -g write 17 1"));
und das Ausschalten über
trim(@shell_exec("/usr/local/bin/gpio -g write 17 0"));.
"trim” entfernt Whitespaces oder andere ungewünschte Zeichen, und "shell_exec” führt den Befehl dann in der shell aus.

Das wars auch schon. Legt die gpio.php Datei in das Verzeichnis "var/www” eures Webeservers und ruft sie im Browser am PC oder über den Smartphonebrowser auf.
Das Dokument wird unter der IP Adresse des Raspberry Pi mit dem Zusatz "/gpio.php” zu finden sein. Wie ihr eure IP Adresse herausfindet, erfahrt ihr in dem Tutorial: SHH Zugriff auf dem Raspberry Pi einrichten

Es kann sein, dass es nicht funktioniert weil der Webserver nicht über die Rechte verfügt über Dateien Shell Befehle auszuführen. Dazu solltet ihr die Rechte vorher entsprechend gesetzt haben:

1 sudo chmod g+s /var/www
2 sudo chmod 775 /var/www
3 sudo chown -R www-data:www-data /var/www


Falls es trotzdem nicht funktionieren will könnt ihr noch mit einem Eintrag in den "Sudoers” die vollen Rechte setzen. Aber Vorsicht! Hier gebt ihr vollen Zugriff ohne Passwort, das sollte nur getan werden, wenn der Pi nicht im Netz erreichbar ist, da es sonst ein großes Sicherheitsrisiko bedeutet. Dazu gebt ihr in der shell folgendes ein:

1 sudo visudo


und tragt folgendes am Ende ein

1 www-data ALL=NOPASSWD: ALL


Speichert und schließt das Dokument mit "STRG+O” und STRG+X”.

Jetzt sollte alles funktionieren. Wenn es immernoch nicht klappt schaut mal in den Apache2 Errorlog:

1 cat /var/log/apache2/error.log




Fragen und Antworten zu dem Tutorial


Unter welchem User werden die Befehle in der Shell zur ausführung des Codes durchgeführt? Wie gross ist dabei das Sicherheitsrisiko bei der Benutztung, wenn der RPi im öffentlichen Netz erreichbar ist?

Der User sollte www-data sein. Normalerweise sollte im Netz nicht all zu viel passieren, aber möglich ist es natürlich immer! Daher der Sicherheitshinweis.



Funktoniert das auch wenn ich den URL aufrufe,also ohne zu klicken?

Wenn du die Parameter in der URL so wählst, wie du Sie haben willst ja. (Also so, wie wenn der Button gedrückt wurde)



>>> Zeig mir den neuen Raspberry Pi 2

zurückvorherige Seite Raspberry Pi Projekte

Alle Angaben ohne Gewähr. Änderungen und Irrtümer vorbehalten.
*Links zu amazon.de sind Affiliatelinks / Werbung
© 2023 raspberrypi-tutorials.de · Impressum · Datenschutz
Raspberry Pi
Raspberry Pi 3
Raspberry Pi 2 Starter Kit
Baubox für Kinder
Installation mit Raspbian
Heimautomation
Zubehör
Hardware
Software
Raspberry Pi Projekte
  • Funksteckdosen via PHP
  • gpio im Webinterface schalten
  • Raspberry Pi Wecker
  • Motivation: Sport und Aufwachen
Bücher