Aus Raspberry Pi Geek 05/2014

Heimautomation mit dem Raspberry Pi (Seite 2)

Um mit dem 433-MHz-Sendemodul die Funksteckdosen anzusprechen, müssen Sie deren voreingestellten Hauscode ermitteln und eventuell auch ändern. Öffnen Sie dazu die Abdeckung hinten an den Steckdosen mit einem kleinen Schraubendreher und stellen Sie dann den jeweiligen Code ein (Abbildung 2). Dabei steht eine (binäre) Ziffernreihe für den eigentlichen Code, Buchstaben identifizieren die einzelnen Steckdosen. Es empfiehlt sich, diesen Code in jedem Fall zu ändern, damit nicht der Nachbar versehentlich Ihre Steckdosen schaltet.

Abbildung 2: Über das "Mäuseklavier" an der Rückseite der Funksteckdose legen Sie deren Kodierung fest und verhindern damit versehentlichen Fremdzugriff.

Abbildung 2: Über das “Mäuseklavier” an der Rückseite der Funksteckdose legen Sie deren Kodierung fest und verhindern damit versehentlichen Fremdzugriff.

Für diesen Artikel verwendete der Autor den Hauscode 11010. Dafür kippen Sie auf dem “Mäuseklavier” die Schalter 1, 2 und 4 nach oben, die anderen nach unten. Danach konfigurieren Sie den Identifikator der Steckdose. Bei der ersten setzen Sie zum Beispiel den Schalter A nach oben, bei der nächsten dann B und so weiter. So vergeben Sie für jede Steckdose eine ID, über die das Sendemodul sie später anspricht. Möchten Sie mit einem Befehl mehrere Geräte auf einmal steuern, weisen Sie diesen den gleichen Buchstaben zu.

Kontakt

Für einen ersten Funktionstest der Dosen stellen Sie bei der mitgelieferten Funkfernbedienung denselben Code ein wie bei der Steckdose und schalten diese so. Klappt das, gilt es nun, die Funksteckdosen über den Raspberry Pi zu schalten. Dazu nutzen Sie das vorab übersetzte send aus der Raspberry-Remote-Bibliothek mit folgender Befehlsstruktur:

$ sudo ~/raspberry-remote/send Hauscode Dosen-ID Zustand

Um etwa in unserem Beispiel die Steckdose A anzuschalten, lautet das Kommando sudo ./send 11010 1 1. Um sie wieder zu deaktivieren, ersetzen Sie die letzte Ziffer durch eine 0. Nach diesem Schema lassen sich mit den installierten Funksteckdosen schon die Lampe und die Kaffeemaschine ansteuern. Dazu muss freilich die Lampe angeschaltet und an der Funksteckdose eingesteckt sein. Gleiches gilt für die Kaffeemaschine: Sie sollte mit dem Brühen beginnen, sobald Strom fließt.

Um über den Raspberry Pi Videos abzuspielen, stellt Raspbian von Hause aus den Omxplayer bereit. Grundsätzlich genügt eine Befehlszeile, um eine Datei via HDMI auf den TV zu übertragen:

$ sudo omxplayer -o hdmi /home/pi/video.mp4

Dazu muss das TV-Gerät über das HDMI-Kabel mit dem Raspberry Pi verbunden sein. Um den Fernseher nicht die ganze Nacht anlassen zu müssen, verbinden Sie ihn ebenfalls über eine Funksteckdose mit dem Stromnetz. So schaltet ihn der RasPi zuerst ein, spielt dann das gewünschte Video ab und trennt ihn danach wieder vom Netz.

Ferngesteuert

Der Vorteil einer Web-Applikation (Abbildung 3) besteht nicht zuletzt in deren Plattformunabhängigkeit: Sie lässt sich problemlos sowohl vom Desktop aus als auch via Smartphone bedienen.

Abbildung 3: Die Weck- beziehungsweise Schaltzeit stellen Sie bequem über die Web-GUI im Browser ein.

Abbildung 3: Die Weck- beziehungsweise Schaltzeit stellen Sie bequem über die Web-GUI im Browser ein.

Unsere Anwendung besteht aus drei Hauptdateien. Die index.php enthält die auf HTML, Javascript und PHP basierende Benutzerschnittstelle. Darin stellen Sie später die Uhrzeit ein, zu der der Motivationshelfer starten soll. Des Weiteren gibt es noch die Dateien wecker.php und Ausschalten.php. In diesen befindet sich der Javascript- und PHP-Code, der die gewünschten Befehle an den Raspberry Pi übermittelt.

Grundsätzlich funktioniert der Motivationshelfer in dieser Konstellation schon. Sie müssen ihm nur noch sagen, was er tun soll. Wurden die gleichen Werte wie in diesem Artikel verwendet, sollte alles auch klappen. Andernfalls ändern Sie die Datei wecker.php (Listing 2).

Listing 2

 

<?php
$hour = $_GET["hour"];
$mins = $_GET["mins"];
//Befehle für den Raspberry Pi Cronjob
exec('echo "'.$mins.' '.$hour.' * * * sudo /home/pi/raspberry-remote/./send 11010 1 1; sudo /home/pi/raspberry-remote/./send 11010 2 1; sudo /home/pi/raspberry-remote/./send 11010 3 1; sudo omxplayer -o hdmi /home/pi/Motivation/video.mp4" | crontab -');
?>

Das Skript liest zunächst Variablen für die Uhrzeit aus, zu der der Motivationshelfer loslegen soll. Anschließend legt es einen Cronjob an, der zur gewünschten Zeit die Befehle zum Schalten der Funksteckdosen ausführt. Wie Sie sehen, enthält die Datei bereits die Befehle sowohl für die drei Funksteckdosen als auch für das Video, das am TV startet. Generell muss das Exec-Kommando die jeweils durch ein Semikolon getrennten Befehle so enthalten, wie in Listing 3 gezeigt.

Listing 3

 

exec('echo "'.$mins.' '.$hour.' * * * Befehl1; Befehl2; Befehl3; Befehl4" | crontab -');

Die Datei Ausschalten.php (Listing 4) müssen Sie beim Verwenden anderer Daten ebenfalls anpassen. Sie schaltet beim Betätigen des Buttons Alles ausschalten in der Web-GUI alle Funksteckdosen wieder aus.

Listing 4

 

<?php
exec("sudo /home/pi/raspberry-remote/./send 11010 1 0");
exec("sudo /home/pi/raspberry-remote/./send 11010 2 0");
exec("sudo /home/pi/raspberry-remote/./send 11010 3 0");
?>

Applikation einrichten

Um die Applikation erreichbar zu machen, kopieren Sie den Inhalt des gesamten Ordners heimautomation von der Heft-DVD auf den Webserver in das Verzeichnis var/www/. Achten Sie darauf, dass der User www-data die nötigen Rechte besitzt, um die Befehle über PHP auszuführen. Sofern der Raspberry Pi nur im Heimnetz erreichbar ist und keine großen Sicherheitsbedenken bestehen, legen Sie die Rechte dafür so fest, wie in Listing 5 gezeigt. Danach starten Sie die Web-Applikation auf einem Client im Browser unter RasPi-IP/heimautomation/index.php.

Listing 5

 

$ sudo chmod g+s /var/www
$ sudo chmod 775 /var/www
$ sudo chown -R www-data:www-data /var/www
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben