Raspberry PI – Heimautomatisierung mit COC, Homematic & FHEM

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.

raspberryCOC

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

fhem_coc1

und mit Klick auf COC sollte folgendes zu lesen sein

fhem_coc2

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.

fensterkontakt1

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.

fhem_coc3

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.

fensterkontakt

Wenn jetzt das Fenster geöffnet oder geschlossen wird, sollte sich der Status des Fensterkontaktes aud der FHEM-Webseite entsprechend ändern.

7 Gedanken zu „Raspberry PI – Heimautomatisierung mit COC, Homematic & FHEM

  • 27. März 2014 um 13:20 Uhr
    Permalink

    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

    Antwort
    • 29. März 2014 um 09:08 Uhr
      Permalink

      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

      Antwort
  • 3. September 2015 um 17:02 Uhr
    Permalink

    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

    Antwort
    • 5. September 2015 um 20:17 Uhr
      Permalink

      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

      Antwort
  • Pingback: Amazon Kindle als Statusdisplay - Update - bubuxblog

  • Pingback: Odroid C2 (vs Raspberry PI 2) – bubuxblog

  • Pingback: Windsensor TX20 mit ESP8266 – bubuxblog

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert