Raspi als IP-Power-Switch

Kurzbeschreibung

Läuft als PHP-Script unter http://IP-Adresse/index.php

Das Script selbst:

<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>IP-Switch Raspi Hinteralm</title>
</head>
<p><h1 align="center">Welcome,<br />... Raspberry als IP-Switch ist bereit! </h1>
<p align="center"> </p>
<br>
<form method="get" action="index.php">
Port 18 - GPIO 24 - SW1 - schalten (<b>10A max</b>):
<br>
Status (0=ein, 1=aus):<b>
<?php
$val = exec ("/usr/local/bin/gpio -g read 24", $status, $error);
print_r ( $val );
?></b><br>
<input type="text" size="4" value="" name="t1">
<input type="submit" value="SW1 an" name="p1an">
<input type="submit" value="SW1 aus" name="p1aus">
<br><br>
Port 22 - GPIO 25 - SW2 - schalten (<b>10A max</b>):
<br>
Status (0=ein, 1=aus):<b>
<?php
$val = exec ("/usr/local/bin/gpio -g read 25", $status, $error);
print_r ( $val );
?></b><br>
<input type="text" size="4" value="" name="t2">
<input type="submit" value="SW2 an" name="p2an">
<input type="submit" value="SW2 aus" name="p2aus">
<br><br>
Port 24 - GPIO 8 - SW3 - schalten (<b>10A max</b>):
<br>
Status (0=ein, 1=aus):<b>
<?php
$val = exec ("/usr/local/bin/gpio -g read 8", $status, $error);
print_r ( $val );
?></b><br>
<input type="text" size="4" value="" name="t3">
<input type="submit" value="SW3 an" name="p3an">
<input type="submit" value="SW3 aus" name="p3aus">
<br><br>
Port 26 - GPIO 7 - SW4 - schalten (<b>10A max</b>):
<br>
Status (0=ein, 1=aus):<b>
<?php
$val = exec ("/usr/local/bin/gpio -g read 7", $status, $error);
print_r ( $val );
?></b><br>
<input type="text" size="4" value="" name="t4">
<input type="submit" value="SW4 an" name="p4an">
<input type="submit" value="SW4 aus" name="p4aus">
<br><br>
Port 32 - GPIO 12 - SW5 - schalten (<b>10A max</b>):
<br>
Status (0=ein, 1=aus):<b>
<?php
$val = exec ("/usr/local/bin/gpio -g read 12", $status, $error);
print_r ( $val );
?></b><br>
<input type="text" size="4" value="" name="t5">
<input type="submit" value="SW5 an" name="p5an">
<input type="submit" value="SW5 aus" name="p5aus">
<br><br>
Port 36 - GPIO 16 - SW6 -  schalten (<b>10A max</b>):
<br>
Status (0=ein, 1=aus):<b>
<?php
$val = exec ("/usr/local/bin/gpio -g read 16", $status, $error);
print_r ( $val );
?></b><br>
<input type="text" size="4" value="" name="t6">
<input type="submit" value="SW6 an" name="p6an">
<input type="submit" value="SW6 aus" name="p6aus">
<br><br>
Port 38 - GPIO 20 - SW7 - schalten (<b>10A max</b>):
<br>
Status (0=ein, 1=aus):<b>
<?php
$val = exec ("/usr/local/bin/gpio -g read 20", $status, $error);
print_r ( $val );
?></b><br>
<input type="text" size="4" value="" name="t7">
<input type="submit" value="SW7 an" name="p7an">
<input type="submit" value="SW7 aus" name="p7aus">
<br><br>
Port 40 - GPIO 21 - SW8 - schalten (<b>10A max</b>):
<br>
Status (0=ein, 1=aus):<b>
<?php
$val = exec ("/usr/local/bin/gpio -g read 21", $status, $error);
print_r ( $val );
?></b><br>
<input type="text" size="4" value="" name="t8">
<input type="submit" value="SW8 an" name="p8an">
<input type="submit" value="SW8 aus" name="p8aus">
</form>
<?php
if(isset($_GET["p1an"])){
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 24 0"));
$t1 = $_GET["t1"];
if ($t1 > 0) {
sleep($t1);
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 24 1"));
}
}
else if(isset($_GET["p1aus"])){
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 24 1"));
}
if(isset($_GET["p2an"])){
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 25 0"));
$t1 = $_GET["t2"];
if ($t2 > 0) {
sleep($t2);
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 25 1"));
}
}
else if(isset($_GET["p2aus"])){
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 25 1"));
}
if(isset($_GET["p3an"])){
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 8 0"));
$t1 = $_GET["t3"];
if ($t3 > 0) {
sleep($t3);
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 8 1"));
}
}
else if(isset($_GET["p3aus"])){
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 8 1"));
}
if(isset($_GET["p4an"])){
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 7 0"));
$t1 = $_GET["t4"];
if ($t4 > 0) {
sleep($t4);
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 7 1"));
}
}
else if(isset($_GET["p4aus"])){
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 7 1"));
}
if(isset($_GET["p5an"])){
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 12 0"));
$t1 = $_GET["t5"];
if ($t5 > 0) {
sleep($t5);
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 12 1"));
}
}
else if(isset($_GET["p5aus"])){
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 12 1"));
}
if(isset($_GET["p6an"])){
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 16 0"));
$t1 = $_GET["t6"];
if ($t6 > 0) {
sleep($t6);
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 16 1"));
}
}
else if(isset($_GET["p6aus"])){
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 16 1"));
}
if(isset($_GET["p7an"])){
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 20 0"));
$t1 = $_GET["t7"];
if ($t7 > 0) {
sleep($t7);
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 20 1"));
}
}
else if(isset($_GET["p7aus"])){
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 20 1"));
}
if(isset($_GET["p8an"])){
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 21 0"));
$t1 = $_GET["t8"];
if ($t8 > 0) {
sleep($t8);
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 21 1"));
}
}
else if(isset($_GET["p8aus"])){
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 21 1"));
}

?>
</body>
</html>

Die Initialisierung dazu “startup_server.sh” (starten beim Hochlauf mit crontab!):

#
# Port 24
#
/usr/local/bin/gpio -g mode 24 out
# 0 = einschalten, 1 = ausschalten bei Startup
/usr/local/bin/gpio -g write 24 0
#
# Port 25
#
/usr/local/bin/gpio -g mode 25 out
# 0 = einschalten, 1 = ausschalten bei Startup
/usr/local/bin/gpio -g write 25 0
#
# Port 8
#
/usr/local/bin/gpio -g mode 8 out
# 0 = einschalten, 1 = ausschalten bei Startup
/usr/local/bin/gpio -g write 8 0
#
# Port 7
#
/usr/local/bin/gpio -g mode 7 out
# 0 = einschalten, 1 = ausschalten bei Startup
/usr/local/bin/gpio -g write 7 0
#
# Port 12
#
/usr/local/bin/gpio -g mode 12 out
# 0 = einschalten, 1 = ausschalten bei Startup
/usr/local/bin/gpio -g write 12 0
#
# Port 16
#
/usr/local/bin/gpio -g mode 16 out
# 0 = einschalten, 1 = ausschalten bei Startup
/usr/local/bin/gpio -g write 16 0
#
# Port 20
#
/usr/local/bin/gpio -g mode 20 out
# 0 = einschalten, 1 = ausschalten bei Startup
/usr/local/bin/gpio -g write 20 0
#
# Port 21
#
/usr/local/bin/gpio -g mode 21 out
# 0 = einschalten, 1 = ausschalten bei Startup
/usr/local/bin/gpio -g write 21 0

# Verzeichnis fuer Webserver anlegen
if [ ! -d "/var/log/nginx" ]; then
  sudo mkdir /var/log/nginx
fi
# Webserver starten
sudo service nginx restart