Die Idee war folgende...
Ich kaufe mir ein Raspberry Pi und hoste auf diesem eine Website, auf die ich mit allen Geräten im Heimnetzwerk zugreifen kann. Die Website soll mittels php shell_exec Befehl meine GPIO Pins ansteuern an dem wiederum ein Funksendemodul angeschlossen ist. Der Funksender sendet vordefinierte Bitfolgen los, die eine Steckdose als AN oder AUS Signal interpretiert.Hauptkomponenten:
1x Raspberry Pi 21x MicroSD Karte (Class 10)
1x 433 MHz Funkmodul
1x Funksteckdosenset ELRO AB440S
Diese Komponenten können auch durch vergleichbare Bauteile ausgetauscht werden.
Bei den Funksteckdosen kann es höchstens sein das ihr etwas herumprobieren müsst bis ihr die richtige Bitfolge zum An und Ausschalten herausgefunden habt.
Raspberry Pi vorbereiten & konfigurieren
Betriebssystem installieren
Zuerst brauchen wir natürlich ein Betriebssystem, dass auf dem Raspi läuft. Hier könnt ihr euch eines aussuchen, das euch gefällt. Ich habe mich für RASPBIAN JESSIE entschieden. Nach dem Herunterladen könnt ihr das Zip Archiv entpacken und ihr werdet eine Image Datei finden. Anschließend nehmt ihr die microSD Karte, steckt diese in einen Kartenlesegerät und verbindet dieses mit eurem PC. Nun müsst ihr das Tool Win32 Disk Imager von hier herunterladen. Nachdem ihr das Programm installiert und als Admin gestartet habt könnt ihr den Laufwerksbuchstaben eurer microSD Karte auswählen und die Image Datei die ihr vorher entpackt habt. Jetzt nur noch auf die Schaltfläche "Write" klicken und warten bis der Vorgang abgeschlossen ist.
SSH Zugriff einrichten
Das Betriebssystem ist ab jetzt komplett funktionsfähig. Also nehmt ihr die microSD Karte und steckt diese in den dafür vorgesehenen microSD Karten Slot im Raspi und stöpselt zusätzlich ein Netzwerkkabel und einen Bildschirm an. Jetzt könnt ihr dem Gerät mit einem handelsüblichen microUSB Kabel Saft geben und das Raspberry wird beginnen zu booten. Damit wir für jede neue Konfiguration am Betriebssystem nicht immer aufs neue zum Raspberry Pi rennen müssen wollen wir einen SSH Zugriff einrichten. Alle Schritte hierzu findet ihr hier super erklärt.Apache und PHP installieren
Um eine Website im Netzwerk zu hosten wollen wir als nächstes einen Webserver hosten. Dazu updaten wir das System zuerst und installieren anschließend Apache2 und PHP.sudo reboot
1 Minute warten bis der Raspberry wieder gebootet hat und anschließend wieder über SSH verbinden. Folgende Befehle "updaten" das System.
sudo apt-get update
sudo apt-get dist-upgrade
sudo groupadd www-data
sudo usermod -a -G www-data www-data
sudo apt-get install apache2 apache2-doc apache2-utils
sudo apt-get install libapache2-mod-php5 php5 php-pear php5-xcache
Wenn die Installation erfolgreich beendet wurde könnt ihr in das Verzeichnis /var/www/html eure Website hosten.
Diese ist dann im kompletten Netzwerk über folgenden Link erreichbar:
192.168.155.1/index.php
<ip_des_raspi>/<name_der_php_datei>.php
Website die Bash Code ausführt
Um einen der GPIO Pins ein Signal zu geben wollen wir nun im oben genannten Verzeichnis eine php Datei erstellen die Bash Code ausführen kann. Der php Befehl dafür lautet exec().
Also eine PHP Datei in /var/www/html/ anlegen. Ich habe diese einfach mal index.php genannt. Außerdem legen wir eine Shell Datei an die später die Pins steuern soll (sudo_bash.sh). In die Dateien schreibt ihr folgenden Code:
index.php:
sudo_bash.sh:
Im nächsten Schritt wollen wir WiringPi und RCSwitch installieren. Dazu führen wir folgende Befehle aus:
Um nun einen der GPIO Pins am Raspberry auf HIGH oder LOW zu stellen verwenden wir folgenden Code:
Ein Beispiel um eine Steckdose, die wie im Bild konfiguriert wurde zu schalten wäre dann also:
Also eine PHP Datei in /var/www/html/ anlegen. Ich habe diese einfach mal index.php genannt. Außerdem legen wir eine Shell Datei an die später die Pins steuern soll (sudo_bash.sh). In die Dateien schreibt ihr folgenden Code:
index.php:
<html>
<head>
</head>
<body>
<form action="index.php" method="POST">
<input name="bash" type="submit" value="Bash Befehl starten" />
</form>
<?php
if(isset($_POST['bash']))
{
exec('sudo /var/www/html/port_control/sudo_bash.sh tv_an');
}
?>
</body>
</html>
sudo_bash.sh:
#!/bin/bash
case "$1" in
tv_an)
rcswitch-pi/send 10000 1 1
;;
tv_aus)
rcswitch-pi/send 10000 1 0
;;
pc_an)
rcswitch-pi/send 01000 1 1
;;
pc_aus)
rcswitch-pi/send 01000 1 0
;;
licht_an)
rcswitch-pi/send 00100 1 1
;;
licht_aus)
rcswitch-pi/send 00100 1 0
;;
*) echo "ERROR: invalid parameter: $1 (for $0)"; exit 1 ;;
esac
exit 0
Im nächsten Schritt wollen wir WiringPi und RCSwitch installieren. Dazu führen wir folgende Befehle aus:
cd /var/www/html/
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build
cd ..
git clone https://github.com/r10r/rcswitch-pi.git
cd rcswitch-pi
make
Um nun einen der GPIO Pins am Raspberry auf HIGH oder LOW zu stellen verwenden wir folgenden Code:
sudo ./send (Systemcode)(Steckdosennummer)(Zustand 1 An, 0 Aus)
Ein Beispiel um eine Steckdose, die wie im Bild konfiguriert wurde zu schalten wäre dann also:
sudo ./send 10000 10000 1