Internet der Dinge

Intelligente Funksteckdosen mit dem Raspberry Pi

07.06.2015 von Markus Mizgalski
Jeder kennt wahrscheinlich die fernbedienbaren Funksteckdosen-Sets, die es für 15 bis 20 Euro in jedem Bau- oder Elektromarkt gibt. Die sind höchst unintelligent, aber das muss nicht so bleiben.
Der knapp 65 Euro teure IoT-Kit von Tinkerforge in Einzelteilen. Das Gehäuse ist hier noch flach zusammengefaltet

Das Internet der Dinge gilt als Zukunft des Webs. Das bedeutet nichts anderes, als dass immer mehr Geräte und irgendwie geartete elektrische Komponenten Anschluss an das globale Datennetz erhalten. Grund genug, die Hände über dem Kopf zusammen zu schlagen, denn das klingt nach wilder Verkabelung und haufenweise neuer Hardware. Doch ein paar Sachen funktionieren ganz einfach – dank Raspberry Pi und ein paar „Bauklötzen“.

Raspberry Projekt: Tuning für preiswerte Funksteckdosen

Vor dem Zusammenbau werden Brick und Bricklet erst einmal auf den neuesten Stand gebracht

Es hat sich herumgesprochen, dass so ein Raspberry als Gateway für alles Mögliche taugt. Unter anderem auch als Schnittstelle zu den so genannten Bricks und Bricklets von Tinkerforge . Dabei handelt es sich um zentrale Schaltbausteine (Bricks), die variabel mit Sensor-, Schalt-, Regel- oder Messbausteinen erweitert werden können, sodass sich der geneigte Anwender praktische beliebige Schaltungen zusammenpuzzeln kann. Ein solches Konstrukt hört tatsächlich auf den Namen „Internet der Dinge“ oder „Internet of Things (IoT)“. Dahinter verbergen sich ein Master-Brick und ein Bricklet, das in der Lage ist, mit 433 MHz-Komponenten zu kommunizieren. 433 MHz-Komponenten sind typischerweise per Funk schaltbare Steckdosen, die es als Einbauvarianten oder Zwischenstecker gibt – gerne in 2er-, 3er- oder 4er-Sets im Bau- bzw. Elektronikmarkt für 15 bis 25 Euro. Wir reden hier also nicht von teurer Spezialhardware, sondern von den Teilen, deren Fernbedienung man permanent sucht, wenn man die Stehlampe oder die indirekte Schrankbeleuchtung anschalten möchte. Mit dem entsprechenden Brick bzw. Bricklet und einem Raspberry Pi ist es nun möglich, die Fernbedienung ad acta zu legen und stattdessen ein Smartphone zu verwenden. Oder auch einen PC – wichtig ist nur, dass das Gerät einen Browser besitzt, der Javascript-fähig ist. Wer in seinem Router eine Portweiterleitung einrichtet oder auch einen VPN-Zugriff konfiguriert, kann seine Steckdosen auch über das Internet schalten. Das bietet sich zum Beispiel im Urlaub oder für die Wochenendbeleuchtung in einem Ladengeschäft an.

Übersichtliche Bastelei

Dazu dient das Tool BrickViewer, das nach Installation des jeweiligen Brick Daemons sowohl unter Linux als Windows nutzbar ist

Der IoT-Kit von Tinkerforge ist keine Bastelei für gelernte Elektroniker, man kommt auch mit weniger technischem Geschick und vor allem auch ohne Programmierkenntnisse zum Ziel. Allerdings ist es durchaus hilfreich, wenn man neben dem Raspberry auch noch einen normalen PC besitzt. Und der darf mit Linux, aber auch gerne mit Windows laufen. Ein Apple tut es übrigens auch. Viel mehr ist neben den zu schaltenden Steckdosen nicht nötig, die Stromversorgung des Bricks erfolgt mittels USB.

Bricks unter Windows aktualisieren

Läuft alles, können die Platinen montiert werden. Verschiede Schrauben im Lieferumfang lassen es theoretisch auch zu, mehrere Bricks und Bricklets zu stapeln

Das Erste, was passieren sollte, ist – nach Beschaffung und Bereitstellung der benötigten Hardware – ein Test der Brick/Bricklet-Kombination. Dazu lädt man zunächst den Brick-Daemon und den BrickViewer von der Tinkerforge-Seite herunter und installiert beides; sehr komfortabel funktioniert das unter Windows. Jetzt verbindet man Brick und Bricklet mittels des im Lieferumfang befindlichen Kabels und schließt das Ganze per USB an den Rechner an. Ein Klick auf „Connect“ im Brick Viewer sollte nun die Verbindung zwischen Rechner und Brick herstellen, sowohl der Masterbrick als auch das angeschlossene Bricklet werden im Fenster der Software angezeigt. Steht die Verbindung, empfiehlt sich zunächst ein Firmware-Update. Das lässt sich komfortabel über den Brick Viewer erledigen. Ob nun vom Raspberry aus oder vom PC, spielt dabei eigentlich keine Rolle. Wir haben zunächst einen Windows-Rechner verwendet, da Windows 7 bzw. Windows 8 in der Regel automatisch die zum Flashen nötige serielle Schnittstelle installieren, sobald sich der Brick im Bootloader-Modus befindet. Optional lässt sich dieser aber auch über den Atmel-Treiber (atm6124_c.inf im Unterverzeichnis drivers der BrickViewer-Ordners) hinzufügen. Und dann gilt es, den Brick und eventuell auch das Bricklet zu aktualisieren, sofern nötig.

Brick Daemon auf dem Raspberry installieren

Fertig zusammengebaut ist das Internet der Dinge nicht mehr als ein schwarzes Kästchen

Ist die Hardware aktualisiert, muss der Brick Daemon auch für den Raspberry installiert werden. Er dient, vereinfacht gesagt, um die Kommunikation zwischen dem USB-Port und den TCP/IP-Protokoll herzustellen, ist also so eine Art Netzwerk-zu-USB-Converter. Unter manchen Distris kann der Daemon über den Paketmanager als Debian-Package installiert werden, für den Raspberry empfiehlt sich eine Shell bzw. der Zugriff über Putty. Die Zugangsdaten sind üblicherweise pi als Benutzername und raspberry als Passwort. Zunächst wird dann mit

wget http://download.tinkerforge.com/tools/brickd/linux/brickd_linux_latest_armhf.deb

das Installationspaket heruntergeladen. Der Befehl:

sudo dpkg -i brickd_linux_latest_armhf.deb

installiert dann den Daemon. Sollte es hier Probleme geben, so findet sich auf der Tinkerforge-Seite auch noch eine Anleitung, wie eine Installation aus dem Quelltext funktioniert.

BrickViewer auf dem Raspberry installieren

Nun sollte als Nächstes der BrickViewer folgen. Je nach Distribution kommt auch hier der Paketmanager zum Einsatz, aber für den Raspberry ist wieder das Terminalfenster angesagt.

wget http://download.tinkerforge.com/tools/brickv/linux/brickv_linux_latest.deb

lädt den Viewer herunter. Anschließend wir mit

sudo apt-get install python pythonqt4 python-qt4-gl python-opengl python-serial

Python installiert, bevor

sudo dpkg -i brickv_linux_latest.deb

Das eigentliche BrickViewer-Paket installiert. Das Programm kann dann je nach Distri aus dem Anwendungsmenü unter der grafischen Oberfläche gestartet werden, bei Raspbian beispielsweise ruft man aus der Oberfläche eine Shell auf und startet den Viewer mit

Brickv

Die Funksteckdosen werden über DIP-Schalter auf Haus- und Receivercode eingestellt, was bei einigen sehr alten Exemplaren nicht funktioniert

Zuvor sollte man allerdings noch den Brick mitsamt dem Bricklet an einen USB-Port des Raspberrys hängen. Danach macht es von der Bedienung her keinen Unterschied, ob man nun die Windows- oder die Linux-Version verwendet. Oder anders ausgedrückt: Die nun folgenden Einstellungen sind bei einem Windows-PC ebenso möglich wie mit dem Raspberry. Der Unterschied ist nur, dass es keinen Windows-Rechner gibt, der mit einem so geringen Energieverbrauch aufwarten kann wie der kleine Einplatinen-Computer. Und das ist natürlich gerade beim Thema „Steckdosen“ nicht ganz unerheblich, denn das Fernschalten von Steckdosen, wie wir es nun gleich konfigurieren, hat neben Bequemlichkeit durchaus auch etwas mit Effizienz zu tun.

Websocket-Port und Passwort definieren

Prinzipiell kann nun mittels des BrickViewers und der Codes die Steckdose geschaltet werden

Bevor es jetzt an die Steckdosen geht, ist noch eine Sache zu erledigen: Mit einem Editor öffnet man die Konfigurationsdatei des Daemon unter etc/brickd.conf. Hier trägt man nun die Zeile:

listen.websocket_port = 4280

ein, die es dem Browser ermöglicht, mittels JavaScript Bindings eine Verbindung zum Daemon herzustellen. Sinnvollerweise ergänzt man noch die Zeile

authentication.secret = MeinGeheimpasswort!

Damit wird ein unkontrollierter Fremdzugriff unterbunden.

Steckdosen codieren

Will man auch via Internet schalten, muss in der Config-Datei des Daemons der Websockets-Eintrag ergänzt werden

Nun geht es endlich daran, die Steckdosen und den Brick miteinander bekannt zu machen. Wir nutzen hier Funksteckdosen von Brennstuhl, die in der Tinkerforge-Klassifizierung als Typ A laufen. Sie nutzen einen Hauscode und einen Receivercode. Die Codes werden über DIP-Schalter eingestellt, die sich hinter einem verschraubten Deckel auf der Rückseite der Dosen befinden. Der Hauscode sollte bei allen Dosen identisch sein, der Receivercode muss variieren, damit nicht alle Dosen auf einmal geschaltet werden.

Steckdosen per Brick ansprechen

Danach kann die Konfiguration über die Webseite iot-remote.com erfolgen. Wahlweise gibt es das Webinterface aber für den Offlinezugriff zum Download

Dann ruft man von einem beliebigen Rechner die Webseite http://www.iot-remote.com/ auf. Über die IP-Adresse des Raspberry oder mittels Portweiterleitung im Router (bei einem Zugriff von außerhalb) spricht man den Brick via Raspberry an. Hat man ein Passwort vergeben, ist das hier auch einzutragen. Danach können Sie auf „Find Remote Switch Bricklets“ klicken. Wird die Webseite fündig, tragen Sie nun ein, was die Steckdose schaltet. Und Sie weisen dem Eintrag den passenden Haus- sowie den vorhin eingestellten Receiver-Code zu. Jetzt ist die Steckdose bereit, um aus der Ferne geschaltet zu werden. Das machen Sie nun so weiter, bis Sie alle zu schaltenden Komponenten registriert haben.

Die Konfiguration speichern

Ist die Einrichtung der Steckdosen abgeschlossen, sollte man die Konfiguration sichern. Das geht extrem einfach über den Punkt „Settings“ oben im Menü der Seite. Klickt man anschließend auf „Save Configuration“, wird einfach eine eindeutige ID erzeugt. Mit deren Eingabe ist es jederzeit möglich, die Konfiguration wieder aufzurufen. Ganz ohne Anmeldung oder sonstige Registrierung. Optional besteht auch die Möglichkeit, die gesamte Webseite offline zu betreiben. Das Projekt kann auf Github heruntergeladen werden.

Ausbaumöglichkeiten

Der Brick kann mit weiteren Bricklets ergänzt werden, die dann komplexere Interaktionen zulassen. So können Schaltvorgänge zum Beispiel über einen Bewegungs- oder einen Helligkeitssensor ausgelöst werden. Und auch eine zeitabhängige Steuerung ist machbar, sodass sich das System beispielsweise auch ideal für eine Ladenbeleuchtung oder aber für eine Art Abwesenheitsassistenten während einer Urlaubsreise eignet. Dabei bleibt übrigens die Möglichkeit des manuellen Eingriffs jederzeit erhalten.

(PC-Welt/ad)