HomeMatic mit der CUL günstig unter FHEM einbinden
Seiteninhalte
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
Name | Amazon | eBay |
Arduino Nano v3 compatible | zu Amazon | zu eBay |
CC1101 für 868 MHz (Achtung viele Fakes, Platinen mit den hier abgebildeten vergleichen) | zu eBay | |
4 Kanal Pegelwandler 5V – 3,3V | zu eBay | |
Jumper Kabel female to female | zu Amazon | eBay-Suche |
HomeMatic Heizkörper Thermostat HM-CC-RT-DN (oder ein anderes HM-Gerät zum anlernen) | zu Amazon |
Der Hardwareteil
Das 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.
Fakt 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.
Wichtig 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.
Die 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.
CC1101 | Funktion | Pegelwandler | Arduino | Funktion | |
1 | VDD 3,3V | 17 | VDD 3,3V | ||
2 | GND | 4 | GND | ||
3 | SI | 3 | 10 | 14 | D11 |
4 | SCLK | 4 | 9 | 16 | D13 |
5 | SO | 15 | D12 | ||
6 | GDO2 | 5 | D02 | ||
7 | GDO0 | 6 | D03 | ||
8 | CSN | 5 | 8 | 13 | D10 |
12 | 27 | 5V | |||
11 | 29 | GND |
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.
1 2 3 | pi@fhemtest:/ $ ls -l /dev/serial/by-id total 0 lrwxrwxrwx 1 root root 13 Apr 22 18:48 usb-FTDI_FT232R_USB_UART_A9KNVLXL-if00-port0 -> ../../ttyUSB0 |
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.
1 2 3 4 | define CUL_IO1 CUL /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A9KNVLXL-if00-port0@38400 0000 attr CUL_IO1 hmId AABBCC attr CUL_IO1 rfmode HomeMatic attr CUL_IO1 room CUL_HM |
Wenn alles geklappt hat, sollte das neue Device unter den Räumen „Everything“ und „CUL_HM“ als „Initialized“ angezeigt werden.
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.
1 2 3 4 5 6 7 8 | define VCCU CUL_HM AABBCC attr VCCU IODev CUL_IO1 attr VCCU IOList CUL_IO1 attr VCCU expert 2_raw attr VCCU model CCU-FHEM attr VCCU room CUL_HM attr VCCU subType virtual attr VCCU webCmd virtual:update |
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.
1 | set VCCU hmPairForSec 300 |
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.
„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).
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.
1 | set HM_XXXXXX_Clima desired-temp 20.5 |
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.
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
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.
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
@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.
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?
Hi, ich habe genau das selbe Problem. Konntest du es irgendwie lösen?