Damit der Raspberry PI sich nicht nur mit dem Aufzeichnen des Stromverbrauches langweilt, musste noch etwas anderes her. Kennt ihr das: Sobald man von Zuhause weg ist und gerade auf die Autobahn auffahrt, geht es einem durch den Kopf, ob auch alle Fenster zu sind und der Herd ausgeschaltet?
Um diese Frage, zumindest für die Fenster, auch auf der Autobahnauffahrt klären zu können, habe ich im Internet nach einer Lösung gesucht und Homematic und www.busware.de gefunden. Die nötige Software bietet FHEM.
Von Busware gibt es eine Erweiterung für den Raspberry PI, die auf die GPIO-Leiste gesteckt wird und dem Raspberry das für Homematic-Geräte benötigte Funken im 868 MHz-Band beibringt. Das Aufstecken der COC-Platine gestaltete sich etwas schwierig, da der Display Connector des Raspberry zu breit ist. Da ich den aber eh nicht benötige, habe ich ihn mit einem Cutter passend gemacht.
1. COC in Betrieb nehmen
Zuerst muss der serielle Port des Rasperry für den COC freigegeben werden. Dazu müssen folgende Dateien angepaßt werden und alle Verweise auf ttyAMA0 entfernt werden.
- In der Datei /etc/inittab folgende Zeile löschen oder auskommentieren (mit #)
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
- In der Datei /boot/cmdline.txt auch alle Verweise auf ttyAMA0 löschen
Anschliessend den Raspberry rebooten.
Jetzt muss die Firmware auf den COC. Es gibt zwei Firmware-Versionen da es auch zwei COC-Versionen gibt. Einmal mit 1-Wire und einmal ohne 1-Wire. Ich habe die Version ohne 1-Wire. Am einfachsten geht das mit dem Runterladen der Firmware unter Linux mit wget.
Für die Version ohne 1-Wire sieht das folgendermaßen aus:
sudo wget "http://culfw.svn.sourceforge.net/viewvc/culfw/trunk/culfw/Devices/COC/COC.radio_only.hex?format=raw" -O COC.radio_only.hex
Für die Version mit 1-Wire gibt es die Firmware hier:
sudo wget "http://culfw.svn.sourceforge.net/viewvc/culfw/trunk/culfw/Devices/COC/COC.radio.hex?format=raw" -O COC.radio.hex
Wichtig ist die Ergänzung format=raw in dem URL. Ohne diesen Zusatz werden HTML-Header mitgeladen, welche die heruntergeladene Firmware unbrauchbar machen.
Eine falsch aufgespielte Firmware äußert sich später mit folgenden Meldungen im FHEM-Log:
---schnipp--- Opening COC device /dev/ttyAMA0 Setting COC baudrate to 38400 COC device opened Cannot init /dev/ttyAMA0, ignoring it ---schnapp--
Wenn es auch mit dem Parameter raw zu diesem Fehler kommt, versucht die Datei ganz normal im Browser runter zu laden und kopiert sie anschliessend auf den Raspi.
Aber weiter mit dem Aufspielen der Firmware…. Dazu folgendes auf der Kommandozeile absetzen:
echo "calling COC bootloader..." if test ! -d /sys/class/gpio/gpio17; then echo 17 > /sys/class/gpio/export; fi if test ! -d /sys/class/gpio/gpio18; then echo 18 > /sys/class/gpio/export; fi echo out > /sys/class/gpio/gpio17/direction echo out > /sys/class/gpio/gpio18/direction echo 0 > /sys/class/gpio/gpio18/value echo 0 > /sys/class/gpio/gpio17/value sleep 1 echo 1 > /sys/class/gpio/gpio17/value sleep 1 echo 1 > /sys/class/gpio/gpio18/value
Jetzt ist der Microcontroller des COC bereit, um mit der eben heruntergeladenen Firmware geflasht zu werden. Dafür wird z.B. avrdude benötigt. Falls es noch nicht installiert ist geht das unter Debian mit folgendem Befehl:
sudo apt-get install avrdude
Der Befehl zum flashen schaut so aus (je nach COC-Version auf den richtigen Dateinamen der Firmware achten):
avrdude -p atmega1284p -P /dev/ttyAMA0 -b 38400 -c avr109 -U flash:w:COC.radio_only.hex
Das wars für den COC, der jetzt unter /dev/ttyAMA0 als Device auftauchen sollte.
Für Firmwareupdates muss FHEM gestoppt werden bevor mittels AVRDude geflasht wird. Ansonsten antwortet der COC mit “not responding”.
2. FHEM
FHEM ist eine in Perl geschriebene Anwendung zur Heimautomation. Das Paket kann mit folgendem Befehl runtergeladen werden. Ggf. auf der Webseite prüfen ob v5.5 noch die aktuelle Version ist
sudo wget fhem.de/fhem-5.5.deb
Dann noch Perl installieren falls noch nicht passiert:
sudo apt-get install perl libwww-perl libdevice-serialport-perl
Anschliessend das FHEM-Paket installieren:
sudo dpkg -i fhem-5.5.deb
Damit die COC-Erweiterung bei jedem Start von FHEM initialisiert wird, müssen folgende Anpassungen im FHEM-Startscript vorgenommen werden. In der Datei /etc/init.d/fhem an der Stelle wo
start)
zu finden ist, folgendes hinzufügen:
start) echo "resetting 868MHz extension..." if test ! -d /sys/class/gpio/gpio17; then echo 17 > /sys/class/gpio/export; fi if test ! -d /sys/class/gpio/gpio18; then echo 18 > /sys/class/gpio/export; fi echo out > /sys/class/gpio/gpio17/direction echo out > /sys/class/gpio/gpio18/direction echo 1 > /sys/class/gpio/gpio18/value echo 0 > /sys/class/gpio/gpio17/value sleep 1 echo 1 > /sys/class/gpio/gpio17/value sleep 1
Diese Anpassung ist nach jedem Update der FHEM-Software zu tun da die fhem.cfg bei einem Update wieder überschrieben wird.
Die eigentliche Konfiguration von FHEM für die Homematic-Geräte oder die Räume etc. findet in der Datei /etc/fhem.cfg statt:
sudo vim /opt/fhem/fhem.cfg
Dort muss noch der COC und der Frequenzmodus eingetragen werden. Für die Homematic-Geräte ist der Eintrag in der zweiten Zeile notwendig.
define COC CUL /dev/ttyAMA0@38400 1234 attr COC rfmode HomeMatic
Danach FHEM neu starten, damit die Änderungen der Konfigdatei angezogen werden. Das geht z.B. so:
sudo /etc/init.d/fhem start
Funktioniert alles richtig, sollte auf der FHEM Webseite unter http://<ip_vom_raspi>:8083/fhem unter “Everything” folgendes Gerät auftauchen
und mit Klick auf COC sollte folgendes zu lesen sein
3. Homematic-Gerät einbinden
Die schönste COC- und FHEM-Installation nutzt nix, wenn nicht auch ein Homematic-Gerät angebunden wird. Ich stelle das bespielhaft an einen Tür-/Fensterkontakt dar (hm-sec-sc).
Der Fensterkontakt ist sehr kompakt und fällt kaum an der Türe auf.
Nach einlegen der beiden Knopfzellen leuchtet die Status-LED jewils einmal in Rot, Orange und Grün. Um das Gerät mit der Zentrale (COC) zu verbinden, muss der COC in den Pairing-Modus versetzt werden. Das funktioniert auf der FHEM-Webseite mit
set COC hmPairForSec 600
in der Eingabezeile auf der Startseite oder mit Klick auch “Everything – > COC ” mittels Auswahlbox. “600” steht dabei für die Zeit in Sekunden für das Pairing und kann entsprechend angepaßt werden.
Ist die Zentrale im Pairing-Modus kann an dem Homematic-Fenstersensor die Anlerntaste gedrückt werden. Die LED sollte relativ schnell kurz grün aufleuchten. Damit ist das Pairing auch schon abgeschlossen.
Auf der FHEM-Webseite und in der FHEM-Konfiguration in /etc/fhem.cfg sollte nun das neue als threeStateSensor auftauchen.
Der Fensterkontakt kann nun mittels des doppelseitigen Klebebandes an der Fenster angebracht werden. Hierbei zeigte sich, dass das beigelegte Klebeband nicht wirklich gut hält, die Klebeflächen vorher gut gereinigt werden (z.B. mit Isopropanol) und fest angepresst werden müssen. Vor allem der Kontaktmagnet hält zumindest bei mir nicht besonders gut.
Wenn jetzt das Fenster geöffnet oder geschlossen wird, sollte sich der Status des Fensterkontaktes aud der FHEM-Webseite entsprechend ändern.
sehr gutes howto, bei mir musste ich jedoch folgende Punkte ergänzen;
nach fhem Installation:
cd /opt
sudo chmod -R a+w fhem && sudo usermod -a -G tty pi && sudo usermod -a -G tty fhem
FHEM Webseite:
fhem Update durchführen und auf die Meldungen die man dabei erhält reagieren !!
ach ja, nach dem Update musste ich nochmals attr COC rfmode HomeMatic in /opt/fhem/fhem.cfg eintragen.
Gruß, Peter
Hallo Peter,
vielen Dank für die Hinweise. Die nötigen Rechte können natürlich von System zu System abweichen.
Das FHEM nach einem Update die fhem.cfg wieder überschreibt ist auch korrekt. Darauf bin ich auch schon reingefallen.
Ich habe das im Artikel vermerkt.
Gruß
Chris
Hallo Peter ,
bei mir kommt beim Pairing immer *This command is not valid in the current rfmode*
Sagt dir diese Fehlermeldung was ?
Danke für deine super Anleitung .
G
Stephan
Hallo Stephan,
Du musst den rfmode noch auf Homematic stellen. Ich mache das durch einen Eintrag in der “fhem.cfg” (unter /opt/fhem oder über die FHEM Konfigwebseite). Dort dann folgendes einfügen:
attr COC rfmode HomeMatic
irgendwo unter einer Zeile die so ähnlich ausschaut wie folgende
define COC CUL /dev/ttyAMA0@38400 1234
Gruß
Chis
Pingback: Amazon Kindle als Statusdisplay - Update - bubuxblog
Pingback: Odroid C2 (vs Raspberry PI 2) – bubuxblog
Pingback: Windsensor TX20 mit ESP8266 – bubuxblog