Gartensteuerung aufbauen

Mein Plan war es mit Raspberry und Arduino meinen Garten zu steuern. Aus dem Internet habe ich mir die verstreuten Informationen gesammelt. Hier einmal zusammengefasst, vielleicht hilft es ja…

Ausrüstung

Raspberry PI

Der Raspberry dient als Steuerzentrale. Auf ihm sind der RF Sender und Empfänger angeschlossen, dann kommen noch Webcams dazu. Außerdem läuft die ganze Software auf der Maschine. Dazu zählen WiringPI, Pilight und FHEM. Dann habe ich noch einen Samba Server und was sonst noch gebraucht wird.

Arduino

Die Arduino dienen zur Ansteuerung der verschiedenen Hardwaren, wie Türöffner, Bewässerung, Sensoren und so weiter sind an Arduinos angeschlossen. Diese werden per RF vom Raspberry gesteuert.

Funkmodule

Ich habe die preiswerten RF Module bei eBay gekauft, kosten so um die €2 pro Set (MX- 05V Empfänger, MX- FS- 03V Sender). Die Reichweite ist nicht so toll. Man muss auf alle Fälle eine 17,3cm lange Antenne anlöten. Dann sollten die Sender mit 12V betrieben werden, das erhöht die Reichweite.

Funksteckdosen

Ich hatte noch ein paar alte Quigg Funksteckdosen, die ins System integrieren  konnte.

Installation Raspberry

Betriebssystem

Installation des Debian Linux findet man überall.

Ich habe mir den Root User (böserweise) geöffnet:
sudo su root
passwd
Enter new UNIX password:

Dann kann man sich direkt als root anmelden und auch besser Dateien übertragen.

Samba

Installation:
apt-get install samba samba-common-bin
nano /etc/samba/smb.conf
smbpasswd -a

[Alles] path=/
writable=yes
guest ok = no

 

Mailversand

Für den Mailversand habe ich SSMTP installiert, damit lässt sich über einen Free-Mailer Mails von der Kommandozeile verschicken.

Installation:
apt-get install ssmtp
nano /etc/ssmtp/ssmtp.conf

VPN Tunnel

Ich habe zu meinem Server  nach Hause einen VPN Tunnel aufgebaut, damit ich auf die PI von überall zugreifen kann.

Installation:
apt-get install wiringpi

Hardware

Ich habe die Funkmodule an die 3,3v Leitung angeschlossen, weil die PI Eingänge leider nur 3,3v sind. Eigentlich brauchen die RF Module 5v, geht aber auch so.

Den Sender habe ich an GPIO17 und den Empfänger an GPIO27 angeschlossen.

Den PI habe ich per USB an meine FritzBox angeschlossen, die liefert anscheinend genug Strom.

Die Reichweite der 433Mhz Teile konnte ich erhöhen in dem ich die Antennen 34cm lange gemacht habe, also Lambda halbe und nicht viertel wie es im Internet steht!

Software

Wiring PI

Die Grundlage für die GPIO Benutzung ist die Wiring PI Bibliothek.

Installation:
apt-get install wiringpi

433Utils

Damit wird die Funkschnittstelle aufgebaut. Es kann dann mit RFSniffer auf dem 433 Band gelauscht werden und mit codesend Daten geschickt werden.

Ich benutze das zum Anbinden der Arduinos, quasi mit einem eigenen  Protokoll.

Installation:
git clone git://github.com/ninjablocks/433Utils.git
cd 433Utils
make

Pilight

Pilight stellt eine rudimentäre Hausautomation zur Verfügung. Ich benutze es im Moment primär für die Anbindung von quigg Schaltsteckdosen. Pilight hat eine  Reihe von Protokollen drauf, die in FHEM fehlen.

Installation:
nano /etc/apt/sources.list
deb http://apt.pilight.org/ stable main
wget -O - http://apt.pilight.org/pilight.key | apt-key add -
apt-get update
apt-get install pilight

FHEM

Das ist die eigentliche Hausautomationssoftware. Sie scheint primär mit fertigen Hausautomations-Hardwaren zu laufen (z.B. FS20 oder so), aber über Pilight und 433Utils lassen sich beliebige Steuerungen realisieren.

Installation:
sudo apt-get -f install && sudo apt-get -y install perl libdevice-serialport-perl libio-socket-ssl-perl libwww-perl libxml-simple-perl

cd /tmp
wget
http://fhem.de/fhem-5.6.deb && sudo dpkg -i fhem-5.6.de

openHAB

Da FHEM nicht so läuft, probiere ich openHAB aus.

Java muss aktuell sein:

apt-get install oracle-java7-jdk

http://openhabdoc.readthedocs.org/de/latest/Autostart/

Konfigurationen in FHEM

Oberfläche

Zum Ansteuern über eine WebObj

Sonnenuntergang und -aufgang

Damit man Lampen an und ausmachen kann, je nachdem ob die Sonne scheint, habe ich mir 2 Variablen gemacht, die  kann ich dann zum Schalten benutzen:

define Sonnenuntergang dummy
define Sonnenaufgang dummy
define Sun_RiseSet_Timer at *15:34:00 {\
my $Sonnenaufgang = sunrise();;\
my $Sonnenuntergang = sunset();;\
fhem(set Sonnenaufgang $Sonnenaufgang);;\
fhem(set Sonnenuntergang $Sonnenuntergang);;\
}

Einfacher scheint es mit:

define Abendlicht_AN at *{sunset(-600,15:00,22:01)} { fhem(set Blumenlampe,wz_Fensterbank on) if ($hour < 22)}

bzw:

define Abendlicht_AN at *{sunset(-600,15:00,22:01)} { fhem(set S2 on) if ($hour < 22)}


zu gehen

Einbinden eigener Funktionen

Über 99_Utils.pm Dateien kann eigener Perl Code eingebaut werden.

Hier habe ich eine Datei gemacht, die im tmp Ordner nachschaut und dort die von den Arduinos kommenden RF Kommandos interpretiert und abarbeitet.

Kommunikation mit Arduino

Ich musste die Kommunikation zwischen den Arduino und dem PI selbst aufbauen.

Die Kommunikation läuft über die 433Util, diese stellen den RFSniffer und codesend bereit.

Dazu benutze ich die rcswitch Bibiliothek, sowohl auf dem Arduino als auch auf dem PI. Wichtig ist wohl, diese: RCSwitch zu benutzen.

Damit: Taster schickt der Arduino per Tastendruck eine Nummer ab

Damit: RC_Funktioniert empfängt der Arduino vom Raspberry Nummer.

Damit: RCEmpfang geht der Raspberry auf Empfang und schreibt jeden empfangenen Code in eine /tmp Datei.

Software entwickeln

Ich musste einen daemonen entwickeln, der im PI lauscht und die empfangenen Zahlen in eine Datei schreibt, damit FHEM die richtigen Schaltungen vornehmen kann.

Kompilieren

g++ -o RCEmpfang RCEmpfang.cpp RCSwitch.cpp -lwiringPi: Damit wird der Daemon kompiliert. Es muss als Quelldatei die RCSwitch Bibliothek und wiringPi mit angegebe werden.

Zum Erstellen des Daemon gibt es ein sehr gutes Sketelet, in das der Code einfach eingebaut wird.