1929414

Funksteckdosen mit dem Raspberry Pi einrichten

23.07.2014 | 14:09 Uhr |

Ein Funkmodul für wenige Euro macht den Raspberry Pi zur heimischen Steuerzentrale, die über das Haus verteilte Funksteckdosen schaltet – bei Bedarf auch über das Netzwerk und mit dem Smartphone.

Funksteckdosen sind im Dreier- oder Sechserpack samt Fernbedienung in fast jedem Baumarkt erhältlich, oft schon für wenige Euro. Für sich alleine sind die Steckdosen begrenzt interessant: Die mitgelieferte Fernbedienung ist nie zur Hand, wenn man Sie braucht, und ist so klein, dass sie gerne zwischen den Sofaritzen verschwindet. Mit einem günstigen Sender und ein wenig Software machen Sie den Raspberry zur Schaltzentrale, die Steckdosen per Browser, Makro oder Handy von überall her steuert. Was Sie dafür benötigen, ist ein Funkmodul mit 433 MHz. Ein Set mit Sender und Empfänger kostet bei Ebay oder Amazon zwischen 1 Euro (aus China) und rund 4 Euro (aus Deutschland) und ist über eine Suche nach „RF Link Arduino“ schnell zu finden. Die Sets werden in erster Linie für den Arduino-Mikro- Controller verkauft, funktionieren aber mit einer entsprechenden Software-Bibliothek auch am Raspberry Pi.

Auswahl: Nicht jede Funksteckdose ist geeignet

Funksteckdosen gibt es inzwischen nicht nur optisch, sondern auch technisch in großer Vielfalt. Fast alle Arten lassen sich auch mit dem Raspberry steuern. Am einfachsten und zuverlässigsten funktionieren Steckdosen, die sich über zehn Dipschalter einstellen lassen, die hinter einer kleinen Klappe mit kleiner Kreuzschlitzschraube verborgen sind. Steckdosen ohne Dipschalter, insbesondere die aktuell oft als Billigware verkauften selbstlernenden Dosen, lassen sich über den Raspberry oft nur nach längeren Versuchen ansteuern und erfordern je nach Hersteller Software-Anpassungen auf dem Raspberry Pi.

Ein weiterer Nachteil der Billigware ist, dass viele Modelle nach einem Stromausfall oder auch nur einem Wechsel der Steckdose ihre Codierung vergessen und dann neu eingelernt werden müssen. Wir raten deshalb deshalb zu Steckdosenmodellen, das sich mit zehn Dipschaltern programmieren lassen. Je nach Hersteller sind die Dipschalter mit 1 bis 10 oder mit 1 bis 5 und A bis D beschriftet – beide Versionen sind gleichermaßen nutzbar. Aktuell kostet ein Dreierset etwa bei Online-Versandhäusern rund 10 Euro .

Zunächst sollten Sie Fernbedienung und Steckdosen aufeinander abstimmen. Dazu wird an den fünf Dipschaltern der Fernbedienung und den linken fünf Dipschaltern der Steckdosen der Systemcode eingestellt, über den die Dosen erreichbar sind. Vorsicht: Die Verwendung von 00000 oder 11111 als Systemcode bietet gute Chancen, dass einer Ihrer Nachbarn denselben Code verwendet und damit unter Umständen Ihre Steckdosen schaltet. Funktioniert die Steckdose mit der Fernbedienung, kann die Einrichtung des Raspberry Pi als Schaltzentrale beginnen.

Raspberry Pi als Wetterstation nutzen

Dankbares Einstiegsmodell: Die verbreitete Funksteckdosen-Variante mit zehn Dipschaltern ist das am einfachsten anzusteuernde und empfehlenswerte Modell zur Hausautomatisierung.
Vergrößern Dankbares Einstiegsmodell: Die verbreitete Funksteckdosen-Variante mit zehn Dipschaltern ist das am einfachsten anzusteuernde und empfehlenswerte Modell zur Hausautomatisierung.
© Quelle: Thomas Springer

Prototyp: Schaltung am Breadboard entwerfen

Zunächst muss der Sender mit dem Raspberry verbunden werden. Am einfachsten geht das über ein kleines Breadboard (Steckbrett) und einige Steckkabel. In den meisten Elektronik-Bastelsets sind nur beidseitig männliche Steckkabel dabei. Je nachdem, ob Sie ein Steckbrett verwenden oder den Empfänger direkt anschließen, brauchen Sie aber weiblich/männlich oder weiblich/weiblich. Tipp: Die meisten Steckkabel lassen sich durch Abknipsen des metallenen Aderendes in ein weibliches Ende improvisieren, das sich vorsichtig auf einen PIN-Anschluss aufstecken lässt.

Den Sender stecken Sie mit seinen drei oder vier Pins am besten direkt quer auf das Steckbrett. Verbinden Sie die dann VCC (rot) mit Pin 2 (5 Volt) und Pin 6 (Erdung) des Raspberry Pis. Die Datenleitung zum RF-Sender erwarten fast alle Programme zur Steckdosensteuerung an Pin 11 (GPIO 17) des Raspberry.

Die Antenne wird bei einigen Sendern über einen Pin geführt, bei anderen ist ein Anschluss auf dem Board. Die passende Länge errechnet sich über die Faustformel (Lichtgeschwindigkeit/ Frequenz)/4. Eine optimale Länge für 433,92 MHz wäre 17,2 cm – in der Praxis tut es aber ein beliebiges Drahtstück mit einer Länge um die 17 cm, das mit dem Antennen-Pin verbunden oder mit auf der Platine eingehakt oder verlötet wird.

Drei Kabel sollt ihr sein: Für die Ansteuerung des Senders zur Übertragung der Befehle an die Funksteckdosen genügt eine einzige Datenleitung des Raspberry Pi plus Spannungsversorgung..
Vergrößern Drei Kabel sollt ihr sein: Für die Ansteuerung des Senders zur Übertragung der Befehle an die Funksteckdosen genügt eine einzige Datenleitung des Raspberry Pi plus Spannungsversorgung..
© Quelle: Thomas Springer

Wiring Pi: Vom Mikro-Controller Arduino inspiriert

Um den Raspberry Pi mit einem RF-Sender zu verbinden, gibt es inzwischen eine Vielzahl von Programmen. So gut wie alle bauen auf der GPIO-Bibliothek von Gordon Henderson auf, der die Funktionalität der Arduino-Bibliothek „Wiring“ auf den Raspberry portiert hat. Die Bibliothek wird am einfachsten direkt über Git installiert (drei Zeilen):

sudo apt-get install build-essential git-core   cd ~ && git clone git://git.drogon.net/wiringPi   cd wiringPi && ./build  

Damit ist die Grundlage zur Nutzung der GPIOPorts geschaffen. Ein einfaches, aber leistungsfähiges Projekt zur Ansteuerung von Funksteckdosen ist unter dem Namen „Raspberry Remote“ veröffentlicht. Auch hier können wir die Quelltextverwaltung Git zum Herunterladen des Programms verwenden (zwei Zeilen):

cd ~ && git clone git://github.com/xkonni/raspberry-remote.git   cd raspberry-remote  

Raspberry Remote besteht aus einem Kommandozeilenprogramm zum Schalten der Steckdosen sowie einem Serverteil, der auf einem frei wählbaren Port im Netz zuhört und Steckdosen auf Zuruf schaltet. Das Kommandozeilenprogramm wird mit

sudo make send  

kompiliert. Mit „send“ lassen sich beliebige Steckdosen aus- und anschalten. Um eine Steckdose zu schalten, rufen Sie das Programm mit folgenden Parametern auf:

sudo ./send <Systemcode> <Steckdosennummer> <Zustand>  

Die Codes ergeben sich aus der Stellung der Dipschalter. Der fünfstellige Systemcode entspricht der Stellung der ersten Dipschalter an der Steckdose: 0 für aus, 1 für an. Stehen diese Schalter alle auf ein, wäre der Systemcode die 11111. Stehen nur der erste und der letzte Schalter auf 1, wäre der Systemcode 10001.

Die Steckdosennummer ergibt sich aus den rechten fünf Dipschaltern, von denen nur einer auf 1 stehen darf. Die möglichen Gerätecodes sind 1,2,3,4 und 5, je nachdem, welcher der fünf rechten Dipschalter auf „on“ steht. Es darf nur einer der Schalter auf „on“ stehen. Der dritte Parameter gibt an, ob die Funksteckdose an („1“) oder ausgeschaltet werden soll („0“). Ein Beispielaufruf zum Einschalten der Dose sieht dann so aus:

sudo ./send 10001 1 1  

Damit sollte, sofern die Dipschalter entsprechend gesetzt sind, die Steckdose angehen. Der sendende Raspberry hat übrigens keine Möglichkeit zu erkennen, ob und wenn ja was wirklich passiert ist: Es gibt keinen Rückkanal, über den die Funksteckdose Vollzug oder eventuelle Fehler melden könnte.

Die maximale Zahl schaltbarer Steckdosen ist 160. Sie ergibt sich aus den möglichen Dipschalterstellungen nach der simplen Formel: (2*2*2*2*2)*5 oder einfacher 2 hoch 5*5.

Raspberry 2 Go - Die Platine mobil nutzen

Belegung der GPIO-Pins: Diese hat sich zwischen den Raspberry-Pi-Revisionen und Versionen geringfügig geändert. Der hier vorgestellte Aufbau funktioniert aber mit allen Versionen des Raspberry Pi.
Vergrößern Belegung der GPIO-Pins: Diese hat sich zwischen den Raspberry-Pi-Revisionen und Versionen geringfügig geändert. Der hier vorgestellte Aufbau funktioniert aber mit allen Versionen des Raspberry Pi.

Schalten übers Netz: Automatisch per Script

Die Steckdosen über eine SSH-Konsole schalten zu können ist ein nettes Spielzeug, für eine echte Anwendung aber etwas unpraktisch – weder kann man übers Netz schalten noch kann man externe Geräte einbinden. Interessanter wird es, wenn man den in Rasberry Remote enthaltenen Server startet. Dazu müssen Sie den Quellcode etwas anpassen. Verwenden Sie den Befehl nano ~/raspberry-re mote/daemon.cpp und ändern Sie die Zeile „nPlugs=10“ zu „nPlugs=1110“

Standardmäßig ist der Server im Netzwerk über den Port 11337 erreichbar. Wem Sie dies ändern wollen, tragen Sie eine andere Nummer hinter „Port“ im übersichtlichen Quellcode von daemon.h ein. Mit sudo make daemon wird der Hintergrundprozess (Daemon) dann kompiliert. Mit

sudo ./daemon >/dev/null &  

starten Sie den Server als Hintergrundprozess. Bedient wird der Dämon über eine simple TCP-Netzwerkverbindung, zum Beispiel über Netcat oder ähnliche Programme. Um beispielsweise eine Steckdose anzuschalten, geben Sie auf der Kommandozeile an:

echo -en "Codierung"|nc -w 1 <ip> <port>  

Als IP geben Sie die IP-Nummer ihres Raspberry Pi an und als Port den TCP-Port, auf den der Server lauscht. „Codierung“ besteht aus dem Systemcode wie bei send, gefolgt von „0“ und der Dosennummer. In unserem Fall wäre das etwa

echo -en "1000101"|nc -w 1 192.168.178.25 11337  

wobei der Parameter „-w“ dafür sorgt, dass Netcat die Verbindung zum Dämon nach einer Sekunde selbsttätig wieder trennt. Damit ist die Funksteckdose also schon mal am Netz und kann von beliebigen Applikationen ein- und ausgeschaltet werden, sofern diese TCP-Socket- Verbindungen aufbauen können. Sinnvoll ist diese Art der Ansteuerung in erster Linie für Script-Sprachen wie Python oder Perl, die man auf diese Weise zum Steuern von Funksteckdosen über das lokale Netzwerk oder das Internet verwendet. Es besteht jedoch ein gewisses Risiko, wenn man den Port des Dämons für das gesamte Internet freigibt. Ein Missbrauch könnte unter Umständen das Raspberry-Pi- System samt dem dahinterliegenden Netzwerk für einen Angreifer offenlegen. Wenn Sie das System also in einem fremden Netz oder dem Internet über TCP-Sockets erreichbar machen, sollten Sie unbedingt den Zugriff über IP-Tables oder ein VPN auf autorisierte Kommunikationspartner beschränken.

Schalten der Funksteckdosen über den Browser: Eine simple Weboberfläche zum Ein- und Ausschalten von Funksteckdosen ist auf dem Raspberry Pi in wenigen Minuten installiert.
Vergrößern Schalten der Funksteckdosen über den Browser: Eine simple Weboberfläche zum Ein- und Ausschalten von Funksteckdosen ist auf dem Raspberry Pi in wenigen Minuten installiert.

Universelles Schalten: Ein und Aus per Browser

Die Socket-Verbindung des Dämons bringt die Funksteckdosen ans Netz, die Bedienung erfordert aber immer noch ein wenig Programmierung oder den Aufruf hässlicher Befehlszeilen auf der Konsole. Raspberry Remote hat auch hier Abhilfe: Im Verzeichnis „./webinterface“ finden Sie eine Weboberfläche, mit der man die Funksteckdosen in den Browser bringt. Die Weboberfläche benötigt einen Webserver wie Apache und PHP. Dies lässt sich mit dem Kommando

sudo apt-get install apache2 php5  

installieren, falls noch nicht vorhanden. Bringen Sie dann das Script-Verzeichnis in das Wurzelverzeichnis des Webservers:

mv ~/raspberry-remote/ webinterface/*/var/www/funk  

und passen Sie dort die Konfigurationsdatei an:

nano /var/www/funk/config.php  

Wenn der Dämon auf dem selben Raspberry Pi läuft wie der Webserver, setzen Sie

$target=$_SERVER['SERVER_ADDR']  

Laufen Webserver und Dämon auf verschiedenen Rechnern, geben Sie hier die IP-Nummer des Dämons an, den der Webserver ansprechen soll. Die Variable „$port“ setzen Sie auf die Portnummer, unter welcher der Dämon erreichbar ist. Unter „$config“ können Sie in einem Array beliebig viele Schaltaktoren definieren. Sie geben wie gehabt als Parameter den Systemcode, die Dosennummer und eine frei wählbare Textbeschreibung für diese Dose an. Nun können Sie über den Browser unter http://<ip>/funk das Kommando-Interface zum Schalten aufrufen.

Mit der Weboberfläche ergibt sich die Möglichkeit, das Schalten auf anderen, tastaturlosen Geräten wie etwa einem Smartphone oder einem Tablet zu erledigen. Sie können dafür einfach ein Lesezeichen auf dem Desktop des Gerätes hinterlegen. Für kleinere Displays können Größe und Layout der Schalterquadrate im Quellcode leicht verändert werden, so dass bei Bedarf auch mehr Geräte auf das Handydisplay passen.

Auch über das Webinterface kann nicht nur per Fingerzeig oder Mausklick, sondern auch ganz direkt geschaltet werden. Geben Sie dafür einfach gleich beim Aufruf die Parameter in der URL an. Ein Beispiel:

http://<ip>/funk/index.php?group= 10001&switch=01&action=1  

Die Parameter sind dieselben wie oben, „action= 1“ heißt, dass die Steckdose eingeschaltet wird. Dafür gibt es dafür viele nützliche Anwendungen: So können Sie etwa den Strom an Peripheriegeräten wie Scanner, Drucker oder externer Festplatte einschalten, indem Sie die URL in einer Verknüpfung ablegen Tipp: Eine alternative Methode mit Android- App und Sprachsteuerung ist in diesem Blog beschrieben.

0 Kommentare zu diesem Artikel
1929414