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.