- Offizieller Beitrag
Es gibt hier zwar bereits viele Themen über Web Steuerung des Raspberry, aber die Lösungen mit von root befehlen auf dem PI über shell_exec sind mir zu unsicher.
Aus diesem Grund habe ich eine Lösung gesucht einen Befehl an meinen PI zu senden ohne direkt auf der Konsole zu Arbeiten. Meine Lösung dafür ist von der Webseite aus in eine Textdatei zu Schreiben, mit einem kleinen Bash Script auszulesen und daraufhin etwas auszulösen.
Die Steuerung Zeige ich anhand einer LED, in meinem Fall hängt die LED an GPIO 9.
Anstatt von LED Schaltung kann man auch jeden anderen Konsolen befehl wie z.b. "shutdown", "restart" oder das Steuern von Funksteckdosen Ausführen.
Die Websteuerung:
<!doctype html>
<html>
<head>
<title>
Led Steuerung
</title>
<meta charset="ISO-8859-1">
<?php
if(isset($_POST['l1'])){
$text = "1";
//Pfad zur Textdatei
file_put_contents('led.txt',$text);
echo "Led Eingeschaltet!";
}
if(isset($_POST['l2'])){
$text = "0";
//Pfad zur Textdatei
file_put_contents('lantern.txt',$text);
echo "Led Ausgeschaltet!";
}
?>
</head>
<body>
<div data-role="page">
<div data-role="content">
<form name="SendForm" method ="post" action="index.php">
<div data-role="controlgroup" data-type="horizontal" >
<h3>Led Steuerung</h3>
<input type="submit" data-role="button" name="l1" value="Led An">
<input type="submit" data-role="button" name="l2" value="Led Aus">
</form>
</div>
</body>
</html>
Alles anzeigen
Datei mit "STRG + O" Speichern und nano mit "STRG + X" Schließen.
Textdatei Erstellen
Rechte setzen:
Das Script zur Abfrage:
#!/bin/sh
./led_init.sh
while true;
do
# Inhalt der Textdatei in Variable Schreiben
LedStatus=`cat /var/www/led.txt`
if [[ $LedStatus =~ "1" ]]
then
echo "1" > /sys/class/gpio/gpio9/value
else
echo "0" > /sys/class/gpio/gpio9/value
fi
done
Alles anzeigen
[font="Tahoma, Verdana, Arial, sans-serif"]Mit "STRG + O" Speichern und nano mit "STRG + X" Schließen. [/font]
Das durchgehend laufende Script ist keine schöne Lösung.
Script zum Initialisieren des GPIO:
#!/bin/sh
echo "9" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio9/direction
echo GPIO 9 defined As Output!
exit 0
Alles anzeigen
[font="Tahoma, Verdana, Arial, sans-serif"]Mit "STRG + O" Speichern und nano mit "STRG + X" Schließen. [/font]
Scripte Ausführbar machen:
[font="Monaco, Consolas, Courier, monospace"]Script Ausführen mit [/font]
Jetzt könnt ihr eure LED über eine kleine Webseite Steuern.
Um das Script im Hintergrund laufen zu lassen kann man z.b. "screen" benutzen.
Die Dateipfade sind natürlich nur Beispiele, ihr könnt diese nach belieben anpassen.
//Das Forum hat meine schöne Formatierung gefressen