Mit dem Internet der Dinge (Internet of Things) können Sie von jedem Ort der Welt Geräte zu Hause steuern. So können Sie z.B. ein Heizugsthermometer mit dem Handy auf 23 Grad einstellen. Das möchte ich aber gar nicht. Ich möchte mit meinem Handy Geräte zu Hause nur über mein WLAN einstellen können. Das sind in erster Linie Geräte bei mir im Garten, wie Teichpumpen, Gartenbeleuchtung und Gartenbewässerung. Diese Geräte sollen sich nach bestimmten Regeln oder manuell ein- und ausschalten lassen und ich möchte die Möglichkeit haben den Status bestimmter Geräte auszulesen.

Dafür eigenet sich hervoragend ein Miniboard wie der Raspberry Zero W in Verbindung mit einem Apache Webserver und PHP.

Achten Sie beim Kauf eines Raspberry Zero W darauf, dass Sie möglichst einen Raspberry Zero WH kaufen. Es sei denn, sie wollen selbst löten. Das H steht für eine Raspberry mit bestückten Header. Das bedeutet, dass die PIN-Leiste bereits aufgelötet ist.

Und machen Sie es nicht so wie ich, der sich den Raspberry beim ersten mal ohne Zubehör bestellt. Angekommen musste ich feststellen, dass ich gar keine Kabel hatte, um den Raspberry in Betrieb zu nehmen, da er nur microUSB und miniHDMI Anschlüsse hat. Also bestellen Sie sich die Anschlußkabel lieber gleich dazu.

Raspberry Pi Zero WH

Raspberry Pi Zero WH

Die Installation funktioniert problemlos. Raspberrian herunterladen, Etcher herunterladen und mit Etcher das Betriebssystem auf eine Mico SD-Card spielen. DIese dann in den Raspberry stecken und strom draufgeben. Eine Anleitung hierzu finden Sie in dem Artikel Raspberry Pi Zero: Raspbian installieren

Für den Raspberry Pi Zero ist es am einfachsten, wenn Sie eine Funktastatur/Maus verwenden, Er hat nur einen MicoUSB Anschluß. An den Stecken Sie den Empfänger und können damit Maus und Tastatur nutzen. Ansonsten müssen Sie mit einem USB-Hub arbeiten.

Nach dem Starten wird die Tastatur eingerichtet, die WLAN-Verbindung eingerichet und nach Updates gesucht. Nun ist der Raspberry bertriebsbereit.

Als erstes Projekt möchte ich nun eine Springbrunnenpumpe und Lampen an meinem Teich schalten können. DIe einfachste Möglichkeit hierfür sind Funksteckdosen. Ich hatte noch einen Satz Funksteckdosen von Brennstuhl. Dabei ist eine funktionierende Fernbedienung für die Steckdosen notwendig. Diese wird benötigt um die Codes für das Ein- und Ausschalten der einzelnen Steckdosen auszulesen.

Also habe ich mir für den Raspberry folgende Komponenten besorgt:

1. 433 MHz Empfänger
2. 433 MHz Sender
3. Mini Breadboard (auf Löten habe ich keinen Bock)
4. Kabel
5. Kabelbrücken

Für die Kommunikation mit dem Raspberry mittels meinem Handy habe ich mich für den Webbrowser enschieden, so dass auf dem Raspberry noch der Apache Webserver und PHP installiert werden muss. Die Geschwindigkeit, mit der der Apache Webserver auf dem Raspberry PI Zero läuft ist akzeptabel. Da PHP-Frameworks wie Symphony oder Nette den Raspberry Pi Zero in die Knie zwingen, habe ich mich für Bootstrap und jQuery entschieden.

Die 433 MHz Empfänger und Sender werden nach folgendem Schema auf dem Breadboard aufgesteckt. Für das spätere Schalten der Steckdosen ist der Empfänger nicht notwendig. Aber für das Auslesen der Codes wird er hier zuerst mit benötigt.

Software

Für die Software benötigt man ein Paket von GitHub. Dafür wechselt man am besten mit cd /opt in das /opt Verzeichnis.

Nun müssen als erstes die Codes für die Steckdosen ausgelesen werden. Dafür nutzt man den 433 MHz Empfänger und die Fernbedienung der Funksteckdosen.

Starten sie folgenden Befehl

und drücken Sie die einzelnen Knöpfe der Fernbedienung. Der jeweilige Code sollte nun angezeigt werden. Gehen Sie dabei gegenbenenfalls mit der Fernbedienung ganz nah an den 433 MHz Empfänger. Ich dachte bei meinerm ersten Versuch, dass der Empfäger kaputt wäre, da die Steckdose geschaltet hat, aber mir kein Code angezeigt wurde. Die Entfernung über die der Empfänger noch die Signale empfangen kann, hängt stark von der Qualität des Empfänger ab, Bei den Billigteilen, die man im Internet für 50 Cent erhält, muss man ganz nah an den Empfäger herangehen.

Bei mir ist z.B. der Code für das Einschalten der Dose A 1361 und der Code zum ausschalten 1364

Mit diesen Codes können Sie nun die Steckdosen über den 433 MHz Sender schalten. Hierfür ist im Ornder RPi_utils die Datei codesend vorhanden. Durch en Aufrunf von sudo ./codesend 1361 sollte nun die Dose eingeschaltet werden und durch sudo ./codesend 1364 wieder ausgeschaltet.

Der Sender muss dabei zwingend am PIN xxx des Raspberry angeschlossen sein, da dieser PIN in dem Programm codesend fest vorgegeben ist.

Remote schalten

Nun geht es darum, wie man die Dosen von einem Handy aus schalten kann. Die installation von einem Apache Webserver und PHP habe ich oben ja schon erläutert. Ein zusätzliches Problem ist, dass nur bestimmte Benutzer die Erlaubnis haben auf die GPIOs zuzugreifen. Das ist bei Raspbian mittels der Benutzergruppe gpio definiert. Daher muss man den Benutzer www-data, unter den der Apache Webserver läuft und mit dessen Rechten die PHP-Scripte ausgeführt werden noch zu dieser Gruppe hinzufügen. Das geschieht mit dem Befehl

Starten Sie nun sicherheitshalber den Raspberry Pi neu.

Legen Sie nun folgende PHP-Datei mit dem Namen steckdose.php in /var/www/html ab.

Wenn Sie die Seite mittels http://ip_des_raseberry/steckdose.php aufrufen, sollten Sie 2 Buttons mit der Beschriftung on und off sehen. Wenn Sie nun auf on klicken, sollte sie Steckdose angeschaltet werden. Bei off entsprechend ausgeschaltet. Das blöde ist nur, dass wenn man die Seite auf dem Handy aufruft, die beiden Buttons kaum erkennen kann, da die Seite nicht für Mobile Geräte optimiert ist.

Bootstrap

Um das zu ändern, fügen wir nun noch den Bootstrap CSS-Framework hinzu. Hierfür müssen Sei sich die Bootstap Dateien von http://getbootstrap.com herunterladen und diese in dem Verzeichnis /var/www/html/assets entpacken. Aktuell gibt es den Framework in der Version 4. Ich bevorzuge aber noch die ältere Version 3.7. Aber das ist Geschmackssache. Ich lege für CSS und JS Dateinen immer ein assets Verzeichnis an, in dem ich die Dateien ablege.

Nun müssen Sie noch in der Datei steckdose.php folgende Zeile zwischen <head> und </head> einfügen

Wenn Sie die Seite nun in einem moblien Gerät wie Handy oder Tablet aufrufen, sollten die Buttons in einer akzeptablen Größe erscheinen. Das Ganze kann man natürlich noch wesentlich besser gestalten, aber hier geht es in erster Linie um die Funktionalität.