HomeMatic mit der CUL günstig unter FHEM einbinden

Smarthome
Arduino nano und CC1101 868MHz-Modul

Das HomeMatic-System hat sich in Deutschland zu einer der meist verbreiteten Funklösungen in der Hausautomation entwickelt. In diesem Artikel verschaffen wir uns einen kurzen Überblick darüber, was HomeMatic überhaupt ist. Danach bauen wir eine sogenannte Selbstbau-CUL , die die Frequenz von 868 MHz unterstützt. Im Anschluss binden wir dann unser erstes HomeMatic-Gerät, einen Heizkörper-Thermostaten des Typs HM-CC-RT-DN unter FHEM ein.

Voraussetzung

Warum HomeMatic und was ist HomeMatic überhaupt?

Hier die wichtigsten Gründe und Fakten in der Übersicht:

  • Die Komponenten sind einfach zu installieren.
  • Fast alle Komponenten sind im Design ansprechend und kommen ohne Kabel aus.
  • Die Komponenten überzeugen mit einer sehr langen Akkulaufzeit.
  • HomeMatic wird von der zu ELV-Elektronik gehörenden Firma eQ-3 entwickelt.
  • HomeMatic basiert auf dem proprietären Funkstandard BidCoS, der ebenfalls von eQ-3 entwickelt wurde.
  • BidCoS nutzt die Funkfrequenz von 868 MHz.
  • Es ist ausreichend viel über BidCoS bekannt, so dass HomeMatic problemlos unter FHEM betrieben werden kann.
  • BidCoS unterstützt zwar keine volle Verschlüsselung, nutzt optional aber eine AES-Authentifizierung, um die Herkunft eines Befehls vor der Ausführung zu verifizieren.
  • Mittlerweile kann die AES-Authentifizierung auch mit der Selbstbau-CUL unter FHEM genutzt werden.
  • eQ-3 scheint dies zu tolerieren, da es der Verbreitung und dem Verkauf der Komponenten zugute kommt.

Einkaufsliste

NameAmazoneBay
Arduino Nano v3 compatiblezu Amazonzu eBay
CC1101 für 868 MHz (Achtung viele Fakes, Platinen mit den hier abgebildeten vergleichen)zu eBay
4 Kanal Pegelwandler 5V – 3,3Vzu eBay
Jumper Kabel female to femalezu AmazoneBay-Suche
HomeMatic Heizkörper Thermostat HM-CC-RT-DN
(oder ein anderes HM-Gerät zum anlernen)
zu Amazon

Der Hardwareteil

CUL aus ArduinoNano+CC1101 868MHz für HomeMatic unter FHEMDas HomeMatic-Protokoll BidCoS nutzt eine Frequenz von 868 MHz. Anders als die CC1101 Module, die auf 433 MHz senden, benötigen wir hier also die weniger verbreiteten 868 MHz-Module. Achtet beim Kauf bitte darauf, dass die Platine genauso aussieht, wie auf dem Bild rechts (natürlich ohne die angelöteten Kabel). Es gibt viele 433 MHz-Module, die falsch beschriftet sind oder bewusst fälschlich als 868 MHz-Modul verkauft werden. Diese funktionieren entweder gar nicht oder bereiten zumindest starke Probleme beim Senden und Empfangen.

CC1101 868MHzFakt ist, dass die Module mit Versand aus Deutschland recht teuer sind. Wenn ihr ein paar Wochen Zeit habt, kauft daher lieber ein paar mehr Module aus China. Ein paar mehr Module deshalb, da ich es schon erlebt habe, dass ein Modul defekt ist und nicht funktioniert. Eine Garantieabwicklung dauert lang und ist unter Umständen recht schwierig, da die Probleme auch sehr wahrscheinlich durch Fehler beim Löten entstanden sein können. Trotzdem würde ich sie jederzeit wieder aus China beziehen. Wenn es schnell gehen soll, kauft ihr aus Deutschland und habt im Fehlerfall dafür auch kürzere Kommunikationswege.

4 Kanal Pegelwandler 5V - 3,3VWichtig zu Erwähnen ist, dass die CC1101 für 868 MHz mit einem Lochrastermaß von 2mm ausgeliefert werden. Standard, auch bei den 433MHz-Modulen ist 2,54 mm. Wenn ihr vor habt, alles auf einer Platine unter zu bringen, müsst ihr die nicht zusammenpassenden  Lochraster beachten. Umgangen habe ich das Problem, indem ich die Female-Adapter (siehe Einkaufsliste) halbiert, abisoliert und direkt auf die Platine gelötet habe (siehe Bild links). Auf diesem Wege lässt sich das Ganze dann ganz einfach an den Arduino Nano stecken.

Der CC1101 darf laut Datenblatt mit maximal 3,6V betrieben werden. Der Arduino liefert uns zwar die korrekte Betriebsspannung, auf den Datenpins liegt allerdings ein 5V Pegel an. Kurzfristig geht dies sicher auch so gut, langfristig empfehle ich aber den Einsatz eines Pegelwandlers (Bild rechts), um die Spannung auf 3,3V abzusenken.

PIN-Belegung des PegelwandlersArduinoNano und CC1101-868MHz PinbelegungDie nachfolgende Tabelle zeigt, wie die PINS miteinander verbunden werden müssen. Die 3 PINs, die Daten in Richtung CC1101 übertragen, werden durch den Pegelwandler geschickt. Alle anderen werden direkt miteinander verbunden.

CC1101FunktionPegelwandlerArduinoFunktion
1VDD 3,3V17VDD 3,3V
2GND4GND
3SI31014D11
4SCLK4916D13
5SO15D12
6GDO25D02
7GDO06D03
8CSN5813D10
12275V
1129GND

Firmware aufspielen

Das aufspielen der Firmware wurde bereits sehr ausführlich ein meinem letzten Artikel „Funksteckdosen mit FHEM schalten: Firmware aufspielen“ beschrieben und wird dort auch regelmäßig aktualisiert. Achtet dort nur auf den Hinweis auf die Änderung für 868MHz und kommentiert die dort genannte Zeile entsprechend aus.

Wenn die Firmware aufgespielt wurde, geht es hier weiter.

Konfiguration unter FHEM

Für die Definition des CUL unter FHEM suchen wird uns zuerst die eindeutige Hardware-ID, damit der CUL auch erkannt wird, sollte er einmal an einen anderen USB-Port angesteckt werden. Die Devicebezeichnung „/dev/ttyUSB0“ wird vom Linux ansonsten einfach hochgezählt.

Wir definieren das CUL nun folgendermaßen. Die Befehle werden dabei Zeile für Zeile in dem Textfeld von dem FHEM-Webinterface eingegeben. Die hmId kann dabei frei gewählt werden, sie muss nur aus 6 hexadezimalen Ziffern (0-9 oder A-F) bestehen und darf in eurer HomeMatic-Welt und die der Nachbarschaft noch nicht vergeben sein. Wir müssen dem FHEM-Modul noch sagen, welche Sprache es sprechen soll und den Raum zuweisen, indem später auch automatisch alle neu gepairten FHEM-Geräte landen.

Wenn alles geklappt hat, sollte das neue Device unter den Räumen „Everything“ und „CUL_HM“ als „Initialized“ angezeigt werden.

fhem_cul_io1_initialized

Einrichten der virtuellen VCCU unter FHEM

Wir könnten diesen Schritt jetzt auch überspringen und direkt HomeMatic Geräte an das Device CUL_IO1 anlernen. Ich würde aber raten, von Anfang an eine VCCU anzulegen. Einer VCCU werden eine oder mehrere CULs zugewiesen, so dass sie sich somit auch für größere Installationen mit mehreren Sendern auf z.B. mehreren Etagen eignet. Anhand der Sendeleistung der Geräte, entscheidet die VCCU automatisch, welche CUL näher gelegen ist.

Viel wichtiger ist aber die Tatsache, dass sich die AES-Authentifizierung nur mit Hilfe einer virtuellen VCCU aktivieren lässt. Zumindest trifft dies in Verbindung mit der CUL zu. Die offiziellen LAN-Adapter von HomeMatic können dies natürlich von Haus aus.

Wir legen nun also die VCCU an und verknüpfen sie mit unserer zuvor eingerichteten CUL. Wichtig ist, dass ihr hier erneut die zuvor genutzte HMId verwendet.

Pairing der HomeMatic Geräte mit FHEM

Um ein HomeMatic-Gerät unter FHEM sichtbar zu machen, muss es angelernt werden. Man spricht hierbei von Pairing. Das Gerät merkt sich die HMId, mit dem es gepaart wurde und kann immer nur mit einer Zentrale, in diesem Fall ist das unsere virtuelle VCCU, gepaired sein.

Um neue Geräte pairen zu können, muss die VCCU in den Pairing-Modus versetzt werden. Um diesen für 5 Minuten (300 Sekunden) zu aktivieren gebt ihr folgendes im FHEM-Webinterface ein.

Innerhalb dieser 5 Minuten müsst ihr jetzt das HomeMatic Gerät ebenfalls in den Pairing-Modul bringen. Wie das geht, steht in der beigelegten Anleitung und ist bei jedem Gerät minimal abweichend.

Bei dem „HomeMatic Heizungsthermostat HM-CC-RT-DN“ müssen hierfür die beiden äußeren Tasten gedrückt gehalten werden. Das Gerät fängt an Rückwärts zu zählen und sollte kurze Zeit später unter FHEM, im Raum „CUL_HM“ sichtbar werden.

fhem_hm-cc-rt-dn_cmds_pending

„CMDs_pending“ bedeutet, dass FHEM hier noch Pakete in der Warteschlange hat. Diese werden in regelmäßigen Abständen, sobald sich das Gerät das nächste Mal bei der Zentrale meldet, abgearbeitet. Es kann durchaus eine Zeit dauern, dies ist kein Problem, sondern liegt an den stromsparenden Eigenschaften von HomeMatic. Man muss also auch bei der Änderung der Temperatur durchaus etwas geduldiger sein. Später hat man hierfür aber fest einprogrammierte Zeiten.

Jetzt wollen wir das ganze aber nicht abschließen, bevor wir zumindest unsere neue Wunschtemperatur gesetzt haben. Es gibt dafür im „HM-CC-RT-DN“ verschiedene Kanäle (Channels).

fhem_hm-cc-rt-dn_channels

Für die Temperatursteuerung ist „channel_04“ zuständig. Eine neue Zieltemperatur setzen wir also wie folgt. Das XXXXXX ersetzt ihr natürlich durch die HMId eures Heizungsthermostates.

Ich hoffe der Artikel hat euch geholfen. Postet Euer Feedback jeglicher Art, ob Fragen oder Anregungen gerne in den Kommentaren.

Viel Erfolg beim Nachmachen!

Update 2.2.17: Den Hardwareteil um den Einbau eines Pegelwandlers ergänzt.

8 Comments to HomeMatic mit der CUL günstig unter FHEM einbinden

  1. Niklas Schaum

    Hallo,
    habe die Einrichtung in FHEM wie beschrieben vorgenommen, allerdings bleibt der STATE des HM-CC-RT-DN auch nach Stunden noch auf CMDs_pending. Und es werden keine Werte übertragen.

    Mit dem Türkontakt funktioniert die Übertragung und open/closed werden angezeigt.

    Haben Sie eine Idee, woran das liegen kann?

    • Hallo Niklas,

      das kann viele Gründe haben, vermutlich hat aber das Pairing nicht funktioniert. Am einfachsten das Pairing noch einmal wiederholen, das schadet auf jeden Fall nicht. Vielleicht reicht das schon.

      Ansonsten einmal überprüfen, an bzw. mit welcher HMID der Heizkörperthermostat gepaired ist. War er vorher schonmal an eine andere Zentrale angebunden? Zu erkennen ist dies an dem Reading „PairedTo“ im Haupt-Device. Diese einfach mal mit anderen Geräten, die funktionieren vergleichen. „PairedTo“ sollte mit der ID übereinstimmen, die du bei der Konfiguration deiner CUL bzw. VCCU (oder was du verwendest) angegeben hast.

      Schwieriger wird es, wenn z.B. aus einer alten Konfiguration bereits die AES-Verschlüsselung zum Einsatz gekommen ist. Dies könnte auch ein Grund sein, warum sich das gute Stück nicht pairen lassen will.

      Wenn das alles nicht hilft, den HM-CC-RT-DN ggf. erst einmal auf Werkseinstellungen zurücksetzen (Punkt 14.7 in der Anleitung):
      – „Auto/Manu“ (das ist die linke Taste) länger als 3s drücken
      – Mit Stellrad „rES“ auswählen und mit „Boost“ (mittlere Taste) bestätigen
      – Mit Stellrad von „no“ auf „YES“ umstellen und mit „Boost“ (mittlere Taste) bestätigen

      Danach:
      – Optional: Device aus FHEM löschen
      – Pairing wiederholen

  2. Das ist mit Abstand die beste Anleitung im Web zu dem Thema, wenn man eher Lötanfänger ist.
    Vielen Dank. Wird mir eine Freude sein es selbst auszuprobieren, wenn alles da ist.

  3. Martin Sickel

    Hallo,
    Habe deine Anleitung befolgt und funktioniert soweit ganz gut, allerdings würde ich nun gerne 2 von den CUL betreiben, einer für 433Mhz der andere für 868Mhz. wenn ich lsusb aufrufe bekomme ich diese Ausgabe

    Bus 001 Device 009: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
    Bus 001 Device 010: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter

    ls -l /dev/serial/by-id zeigt aber nur das hier an

    usb-1a86_USB2.0-Serial-if00-port0 -> ../../ttyUSB1

    wie kann ich den die eindeutige ID der devices feststellen?

    • Hallo Martin,

      leider gar nicht. Die billigen CH340 haben keine eindeutige ID und können daher nicht mehrfach an einem USB-Bus betrieben werden. Ich habe die CH340 aus genau diesem Grund komplett gemieden und immer darauf geachtet, dass ich FT232-Chips bekomme. Die 2 oben verlinkten Arduinos sollten dieses Problem nicht haben. Es müsste aber reichen, wenn du einen der beiden austauscht.

      Gruß
      Carsten

  4. @Martin:
    Das kann man über den USB Pfad umgehen:

    ls -l /dev/serial/by-path

    Zeig dann beide Geräte an. Wichtig ist nur das du immer die selben USB ports verwendest, da diese verwendet werden um die Geräte zu adressieren.

  5. Hallo Carsten,
    erst einmal vielen Dank für die Anleitung. Die ist sehr verständlich. Ich versuche schon seit längerem meinen Selbstbau nanoCUL für 868 Mhz zum laufen zu bekommen. Eingebunden in FHEM ist er, es wird auch „initialized“ angezeigt. Dann setze ich das attr für die hmID, und sobald ich das attr rfmode HomeMatic setze, fängt die weiße lampe wie verrückt an zu blinken, der Status wechselt auf „opend“ und der CUL ist nicht mehr erreichbar… Jemand eine Idee woran das liegen kann?

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.