Homematic

Aus TippvomTibb
Zur Navigation springen Zur Suche springen

Allgemeines

Homematic ist eine nach eigenen Angaben der Herstellerfirma eQ-3 AG (2007 aus der ELV Elektronik AG ausgeruendet) ein Whole-Home-System, also im Vergleich zu einer Standalone-Lösung nicht nur fuer eine oder wenige Funktionen der Hausautomation zustaendig, sondern erhebt den Anspruch alle im Haus (denkbaren) Sensoren/Aktoren zu integrieren.

Anmerkung

Ein Whole-Home-System Anspruch ist nach meinem Dafuerhalten aber Fluch und Segen zugleich. Meine Erfahrung mit Produkten der Firma ELV seit nunmehr 40 Jahren ist eher durchwachsen. Ich sage nur MAX!. Ich habe unzaehlige Bausaetze (>100) von ELV realisiert, aber von allen nur noch wenige im Einsatz (FS20). Mit Homematic habe ich mich daher von Anfang an schwer getan. Als Basis der Gebaeudeautomation habe ich KNX/EIB (Licht, Rolllaeden, Steckdosen, Markisen, ...) im Einsatz. Und dies ist (als Basis) uneingeschraenkt empfehlenswert. An dieser Stelle verweise ich auf meinen Artikel (...), sonst komme ich hier vom Thema ab.

Produkte

Die Produkte werden von ELV(eQ-3) nach ihren Vernetzungsart in 3 Gruppen eingeteilt:

  • Homematic (Funksystem 868 MHz)
  • HomematicWired (7 Produkte, nicht IPWired, sondern RS485 vernetzt)
  • HomematicIP (ca. 120 Produkte (250 Einzelartikel im Katalog))

Selbst auf der ELV-Seite kommt man da nur schwer raus wie man die Systeme kombiniert, oder wodurch sie sich unterscheiden.

Interessant könnte auch die Produktuntergruppe HomematicIPwired sein, da sie mit einem Aktorpreis von ca. 20 Euro/Kanal EIB/KNX-Aktoren deutlich unterbietet.

Anfang

Wo soll man anfangen? Ich sage mal mit der Standardantwort eines Anwaltes: Das kommt drauf an! Eigentlich gehoert diese Stellungnahme in den Artikel Gebauedeautomation An dieser Stelle zeige ich die Beweggruende, warum ich mich auf Homematic (erstmal nicht IP oder RS485) eingelassen habe.

Anlass

Konkret ging es bei mir um die Schaltung mehrerer Gartenleuchten und Pumpen. EIB/KNX per Kabel in den Garten zu legen ist aufgrund der fehlenden Protokollverschlüsselung ein ganz dumme Idee. Vor gar nicht all zulanger Zeit ging eine Meldung durch die Presse, wonach (clevere) Diebe den Schlüsselschalterkasten der Garagensteuerung geoeffnet hatten und dort ungehindert ueber das eingefuehrte EIB/KNX-Kabel erst gelauscht und dann aggiert (LoL) haben. Nachdem EIB/KNX RF eigentlich vom Markt verschwunden ist, kam auch eine Funkbruecke zur Unterverteilung im Garten nicht in Frage. Bevor ich aber ein Steuerkabel, fuer welches Protokoll auch immer, in die Unterverteilung ziehe, soll es erst einmal eine Funkloesung richten. In Frage kommen fuer mich allerdings nur nicht-proprietaere und bidirektionale Systeme.

Eine Anbindung ueber WLAN ist noch nicht vom Tisch. Aber selbst wenn die Funkbruecke per WLAN realisiert wird, habe ich das Problem wie gehe ich dann vom WLAN-Client (ESP, RASPI, ...) weiter auf die Aktoren und Sensoren. Ein direkte Anbindung ueber GPIO stoeszt schnell an ihre Grenzen. Alles in Hutschienenmodulen unterzubringen ist auch recht zeitaufwendig. Daher habe ich mich fuer die erste Implementierung fuer ein Homematic Modul (HM-LC-Sw4-DR) entschieden.

Noch was zur kryptischen Namensgebung (Vermutung, wenn jemand bei ELV was offizielles findet bitte melden):

  • HM Homematic
  • LC Aktoren? Load Control?
  • Sw4 Vierfach-Switch
  • DR DIN Rail Hutschiene

Realisierung

Jetzt benoetige ich natuerlich auch noch etwas um den Homematic-Schaltaktor anzusteuern (Funk 868 MHz). Eine CCU3 (seit 2018 149,00 Euro mit AIO CREATOR NEO Lizenz (CCU-Plugin)) mit einer deutlich hoeeren Performance als eine CCU2 (seit 2013 HomeMatic 103584 gebraucht ca. 50 Euro) sind fuer mich erst mal nicht von Interesse. Da ich nicht noch eine Zentrale (FHEM auf eigenem Server mit einigen Zusatzaufgaben (RS232-Gateway) und iobroker-Anbindung) haben moechte.

Da ich noch einige Raspis hier rumliegen habe, verfolge ich die HM-OCCU-SDK-Loesung oder gleich eine Basis- oder Container-Installation auf einem Linux-PC.

Software

Auf GitHub sind unzaehlige "Projekte" zum Ersatz oder Ergaenzung der CCU vorhanden. Ein Auswahlkriterium fuer mich ist oft die letzte Aktualisierung. Sollte diese x Jahre zurueckliegen lohnt ein naeherer Blick in der Regel nicht.

[Unter https://www.eq-3.de/Downloads/Software/Software_Development_Kit/Readme]ist nur noch das Readme zu finden. Der Download-Link ist tot. Typisch ELV!

Den Artikel zu einem notwendigen Funkmodul findet man hier. Die dort in der Infobox angegebenen Links nutze ich fuer die folgende Rezension.

Rezension

[1] HM-OCCU-SDK: http://www.eq-3.de/Downloads/Software/Software_Development_Kit/HM-OCCU-SDK-1.0.0.tgz (tot!)

[2] www.github.com: https://github.com/eq-3/occu (Als Ausgangsbasis geeignet)

[3] GitHub Hmcon: https://github.com/hobbyquaker/hmcon (tot?) Redmatic (evtl. verfolgen)

[4] HomeMatic-Forum: http://homematic-forum.de/forum/viewtopic.php?f=26&t=13303&start=30#p101875

[5] HomeMatic-Forum: http://homematic-forum.de/forum/viewtopic.php?f=26&t=18359

[6] LXCCU: http://www.lxccu.com/ wird nicht mehr weiter entwickelt -> Nachfolger YAHM (tot?) PiVCCU (evtl. verfolgen)

[7] LXC-Container: https://linuxcontainers.org/ siehe z.B. auch Docker. Hat erst mal nix mit Homematic (CCU) zu tun

[8] XML-RPC Dokumentation: http://www.eq-3.de/Downloads/Software/HM-CCU2-Firmware_Updates/Tutorials/HM_XmlRpc_API.pdf Link ist tot. Dokument veraltet, aber noch ueber Google zu finden.

[9] Handbuch HomeMatic WebUI: http://www.eq-3.de/Downloads/PDFs/Dokumentation_und_Tutorials/WebUI_Handbuch_V3.3_web.pdf Link ist tot. Dokument veraltet, aber noch ueber Google zu finden.

[10] HomeMatic Kurzleitfaden: http://www.eq-3.de/Downloads/PDFs/Dokumentation_und_Tutorials/Homematic_Systemkurzleitfaden_20131219_web.pdf Link ist tot. Dokument veraltet, aber noch ueber Google zu finden.

[11] Installationsanleitung und Konformitätserklärung: www.elv.de: Webcode #1385 Link zum selben Artikel ???

Was ich bei Gelegenheit/Bedarf mal noch genauer unter die Lupe nehme ist diese Seite

Mein erster Kandidat: RaspberryMatic

ACHTUNG hier ist noch alles richtig formatiert!

RaspberryMatic

Da ich eh Oracle VirtualBox auf meinem Rechner habe, ist das mein Startpunkt.

Die passende Downloadadresse ist diese (Stand 08/2021). Im Oracle VM VirtualBox Manager auf Datei/Appliance importieren und die .ova-Datei auswählen. Bis auf die fehlende USB-Unterstützung (temporaer disabled) war die Ausfuehrung sofort erfolgreich.

RaspberryMatic Startbildschirm.png

Der Zugriff per Browser auf die angegebene IP-Adresse (DHCP) auf die CCU-Oberflaeche hat funktioniert. Mein erster Eindruck - Naja.

Der Zugriff auf die Console (Alt+F2) mit root kein Passwort gelang ebenfalls.

Stoppen laesst sich das System z.B. mit poweroff auf der Console. Der shutdown-Befehl steht nicht zur Verfuegung.

An dieser Stelle habe ich mich dann erst einmal der Hardware gewidmet. Das Funkmodul (siehe Abschnitt Hardware) habe ich per USB an den Host-PC angeschlossen und ueber die Einstellungen zur VM unter USB durchgereicht.

Hier noch ein paar Hinweis, die mir beim Update auf RaspberryMatic-3.59.6.20211009 aufgefallen sind. Beim ersten Versuch hatte ich vergessen im 'Manager für virtuelle Medien' (Menue Datei) die Groesze des virtuellen Laufwerks zu erhoehen. Die von mir willkuerlich festgelegte Groesze von 32 GB erscheint mehr als ausreichend. Bei der Gelegenheit habe ich auch noch gerade ein Update von Virtual Box gemacht. Was sich aber als kleiner Zeitfresser entpuppte. Die Kernelmodule muessen dabei ebenfalls angepasst werden (sbin/vboxconfig), was bei mir zur Folge hatte, dass ich den Kernel und Sourcen gleich mit updaten musste. Dummerweise ist der Oracle VB-Extension-Pack nicht mit Yast/Zypper mitinstalliert worden, also noch auf zur Oracle-Site. Nachdem das alles erledigt war und das RaspberryMatic wieder lief lautete meine erste Frage, nachdem ich im WebUI nix von meinem Interface finden konnte: "Wie kann ich feststellen, ob mein RF-Bausatz funktioniert?"

Dies gelang mir nach langem Suchen durch das Programm rfd. Vorher unbedingt noch in Einstellungen Systemsteuerung Sicherheit SHH ssh einschalten.

root@homematic-raspi:/# rfd -h rfd [-f config file] [-c] [-l loglevel] [-s [address1 [address2 [...]]]] [-d]

   -d: run as daemon/service
   -f: use alternate config file
   -c: log to console instead of syslog
   -l: set log level
   -s: sniffing mode

root@homematic-raspi:/#

dmesg

[ 8.510001] random: crng init done [ 8.621862] udevd[244]: starting version 3.2.10 [ 8.632897] udevd[245]: starting eudev-3.2.10 [ 8.708307] usbcore: registered new interface driver usbserial_generic [ 8.708319] usbserial: USB Serial support registered for generic [ 8.710046] usbcore: registered new interface driver cp210x [ 8.710058] usbserial: USB Serial support registered for cp210x [ 8.710076] cp210x 2-1:1.0: cp210x converter detected [ 8.743043] usb 2-1: cp210x converter now attached to ttyUSB0

[Interface 0] Type = CCU2

  1. ComPortFile = /dev/mmd_bidcos

ComPortFile = /dev/ttyUSB0

  1. AccessFile = /dev/null
  2. ResetFile = /dev/null

Unter /etc/config_templates liegen ein paar MusterConfigDateien.

root@homematic-raspi:/usr/local/etc/config# rfd -c Config file is /etc/config/rfd.conf 2021/11/01 17:21:13.130 <Info> BidCoS-Service started 2021/11/01 17:21:13.130 <Info> XmlRpc Server is listening on TCP port 32001 2021/11/01 17:21:13.131 <Error> No BidCoS-Interface available 2021/11/01 17:21:13.131 <Warning> Error initializing interfaces root@homematic-raspi:/usr/local/etc/config#


Nachdem die /etc/config/rfd.conf angepasst hatte

rfd -c

ergab folgende Ausgabe sobald ich meinen Test-Aktor (HM-LC-Sw4-Ba-PCB) in den Anlernmodus versetzt habe.

2021/11/01 17:25:28.607 <Debug> Sysinfo received by PEQ0173236 while not in install mode:OEQ0097645 (HM-LC-Sw4-Ba-PCB)

Yeap. Mein Selbstbauemfaenger empfaengt was ;-))


Um Fehlern oder Nichtfunktion auf die Spur zu kommen lohnt sich auch immer ein Blick in die Log-Datei. Die man auch ueber die WebUI (Einstellungen Systemsteuerung Zentralen-Wartung Fehlerprotokoll) herunterladen kann.

root@homematic-raspi:/# find / -name "*.log" /var/log/neo_server_boot.log /var/log/hmserver.log /var/log/lighttpd-access.log /var/log/lighttpd-error.log /usr/local/addons/mediola/neo_server/node_modules/sodium/deps/libsodium/config.log root@homematic-raspi:/#


Ein Ueberblick ueber die Einstellmoeglichkeiten schadet auch selten.

root@homematic-raspi:/# find / -name "*.conf" /opt/mh/user/zabbix.conf /opt/mh/user/client.conf /opt/mh/user/nginx.conf /opt/mh/user/fastcgi.conf /var/etc/HMServer.conf /var/etc/rfd.conf /var/etc/lighttpd_proxy.conf /var/etc/lighttpd_auth.conf /var/etc/hs485d.conf /var/etc/resolv.conf /usr/local/etc/config/hs485d.conf /usr/local/etc/config/nut/nut.conf /usr/local/etc/config/nut/upssched.conf /usr/local/etc/config/nut/upsmon.conf /usr/local/etc/config/nut/upsd.conf /usr/local/etc/config/nut/ups.conf /usr/local/etc/config/snmp/snmptrapd-user.conf /usr/local/etc/config/snmp/snmpd-user.conf /usr/local/etc/config/firewall.conf /usr/local/etc/config/rfd.conf /usr/local/etc/config/addons/mh/nginx.conf /usr/local/etc/config/addons/mh/zabbix.conf /usr/local/etc/config/addons/mh/client.conf /usr/local/etc/config/addons/mh/fastcgi.conf /usr/lib/node_modules/npm/node_modules/extsprintf/jsl.node.conf /usr/share/fontconfig/conf.avail/10-hinting-full.conf /usr/share/fontconfig/conf.avail/20-unhint-small-dejavu-sans-mono.conf /usr/share/fontconfig/conf.avail/10-autohint.conf /usr/share/fontconfig/conf.avail/40-nonlatin.conf /usr/share/fontconfig/conf.avail/45-generic.conf /usr/share/fontconfig/conf.avail/45-latin.conf /usr/share/fontconfig/conf.avail/11-lcdfilter-legacy.conf /usr/share/fontconfig/conf.avail/10-sub-pixel-vrgb.conf /usr/share/fontconfig/conf.avail/51-local.conf /usr/share/fontconfig/conf.avail/10-sub-pixel-bgr.conf /usr/share/fontconfig/conf.avail/90-synthetic.conf /usr/share/fontconfig/conf.avail/70-yes-bitmaps.conf /usr/share/fontconfig/conf.avail/20-unhint-small-vera.conf /usr/share/fontconfig/conf.avail/10-no-sub-pixel.conf /usr/share/fontconfig/conf.avail/65-khmer.conf /usr/share/fontconfig/conf.avail/69-unifont.conf /usr/share/fontconfig/conf.avail/65-fonts-persian.conf /usr/share/fontconfig/conf.avail/30-metric-aliases.conf /usr/share/fontconfig/conf.avail/60-generic.conf /usr/share/fontconfig/conf.avail/57-dejavu-sans.conf /usr/share/fontconfig/conf.avail/60-latin.conf /usr/share/fontconfig/conf.avail/10-hinting-none.conf /usr/share/fontconfig/conf.avail/49-sansserif.conf /usr/share/fontconfig/conf.avail/11-lcdfilter-default.conf /usr/share/fontconfig/conf.avail/10-sub-pixel-rgb.conf /usr/share/fontconfig/conf.avail/57-dejavu-sans-mono.conf /usr/share/fontconfig/conf.avail/70-no-bitmaps.conf /usr/share/fontconfig/conf.avail/10-scale-bitmap-fonts.conf /usr/share/fontconfig/conf.avail/10-unhinted.conf /usr/share/fontconfig/conf.avail/50-user.conf /usr/share/fontconfig/conf.avail/10-sub-pixel-vbgr.conf /usr/share/fontconfig/conf.avail/11-lcdfilter-light.conf /usr/share/fontconfig/conf.avail/57-dejavu-serif.conf /usr/share/fontconfig/conf.avail/80-delicious.conf /usr/share/fontconfig/conf.avail/25-unhint-nonlatin.conf /usr/share/fontconfig/conf.avail/20-unhint-small-dejavu-serif.conf /usr/share/fontconfig/conf.avail/65-nonlatin.conf /usr/share/fontconfig/conf.avail/10-hinting-medium.conf /usr/share/fontconfig/conf.avail/20-unhint-small-dejavu-sans.conf /usr/share/fontconfig/conf.avail/10-hinting-slight.conf /usr/share/dbus-1/session.conf /usr/share/dbus-1/system.conf /www/api/methods.conf /etc/rega.conf /etc/smartd.conf /etc/ups.conf /etc/udev/udev.conf /etc/nut.conf /etc/upsd.conf /etc/crRFD.conf /etc/fonts/conf.d/40-nonlatin.conf /etc/fonts/conf.d/45-generic.conf /etc/fonts/conf.d/45-latin.conf /etc/fonts/conf.d/51-local.conf /etc/fonts/conf.d/90-synthetic.conf /etc/fonts/conf.d/20-unhint-small-vera.conf /etc/fonts/conf.d/69-unifont.conf /etc/fonts/conf.d/65-fonts-persian.conf /etc/fonts/conf.d/30-metric-aliases.conf /etc/fonts/conf.d/60-generic.conf /etc/fonts/conf.d/60-latin.conf /etc/fonts/conf.d/49-sansserif.conf /etc/fonts/conf.d/10-scale-bitmap-fonts.conf /etc/fonts/conf.d/50-user.conf /etc/fonts/conf.d/80-delicious.conf /etc/fonts/conf.d/65-nonlatin.conf /etc/fonts/conf.d/10-hinting-slight.conf /etc/fonts/fonts.conf /etc/nsswitch.conf /etc/bluetooth/main.conf /etc/config_templates/nut/ups.conf /etc/config_templates/nut/nut.conf /etc/config_templates/nut/upsd.conf /etc/config_templates/nut/upssched.conf /etc/config_templates/nut/upsmon.conf /etc/config_templates/crRFD.conf /etc/config_templates/wpa_supplicant.conf /etc/config_templates/multimacd.conf /etc/config_templates/rfd.conf /etc/config_templates/snmp/snmptrapd-user.conf /etc/config_templates/snmp/snmpd-user.conf /etc/lighttpd/conf.d/cgi.conf /etc/lighttpd/conf.d/proxy_httpsredirect.conf /etc/lighttpd/conf.d/proxy_normal.conf /etc/lighttpd/conf.d/access_log.conf /etc/lighttpd/conf.d/mime.conf /etc/lighttpd/conf.d/debug.conf /etc/lighttpd/conf.d/proxy.conf /etc/lighttpd/conf.d/access.conf /etc/lighttpd/conf.d/dirlisting.conf /etc/lighttpd/conf.d/auth.conf /etc/lighttpd/conf.d/setenv.conf /etc/lighttpd/conf.d/sslsettings.conf /etc/lighttpd/modules.conf /etc/lighttpd/lighttpd.conf /etc/upssched.conf /etc/logrotate.d/syslogd.conf /etc/sysctl.conf /etc/resolv.conf /etc/upsmon.conf /etc/mke2fs.conf /etc/ld.so.conf.d/lib32.conf /etc/ld.so.conf.d/libc.conf /etc/logrotate.conf /etc/multimacd.conf /etc/chrony.conf /etc/ifplugd/ifplugd.conf /etc/HMServer.conf /etc/usbmount/usbmount.conf /etc/snmp/snmptrapd-global.conf /etc/snmp/snmpd-global.conf /etc/dbus-1/system.d/wpa_supplicant.conf /etc/dbus-1/system.d/bluetooth.conf /etc/dbus-1/session.conf /etc/dbus-1/system.conf /etc/ld.so.conf /etc/xinetd.conf root@homematic-raspi:/#


root@homematic-raspi:~# /bin/eq3configcmd update-coprocessor -p /dev/ttyUSB0 -t HM-MOD-UART -c -v 2021/11/01 17:50:55.367 <Info> Version: 1.4.1

root@homematic-raspi:~#


root@homematic-raspi:~# /bin/eq3configcmd update-coprocessor -p /dev/ttyUSB0 -t HM-MOD-UART -u -f -d /firmware/HM-MOD-UART -c -l 0 2021/11/01 17:53:15.538 <Debug> firmware filename is: dualcopro_si1002_update_blhm.eq3

2021/11/01 17:53:17.075 <Debug> () CCU2CommControllerMod::handleIdentifyEvent(): Coprocessor is in application. 2021/11/01 17:53:17.075 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:17.075 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:17.075 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:17.076 <Debug> () CCU2CommControllerMod::handleIdentifyEvent(): Coprocessor is in application. 2021/11/01 17:53:17.079 <Debug> deliver firmware... 2021/11/01 17:53:17.161 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:17.161 <Debug> () CCU2CommControllerMod::handleIdentifyEvent(): Coprocessor is in bootloader. 2021/11/01 17:53:20.581 <Info> CCU2CommControllerMod::sendSystemCommand(): failed 2021/11/01 17:53:20.583 CoprocessorUpdate::startBootloader() 2021/11/01 17:53:20.585 <Debug> CoprocessorUpdate::startBootloader():Coprocessor entered bootloader. 2021/11/01 17:53:21.523 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:21.523 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:21.523 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:22.090 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:22.090 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:22.090 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:22.649 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:22.650 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:22.650 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:23.210 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:23.210 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:23.211 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:23.769 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:23.770 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:23.770 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:24.329 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:24.329 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:24.329 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:24.885 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:24.885 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:24.885 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:25.448 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:25.448 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:25.448 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:26.007 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:26.007 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:26.007 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:26.568 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:26.568 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:26.568 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:27.125 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:27.127 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:27.130 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:27.683 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:27.684 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:27.684 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:28.244 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:28.244 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:28.244 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:28.802 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:28.802 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:28.802 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:29.361 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:29.362 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:29.362 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:29.921 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:29.921 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:29.921 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:30.478 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:30.478 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:30.478 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:31.040 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:31.041 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:31.041 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:31.600 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:31.600 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:31.601 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:32.160 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:32.160 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:32.161 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:32.719 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:32.719 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:32.719 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:33.279 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:33.279 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:33.280 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:33.835 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:33.836 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:33.836 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:34.395 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:34.396 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:34.397 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:34.952 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:34.952 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:34.952 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:35.512 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:35.512 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:35.512 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:36.072 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:36.072 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:36.072 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:36.632 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:36.632 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:36.633 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:37.188 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:37.188 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:37.189 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:37.746 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:37.746 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:37.746 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:38.305 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:38.305 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:38.305 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:38.867 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:38.867 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:38.867 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:39.425 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:39.425 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:39.425 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:39.984 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:39.985 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:39.985 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:40.540 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:40.541 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:40.541 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:41.100 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:41.100 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:41.100 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:41.656 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:41.656 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:41.656 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:42.217 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:42.217 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:42.217 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:42.777 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:42.777 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:42.777 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:43.334 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:43.334 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:43.334 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:43.891 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:43.891 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:43.891 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:44.448 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:44.449 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:44.449 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:45.005 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:45.005 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:45.005 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:45.565 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:45.565 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:45.565 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:46.123 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:46.124 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:46.124 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:46.682 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:46.683 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:46.683 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:47.502 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:47.502 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:47.502 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:47.828 <Debug> CCU2CoprocessorCommandMod::CCU2CoprocessorCommandMod(): System frame 2021/11/01 17:53:47.828 <Debug> CCU2CoprocessorCommandMod::isResponseStatusOk(): System status OK 2021/11/01 17:53:47.828 <Debug> CCU2CommControllerMod::handleIncomingResponse() System response OK 2021/11/01 17:53:47.828 <Info> Firmwareupdate successfull

root@homematic-raspi:~#

Unbedingt darauf achten, das der rfd nicht laeuft.

FHEM

(TODO) https://gettoweb.de/haus/fhem-ungepairtes-homatic-device-hm-ou-cfm-tw-flashen/

Hardware

Allgemein

Es gibt 2 breite 8-polige Funkmodule mit SPI-Anschluss:

   TRX868-TI mit CC1101 von Texas Instruments, den Chip unterstützt die AskSinPP
   TRX868-SL mit einem Chip von Silicon Labs

Außerdem 2 schmale 8-polige Funkmodule mit SPI-Anschluss:

   TRX868-TFK-TI mit CC1101 von Texas Instruments
   TRX868-TFK-SL mit einem Chip von Silicon Labs

Dann gibt es die 6-poligen Funkmodule mit UART:

   HM-MOD-UART(-AW-SH-2) als Bestandteil des HM-MOD-RPI-PCB
   und noch mind. eine neuere Version im RPI-RF-MOD

HM-MOD-RPI-PCB

HM-MOD-RPI-PCB.jpg
PCB mit TRX1 Modul
1 3,3V
2 NC
3 NC
4 NC
5 NC
6 GND
7 NC
8 RX
9 GND
10 TX
11 (Prog)
12 Reset

Da diesen Modul fuer den Raspi gedacht ist, entspricht das Anschlusslayout dem Extport des Raspi.

Raspberry Pi GPIO.png

Der rote Rahmen ist das Layout des Moduls.

Das Modul kann wohl auch mit einer Firmware neu bestückt werden. Die Firmware-Versionen befinden sich scheinbar unter Link Den Flashvorgang werde ich dann hier beschreiben.


HM-MOD-RPI-PCB mit USB


USB mit CP2102

Das IC CP2102 (SINGLE-CHIP USB-TO-UART BRIDGE) hat einen integrierten 5V to 3.3V Spannungsregler mit einer maximalen Strombelastbarkeit von 100 mA!

CP2102.jpg CP2102 Unterseite.jpg

Den Pin 1 erkennt man auf einem PCB in der Regel an einem eckigen Pad. In einigen Faellen ist der Pin 1 mit einem kleinen Dreieck/Punkt markiert. Im besten Fall steht eine 1 daran.

CP2102 Modul
1 3,3V
2 RST
3 TXD
4 RXD
5 GND
6 5V

Die GND von Pin 6 und 9 des HM-MOD-RPI-PCB ist nicht notwendig. Man beachte die "Ueberkreuz"-Beschaltung der Transmit- und Receive-Anschluesse der beiden Module. HM-MOD-RPI-PCB-USB.jpg