Terrarien- und Aquariensteuerung mit dem Raspberry Pi
Als Terrarianer bzw. Aquarianer steht man immer vor der Aufgabe, irgendwelche Steuerungen und Regelungen durchführen zu müssen. Das fängt schon mit der einfachen Aufgabe an, das Licht an- und abzuschalten. OK, dieses ist mit einer billigen Schaltuhr locker zu machen. Hat man dann aber auch noch eine Sprühanlage, eine Nebelanlage und eine Heizung, die alle gesteuert oder sogar geregelt werden sollen, wird das Ganze schon komplizierter. Noch schlimmer wird es, wenn man mehrere Becken hat, die auch noch unterschiedlich beheizt werden sollen. Dann braucht man für jedes einzelne Becken einen Temperaturregler, der jeweils ganz schön ins Geld geht.
Vor ca. 20 Jahren hatte ich dieses Problem mit einem alten 386er PC gelöst, der mittels einer Analog-Digital-Wandlerkarte und einem selbstgeschriebenen Programm den Froschkeller automatisierte. Hilfe, war das ein Aufwand, bis endlich dieses C++-Programm lief, man hat sich Tage und Nächte um die Ohren geschlagen. Irgendwann ärgerte es mich aber, dass der PC, der eigentlich nur die Regelungen und Schaltungen für den Froschkeller machen sollte, selber schon ca. 50 Watt zog! Und das, obwohl ich bereits sämtlichen unnötzen Ballast ausgebaut hatte, der Monitor immer aus war und ich sogar nur von Diskette gebootet habe, um auch noch die Energie für die Festplatte zu sparen. 50 Watt, davon kann man mindestens ein Froschbecken beleuchten und heizen! Daher wurde der PC nach ein paar Jahren ausrangiert und gegen eine C-Control Station ersetzt. Das Ganze läuft auch nun schon seit einigen Jahren zuverlässig und hat sich gut bewährt, schaltet Licht, Sprühanlage und regelt die Temperatur.
Der Zustand wenn alles läuft ist zwar gut, allerdings für einen Tüftler kaum auszuhalten! Man ist fertig und hat nichts mehr zu frickeln! Zum Glück kam dann die Rettung: der Raspberry Pi tauchte auf dem Markt auf! Dabei handelt es sich um einen scheckkartengroßen Minicomputer, der für ca. 30 EUR zu haben und daher für Tüftelzwecke geradezu ideal ist! Auf dem Raspberry Pi läuft ein Linux- Betriebssystem (Raspbian) und man kann ihn für alle möglichen Zwecke einrichten, beispielsweise als Medienserver, NAS-Server, Webserver, Webcam usw. Und auch zur Automatisierung von Terrarienanlagen! Und darum soll es im Folgenden gehen.
Als Vorbereitung wurde das komplette Internet tagelang (eher wochenlang) nach Infos über den RasPi durchsucht. Und davon gibt es reichlich! Anleitungen, Foren, Videos, Hobbyseiten….
Nach einiger Zeit stand für mich fest: so ein Raspberry Pi muss her! Weiterhin besorgte ich mir noch eine SD-Karte (mindestens 8 GB), ein paar 1-Wire Temperatursensoren, ein 433 MHz Sendemodul und einen 3er Satz Funksteckdosen. Ein altes Handyladegerät braucht man noch als Netzteil. Das hat man meistens noch irgendwo rumliegen. Damit konnte es schon losgehen. Die genaue Einkaufsliste seht ihr weiter unten. Für ca. 50 ?EUR hat man alles was man für unsere Zwecke braucht. Wenn ihr das mit dem Preis von einer programmierbaren Steckerleiste vergleicht, kommt ihr in etwa auf denselben Betrag. Nur, dass man mit dem RasPi viel mehr möglich ist.
Die ganzen Temperatursensoren könnte man durch diverse Programme, die alle frei zu haben sind, auslesen und die Funksteckdosen durch einfache Shell-Befehle schalten, also auch rein zeitabängige Schaltungen mit der Crontab beispielsweise. Viel bequemer und leichter geht das Ganze aber mit der Software FHEM („Freundliche Hausautomatisierung und Energie-Messung“) ein Open Source Projekt von Rudolf Koenig u.a. gestartet. Diese Software ist, wie der Name schon sagt, eigentlich zur Hausautomatisierung gedacht, lässt sich aber auch als Terrarien- und Aquarienautomatisierung hervorragend verwenden!
Damit ihr nicht auch so lange suchen und rumprobieren müsst wie ich, habe ich hier im Anschluss eine Anleitung zusammengefasst, die eigentlich für mich den Zweck hatte, einen RasPi mal schnell neu aufsetzen zu können, wenn er sich mal bei mir verabschiedet haben sollte, was aber unwahrscheinlich ist, da er ja mit Linux läuft. Der Text auch recht kurz und ohne viel Prosa. Falls ihr, genau wie ich, keine Linux-Spezialisten seid, keine Panik! Ihr müsst einfach nur die folgenden Codes kopieren, euch mit Putty auf dem RasPi einloggen und per rechter Maustaste dort auf der Konsole einfügen.
Zunächst Schritt muss man sich jedoch folgende Bauteile besorgen:
Einkaufsliste:
– RaspberryPi je nach Typ: 28 – 38 EUR
– Netzteil mit Mikro-USB-Anschluss (oder altes Handyladegerät mind. 1 A) 5 EUR
– SD-Karte mit 4 oder besser 8 GB: 5 EUR
– Eventuell ein Gehäuse für Raspberry Pi: 3 EUR?
– Temperatursensor 1-Wire DS1820: 1,90 EUR oder gleich mit wasserdichtem Kabel: 3,60 EUR
– 433 MHz Sendemodul: 6,20 EUR
– Funk-Steckdosen-Set 433 MHz: z.B. Brennenstuhl Comfort RCS 1000N 3 Stück im Set: 17 EUR
– einen 4,7 K-Ohm Widerstand: 0,1 EUR
Sämtliche Sachen gibt es z.B. bei www.reichelt.de
Raspberry Pi einrichten
Eigentlich dürfte es klar sein, aber damit ich es mal erwähnt habe, noch der Hinweis:
Für Schäden und Unfälle, die durch das Basteln nach dieser Anleitung entstehen, übernehme ich keinerlei Haftung. Alles geschieht auf eigene Gefahr. Elektroarbeiten dürfen nur duch einen geschulten Fachmann ausgeführt werden!
Als erstes müsst ihr euch folgende Software aus dem Internet runterladen:
– das Bertiebssystem für den Raspberry Pi von http://downloads.raspberrypi.org/raspbian_latest herunterladen und entpacken.
– den Win32 Disk Imager suchen, herunterladen und installieren. Dieses Programm wird braucht man, um mit Windows das o.g. Betriebssystem ?Raspbian? auf die SD-Karte zu bekommen. Den Win32 Disk Imager installieren, im entsprechenden Feld das o.g. Image von Raspbian anklicken , SD-Karte in den Kartenleser und dann auf „Write“ drücken.
Wenn das Programm Erfolg meldet, die SD-Karte in den RasPi stecken. Der RasPi muss über ein Netzwerkkabel mit dem Router verbunden sein. Dann kann man ihn das erste Mal booten.
Jetzt braucht man Zugriff auf den RasPi. Dazu benutze ich das Programm Putty, darum taucht es auch in dieser Beschreibung immer wieder auf. Putty kann hier heruntergeladen werden: http://www.putty.org/.
Bevor man sich verbinden kann, muss man auf seienem Router nachsehen, welche IP-Adresse der PasPi von ihm bekommen hat. Dieser ist nämlich standardmäßig auf DHCP eingestellt, bekommt also seine IP vom Router zugeteilt. Wenn man die rausbekommen hat, startet man Putty und verbindet sich über diese IP mit dem Raspberry Pi. Der Benutzername zum Einloggen ist pi und das Passwort rasbperry, alles klein geschrieben.
Dann das Kommando
sudo raspi-config
auf der PasPi-Konsole, d.h. in Putty eingeben. In dem nun angezeigtem blauen Screen dann unter
Punkt 4: Tastatur auf de_DE.Utf-8 umstellen und die Zeitzone einstellen und
Punkt 1: Exand filesystem
– (evtl. Passwort für pi ändern)
– RasPi neu booten mit
sudo reboot
Glückwunsch, wenn die Kiste neu bootet und auf Benutzernamen und Passwort wartet (ihr wisst schon: pi und raspberry), habt ihr das Betriebssystem erfolgreich installiert! Dieses und die Firmware des RasPi sollte jetzt erstmal auf den neusten Stand gebracht werden. Dazu folgende Befehle auf der Konsole eingeben:
sudo apt-get update
sudo apt-get dist-upgrade -f
sudo rpi-update
sudo reboot
Damit läuft schon mal der RasPi und ihr habt Zugriff darauf über Putty.
Wer das alles nochmal also Video sehen möchte, dem kann ich diese Links empfehlen:
https://www.youtube.com/watch?v=jwVuhpqvSGI
https://www.youtube.com/watch?v=CL61H2B5SvU
Funksender
Jetzt geht es daran den Sender für die Funksteckdosen am RasPi einzubauen und die benötigte Software zu installieren.
Auf dem RasPi ist eine 26-polige Steckerleiste, die GPIO-Schnittstelle. Damit wird der Sender verbunden und zwar so, wie in folgender Abbildung:
Die Antenne sollte ein 17,3 cm langer Draht sein, dann funkt es am besten. Die Kabel sollten am Sender angelötet werden. Für die GPIO-Schnittstelle am RasPi besorgt euch ein Flachbandkabel aus einem alten PC, beispielsweise das Diskettenkabel, siehe Fotos.
Da kommt mal wieder mein Lieblingsmotto zum Tragen: ?Schmeiß nie was weg, man kann alles irgendwann mal wieder gebrauchen?. Die Flachbandstecker von den Diskettenlaufwerken haben zwar 34 Pins, aber mit einer Säge lassen sie sich auf 26 Pins stutzen. Wer einen Raspberry Pi B+ oder 2 hat, muss nicht sägen, der hat nämlich 40 GPIO Pins, kann also den Stecker so verwenden. Wir benötigen die letzten paar GPIO Pins nicht Die Belegung der ersten 26 Pins bleibt gleich..
Habt ihr den Sender mit dem RasPi verbunden muss noch die Software installiert werden. Einfach folgende Codes kopieren und nach einander mit der rechten Maustaste in Putty einfügen und mit Enter bestätigen.
sudo apt-get install git-core
sudo git clone git://git.drogon.net/wiringPi
cd wiringPi
sudo ./build
cd ..
sudo git clone git://github.com/xkonni/raspberry-remote.git
sudo cd raspberry-remote
sudo make send
Jetzt sollte man an den Funksteckdosen die Hauscodes einstellen. Das sind auf dem Mäuseklavier (bzw. DIP-Schalter) die ersten 5 Schalter. Standardmäßig sind diese bei Auslieferung meistens auf 11111 eingestellt. Das sollte direkt geändert werden, wenn ihr nicht wollt, dass der Nachbar euch versehentlich (oder absichtlich) die Sprühanlage auf Dauerregen stellt. Im Beispiel stellen wir den Hauscode auf 10101. Die 4 Schalter daneben sind mit ABCD bezeichnet, da stellt man den Code für die jeweilige Steckdose ein. Warum die Sets, die man im Baumarkt bekommt immer aus 3 Steckdosen bestehen, obwohl es 4 Codes gibt und auch die dazu gehörige Fernbedienung ebenfalls 4 Schaltmöglichkeiten hat, hat sich mir bis heute auch noch nicht erschlossen.
Egal, zum Testen schalten wir jetzt erst mal die Steckdose C, die nat�rlich in der Steckdose stecken muss, an. Dazu gebt ihr in Putty folgenden Befehl ein oder kopiert ihn:
sudo ./send 10101 3 1
Dabei ist 10101 der Hauscode, 3 die Nummer der Dose (ABCD) und 1 bedeutet AN.
Wenn es jetzt Klick gemacht hat, habt ihr gewonnen! Man möchte natürlich nicht immer am RasPi diesen Befehl eingeben, um eine Steckdose zu schalten. Das könnte man ja bequemer mit der Fernbedienung haben. Das ginge aber beispielsweise zeitgesteuert über die Crontab, die Linux von Hause aus mitbringt. Aber wir wollen das ja später bequem machen mit Hilfe von FHEM. Vorher klemmen wir aber der Vollständigkeit halber aber noch die 1-Wire Temperatursensoren an. Wer die nicht braucht, kann das überspringen und direkt weiter hinten bei FHEM weiter machen.
Auch hierzu gibt es ein hervorragendes Video:
https://www.youtube.com/watch?v=ZOgJtNaJZ_4&index=24&list=PL3-bM7Aq1pUrkASwtwM636PKyyeohGoQa
1-Wire Temperatursensoren installieren
Bei den Temperatursensoren handelt es sich um Dallas DS1820. Ich habe die nackten Sensoren gekauft und ein 3-adriges Kabel selbst angelötet. Es gibt die Sensoren auch fertig mit Kabel, wasserdicht vergossen. Diese kosten kaum mehr als die einzelnen Sensoren, leider wusste ich das nicht, als ich die Dinger bestellt habe. In Zukunft würde ich aber nur die fertig konfigurierten kaufen.
Man klemmt die DS1820 laut Abbildung an:
Die Software installation ist einfach. In die Datei /boot/config.txt müssen lediglich folgende Zeilen eingefügt werden.
sudo nano /boot/config.txt
Folgende Zeile eintragen:
dtoverlay=w1-gpio-pullup
Danach startet man das System neu mit
sudo reboot
Wenn man alles richtig gemacht hat, ist im Verzeichnis
/sys/bus/w1/devices
ein Unterverzeichnis für jeden gefundenen Sensor.
Das kontrolliert man mit:
ls sys/bus/w1/devices
Dort muss jetzt pro angeschlossenem Sensor ein Verzeichnis angelegt worden sein. Die Namen der Verzeichnisse bestehen aus Zahlen und Buchstaben, der eindeutigen Adresse der Sensoren.
FHEM Installieren
Zuerst Pearl installieren, das ist Voraussetzung für FHEM:
sudo apt-get install perl libdevice-serialport-perl
sudo apt-get install libio-socket-ssl-perl
FHEM Runterladen und installieren(fhem-X.Y.deb eventuell mit der aktuellsten, stabilen Version ersetzen, diese Anleitung ist Stand April 2015):
wget http://fhem.de/fhem-5.6.deb
sudo dpkg -i fhem-5.6.deb
sudo apt-get install -f
sudo reboot
Um die GPIO-Schnittstelle in FHEM zu nutzen muss das Modul 58_GPIO4.pm aus dem Verzeichnis /opt/fhem/contrib in das Hauptverzeichnis /opt/fhem/FHEM/ kopieren:
cp /opt/fhem/contrib/58_GPIO4.pm /opt/fhem/FHEM/58_GPIO4.pm
Um in FHEM Funksteckdosen schalten zu können, muss noch ein fehlendes Modul geladen werden, d.h. das #00_GenShellSwitch.pm runterladen und nach FHEM kopieren:
Auf der Konsole (Putty) eingeben:
wget http://az74rseh.web155.alfahosting-server.de/froschkeller/wordpress/download/00_GenShellSwitch.pm
sudo cp 00_GenShellSwitch.pm /opt/fhem/FHEM/00_GenShellSwitch.pm
cd /home/pi/wiringPi/raspberry-remote
sudo chown root ./send
sudo chmod 4711 ./send
Damit ist schon FHEM installiert und für unsere Zwecke eingerichtet.
FHEM
FHEM starten man, indem man in seinem Web-Browser die IP (kennt man ja schon von Putty) gefolgt von :8083 eingibt, also z.B. 192.168.178.155:8083. Damit hat man die Startseite erreicht. Am besten als erstes für WEB, WEBPhone und WEBTablet Basic auth einrichten, damit die Warnmeldungen nicht mehr aufschlagen. Dazu muss man sich zuerst ein verschlüsseltes Passwort besorgen, z.B. bei http://ostermiller.org/calc/encode.html. Dort gibt man in dem großen Feld seinen Benutzernamen und das Passwort durch einen Doppelpunkt getrennt ein, z.B. Mustermann:Passwort und klickt dann auf Encode vor Base64. Dann wird einem ein Zahlen-Buchstabensalat produziert, der das verschlüsselte Passwort darstellt, z.B. QmVudXR6ZXJuYW1lOlBhc3N3b3J0. Diesen Salat kopiert ihr bitte.
Dann geht man auf die FHEM-Seite und trägt den Salat als basicAuth ein: WEB anklicken, unter Room basicAuth auswählen, das codierte Benutzername und Passwort einfügen und attr anklicken. Das Gleiche für WEBPhone und WEBTablet. Dann Save config anklicken!
Dann noch FHEM auf den neusten Stand bringen. Dazu in Befehlszeile update eintragen und anklicken und warten. Nach dem Update shutdown restart in die FHEM-Befehlszeile eingeben.
Damit ist FHEM grundlegend konfiguriert und man kann loslegen.
Um 1-wire-Komponenten auslesen zu können muss aber noch der Busmaster im FHEM konfiguriert werden:
define RPi GPIO4 BUSMASTER
Wenn man folgenden Code in die Befehlszeile eingibt, installiert man eine Funksteckdose:
define FunkSteckdose1 GenShellSwitch /home/pi/wiringPi/raspberry-remote/send 10101 3 1 0
Dadurch ist FunkSteckdose1 definiert und kann geschaltet werden. Die ersten 5 Ziffern sind der Hauscode, die 3 ist die Nummer der Steckdose (also C am Mäuseklavier) die 1 und 0 sind die Zustände, die die Dose annehmen kann also 1=AN, 0=AUS.
Unter GPIO4 sollten eure Temperatusensoren auftauchen, falls ihr welche installiert habt. Die kann man mit dem Befehl rename AlterName NeuerName umbenennen. In den Namen dürfen keine Leerzeichen vorkommen!
Hier noch ein Beispiel für eine simple Temperaturregelung:
define Temp_Regelung DOIF ([Tempsensor1:temperature] < 25) (set FunkSteckdose1 on) DOELSE (set FunkSteckdose1 off)
Mit folgendem Befehl könnte man die Sprühanlage täglich um 17 Uhr für 30 Sekunden anschalten:
define SpruehanlageAn at *17:00:00 set FunkSteckdose2 on-for-timer 30
Die Messwerte können auch grafisch dargestellt werden, wie in folgendem Beispiel:
Weitere Möglichkeiten entnehmt bitte dieser Anleitung.
Das soll es jetzt erst mal gewesen sein. FHEM ist sehr mächtig und umfangreich, aber auch sehr leicht zu bedienen, wenn man einmal kapiert hat wie der Hase läuft. Ich empfehle die Anleitungen von www.fhem.de und das Forum. Außerdem gibt es auch dazu auf YouTube sehr gute Videos!
Ich hoffe, euch erstmal etwas auf den Geschmack gebracht zu haben und wünsche euch viel Spaß!
Links zum Thema:
www.fhem.de
www.datenreise.de/ Anleitungen zum Raspberry Pi
Fhem Tutorial Serie Teil 04 – SVG Plots erstellen & einrichteü