Raspberry mit CUL-Stick

Projekt Raspberry Pi: Heizungssteuerung per CUL und FHEM – Part 7

Weiter geht es in Sachen Home-Automation. Ich habe im letzten Beitrag beschrieben, wie ich meine Intertechno IT-1500 mit dem CUL-Stick von Busware angesteuert habe. Dort wurde auch die grundlegende fhem.cfg erklärt. Damit nun die HomeMatic-Komponenten angesteuert werden können, brauchen wir aber ein paar Änderungen in der Konfiguration.

Da es wirklich nicht besonders schön wäre alle Geräte per Hand in die Konfiguration zu schreiben, nutzen wir das automatische Pairing. In diesem Modus werden alle gefunden Komponenten automatisch in die fhem.cfg aufgenommen. Da das aber eventuell in einer sehr unaufgeräumten Datei enden kann, sollte man sich vorher ein Backup der fhem.cfg anlegen.

define CUL1 CUL /dev/ttyACM0@38400 1234
attr CUL1 rfmode HomeMatic

define autocreate autocreate
attr autocreate autosave 1
attr autocreate filelog ./log/%NAME-%Y.log

Nach einem Neustart von FHEM muss man dann folgenden Befehl im Frontend eingeben.

set CUL1 hmPairForSec 600

Damit wird das Pairing gestartet. Dieser Wert darf auf keinen Fall in die Config eingetragen werden – damit kommt FHEM irgendwie nicht so klar und startet nicht mehr.

Ab diesem Moment hat man also 600 Sekunden zeit das Pairing aller Geräte durchzuführen. Also bin ich zu meinen beiden Thermostaten gelaufen und habe bei beiden die entsprechende Taste gedrückt um das Pairing zu starten. Nach wenigen Sekunden erschien „AC“ auf dem Display, was wohl etwas positives ist (wofür es genau steht, kann ich nicht sagen).

Danach wurden jede Menge Einträge in meiner fhem.cfg angelegt:

define CUL_HM_HM_CC_RT_DN_XXXX99 CUL_HM XXXX99
attr CUL_HM_HM_CC_RT_DN_XXXX99 .devInfo 00FFFF
attr CUL_HM_HM_CC_RT_DN_XXXX99 .stc 59
attr CUL_HM_HM_CC_RT_DN_XXXX99 actCycle 000:10
attr CUL_HM_HM_CC_RT_DN_XXXX99 actStatus alive
attr CUL_HM_HM_CC_RT_DN_XXXX99 autoReadReg 4_reqStatus
attr CUL_HM_HM_CC_RT_DN_XXXX99 expert 2_full
attr CUL_HM_HM_CC_RT_DN_XXXX99 firmware 1.1
attr CUL_HM_HM_CC_RT_DN_XXXX99 model HM-CC-RT-DN
attr CUL_HM_HM_CC_RT_DN_XXXX99 peerIDs 
attr CUL_HM_HM_CC_RT_DN_XXXX99 room CUL_HM
attr CUL_HM_HM_CC_RT_DN_XXXX99 serialNr KEQ072XXXX
attr CUL_HM_HM_CC_RT_DN_XXXX99 subType thermostat
attr CUL_HM_HM_CC_RT_DN_XXXX99 webCmd getConfig:burstXmit
define FileLog_CUL_HM_HM_CC_RT_DN_XXXX99 FileLog ./log/CUL_HM_HM_CC_RT_DN_XXXX99-%Y.log CUL_HM_HM_CC_RT_DN_XXXX99
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX99 logtype text
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX99 room CUL_HM
define CUL_HM_HM_CC_RT_DN_XXXX99_Weather CUL_HM XXXX9901
attr CUL_HM_HM_CC_RT_DN_XXXX99_Weather expert 
attr CUL_HM_HM_CC_RT_DN_XXXX99_Weather model HM-CC-RT-DN
attr CUL_HM_HM_CC_RT_DN_XXXX99_Weather peerIDs 
attr CUL_HM_HM_CC_RT_DN_XXXX99_Weather room CUL_HM
define FileLog_CUL_HM_HM_CC_RT_DN_XXXX99_Weather FileLog ./log/CUL_HM_HM_CC_RT_DN_XXXX99_Weather-%Y.log CUL_HM_HM_CC_RT_DN_XXXX99_Weather
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX99_Weather logtype text
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX99_Weather room CUL_HM
define CUL_HM_HM_CC_RT_DN_XXXX99_Climate CUL_HM XXXX9902
attr CUL_HM_HM_CC_RT_DN_XXXX99_Climate expert 
attr CUL_HM_HM_CC_RT_DN_XXXX99_Climate model HM-CC-RT-DN
attr CUL_HM_HM_CC_RT_DN_XXXX99_Climate peerIDs 
attr CUL_HM_HM_CC_RT_DN_XXXX99_Climate room CUL_HM
define FileLog_CUL_HM_HM_CC_RT_DN_XXXX99_Climate FileLog ./log/CUL_HM_HM_CC_RT_DN_XXXX99_Climate-%Y.log CUL_HM_HM_CC_RT_DN_XXXX99_Climate
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX99_Climate logtype text
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX99_Climate room CUL_HM
define CUL_HM_HM_CC_RT_DN_XXXX99_WindowRec CUL_HM XXXX9903
attr CUL_HM_HM_CC_RT_DN_XXXX99_WindowRec expert 
attr CUL_HM_HM_CC_RT_DN_XXXX99_WindowRec model HM-CC-RT-DN
attr CUL_HM_HM_CC_RT_DN_XXXX99_WindowRec peerIDs 
attr CUL_HM_HM_CC_RT_DN_XXXX99_WindowRec room CUL_HM
attr CUL_HM_HM_CC_RT_DN_XXXX99_WindowRec stateFormat last:trigLast
define FileLog_CUL_HM_HM_CC_RT_DN_XXXX99_WindowRec FileLog ./log/CUL_HM_HM_CC_RT_DN_XXXX99_WindowRec-%Y.log CUL_HM_HM_CC_RT_DN_XXXX99_WindowRec
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX99_WindowRec logtype text
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX99_WindowRec room CUL_HM
define CUL_HM_HM_CC_RT_DN_XXXX99_ClimRT_tr CUL_HM XXXX9904
attr CUL_HM_HM_CC_RT_DN_XXXX99_ClimRT_tr expert 
attr CUL_HM_HM_CC_RT_DN_XXXX99_ClimRT_tr model HM-CC-RT-DN
attr CUL_HM_HM_CC_RT_DN_XXXX99_ClimRT_tr peerIDs 
attr CUL_HM_HM_CC_RT_DN_XXXX99_ClimRT_tr room CUL_HM
define FileLog_CUL_HM_HM_CC_RT_DN_XXXX99_ClimRT_tr FileLog ./log/CUL_HM_HM_CC_RT_DN_XXXX99_ClimRT_tr-%Y.log CUL_HM_HM_CC_RT_DN_XXXX99_ClimRT_tr
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX99_ClimRT_tr logtype text
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX99_ClimRT_tr room CUL_HM
define CUL_HM_HM_CC_RT_DN_XXXX99_ClimaTeam CUL_HM XXXX9905
attr CUL_HM_HM_CC_RT_DN_XXXX99_ClimaTeam expert 
attr CUL_HM_HM_CC_RT_DN_XXXX99_ClimaTeam model HM-CC-RT-DN
attr CUL_HM_HM_CC_RT_DN_XXXX99_ClimaTeam peerIDs 
attr CUL_HM_HM_CC_RT_DN_XXXX99_ClimaTeam room CUL_HM
define FileLog_CUL_HM_HM_CC_RT_DN_XXXX99_ClimaTeam FileLog ./log/CUL_HM_HM_CC_RT_DN_XXXX99_ClimaTeam-%Y.log CUL_HM_HM_CC_RT_DN_XXXX99_ClimaTeam
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX99_ClimaTeam logtype text
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX99_ClimaTeam room CUL_HM
define CUL_HM_HM_CC_RT_DN_XXXX99_remote CUL_HM XXXX9906
attr CUL_HM_HM_CC_RT_DN_XXXX99_remote expert 
attr CUL_HM_HM_CC_RT_DN_XXXX99_remote model HM-CC-RT-DN
attr CUL_HM_HM_CC_RT_DN_XXXX99_remote peerIDs 
attr CUL_HM_HM_CC_RT_DN_XXXX99_remote room CUL_HM
define FileLog_CUL_HM_HM_CC_RT_DN_XXXX99_remote FileLog ./log/CUL_HM_HM_CC_RT_DN_XXXX99_remote-%Y.log CUL_HM_HM_CC_RT_DN_XXXX99_remote
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX99_remote logtype text
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX99_remote room CUL_HM
define ActionDetector CUL_HM 000000
attr ActionDetector actCycle 600
attr ActionDetector event-on-change-reading .*
attr ActionDetector room CUL_HM
define FileLog_ActionDetector FileLog ./log/ActionDetector-%Y.log ActionDetector
attr FileLog_ActionDetector logtype text
attr FileLog_ActionDetector room CUL_HM

define CUL_HM_HM_CC_RT_DN_XXXX40 CUL_HM XXXX40
attr CUL_HM_HM_CC_RT_DN_XXXX40 .devInfo 00FFFF
attr CUL_HM_HM_CC_RT_DN_XXXX40 .stc 59
attr CUL_HM_HM_CC_RT_DN_XXXX40 actCycle 000:10
attr CUL_HM_HM_CC_RT_DN_XXXX40 actStatus alive
attr CUL_HM_HM_CC_RT_DN_XXXX40 firmware 1.1
attr CUL_HM_HM_CC_RT_DN_XXXX40 model HM-CC-RT-DN
attr CUL_HM_HM_CC_RT_DN_XXXX40 room CUL_HM
attr CUL_HM_HM_CC_RT_DN_XXXX40 serialNr KEQ072XXXX
attr CUL_HM_HM_CC_RT_DN_XXXX40 subType thermostat
define FileLog_CUL_HM_HM_CC_RT_DN_XXXX40 FileLog ./log/CUL_HM_HM_CC_RT_DN_XXXX40-%Y.log CUL_HM_HM_CC_RT_DN_XXXX40
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX40 logtype text
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX40 room CUL_HM
define CUL_HM_HM_CC_RT_DN_XXXX40_Weather CUL_HM XXXX4001
attr CUL_HM_HM_CC_RT_DN_XXXX40_Weather model HM-CC-RT-DN
attr CUL_HM_HM_CC_RT_DN_XXXX40_Weather peerIDs 
attr CUL_HM_HM_CC_RT_DN_XXXX40_Weather room CUL_HM
define FileLog_CUL_HM_HM_CC_RT_DN_XXXX40_Weather FileLog ./log/CUL_HM_HM_CC_RT_DN_XXXX40_Weather-%Y.log CUL_HM_HM_CC_RT_DN_XXXX40_Weather
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX40_Weather logtype text
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX40_Weather room CUL_HM
define CUL_HM_HM_CC_RT_DN_XXXX40_Climate CUL_HM XXXX4002
attr CUL_HM_HM_CC_RT_DN_XXXX40_Climate model HM-CC-RT-DN
attr CUL_HM_HM_CC_RT_DN_XXXX40_Climate room CUL_HM
define FileLog_CUL_HM_HM_CC_RT_DN_XXXX40_Climate FileLog ./log/CUL_HM_HM_CC_RT_DN_XXXX40_Climate-%Y.log CUL_HM_HM_CC_RT_DN_XXXX40_Climate
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX40_Climate logtype text
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX40_Climate room CUL_HM
define CUL_HM_HM_CC_RT_DN_XXXX40_WindowRec CUL_HM XXXX4003
attr CUL_HM_HM_CC_RT_DN_XXXX40_WindowRec model HM-CC-RT-DN
attr CUL_HM_HM_CC_RT_DN_XXXX40_WindowRec room CUL_HM
define FileLog_CUL_HM_HM_CC_RT_DN_XXXX40_WindowRec FileLog ./log/CUL_HM_HM_CC_RT_DN_XXXX40_WindowRec-%Y.log CUL_HM_HM_CC_RT_DN_XXXX40_WindowRec
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX40_WindowRec logtype text
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX40_WindowRec room CUL_HM
define CUL_HM_HM_CC_RT_DN_XXXX40_ClimRT_tr CUL_HM XXXX4004
attr CUL_HM_HM_CC_RT_DN_XXXX40_ClimRT_tr model HM-CC-RT-DN
attr CUL_HM_HM_CC_RT_DN_XXXX40_ClimRT_tr room CUL_HM
define FileLog_CUL_HM_HM_CC_RT_DN_XXXX40_ClimRT_tr FileLog ./log/CUL_HM_HM_CC_RT_DN_XXXX40_ClimRT_tr-%Y.log CUL_HM_HM_CC_RT_DN_XXXX40_ClimRT_tr
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX40_ClimRT_tr logtype text
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX40_ClimRT_tr room CUL_HM
define CUL_HM_HM_CC_RT_DN_XXXX40_ClimaTeam CUL_HM XXXX4005
attr CUL_HM_HM_CC_RT_DN_XXXX40_ClimaTeam model HM-CC-RT-DN
attr CUL_HM_HM_CC_RT_DN_XXXX40_ClimaTeam room CUL_HM
define FileLog_CUL_HM_HM_CC_RT_DN_XXXX40_ClimaTeam FileLog ./log/CUL_HM_HM_CC_RT_DN_XXXX40_ClimaTeam-%Y.log CUL_HM_HM_CC_RT_DN_XXXX40_ClimaTeam
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX40_ClimaTeam logtype text
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX40_ClimaTeam room CUL_HM
define CUL_HM_HM_CC_RT_DN_XXXX40_remote CUL_HM XXXX4006
attr CUL_HM_HM_CC_RT_DN_XXXX40_remote model HM-CC-RT-DN
attr CUL_HM_HM_CC_RT_DN_XXXX40_remote room CUL_HM
define FileLog_CUL_HM_HM_CC_RT_DN_XXXX40_remote FileLog ./log/CUL_HM_HM_CC_RT_DN_XXXX40_remote-%Y.log CUL_HM_HM_CC_RT_DN_XXXX40_remote
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX40_remote logtype text
attr FileLog_CUL_HM_HM_CC_RT_DN_XXXX40_remote room CUL_HM

Nach dem Pairing sollte die diese Zeile in der Config wieder auskommentiert werden:

attr autocreate autosave 1

Das waren natürlich eine Menge Informationen und die Namen sind auch nicht besonders sprechend (ich habe die Geräte-IDs für diesen Beitrag aus Sicherheitsgründen durch XXXX ersetzt). Da ich bisher weder Fensterkontakte, Thermometer oder andere Geräte im Einsatz habe, konnte ich das Ganze gut kürzen:

define WZ_Fenster CUL_HM XXXX99
attr WZ_Fenster .devInfo 00FFFF
attr WZ_Fenster .stc 59
attr WZ_Fenster actCycle 000:10
attr WZ_Fenster actStatus alive
attr WZ_Fenster autoReadReg 4_reqStatus
attr WZ_Fenster expert 2_full
attr WZ_Fenster firmware 1.1
attr WZ_Fenster model HM-CC-RT-DN
attr WZ_Fenster peerIDs 
attr WZ_Fenster room Wohnzimmer
attr WZ_Fenster serialNr KEQ072XXXX
attr WZ_Fenster subType thermostat
attr WZ_Fenster webCmd getConfig:burstXmit
define FileLog_WZ_Fenster FileLog ./log/WZ_Fenster-%Y.log WZ_Fenster
attr FileLog_WZ_Fenster logtype text
attr FileLog_WZ_Fenster room Wohnzimmer
define WZ_Fenster_ClimRT_tr CUL_HM XXXX9904
attr WZ_Fenster_ClimRT_tr expert 
attr WZ_Fenster_ClimRT_tr model HM-CC-RT-DN
attr WZ_Fenster_ClimRT_tr peerIDs 
attr WZ_Fenster_ClimRT_tr room Wohnzimmer
define FileLog_WZ_Fenster_ClimRT_tr FileLog ./log/WZ_Fenster_ClimRT_tr-%Y.log WZ_Fenster_ClimRT_tr
attr FileLog_WZ_Fenster_ClimRT_tr logtype text
attr FileLog_WZ_Fenster_ClimRT_tr room Wohnzimmer

define WZ_Klein CUL_HM XXXX40
attr WZ_Klein .devInfo 00FFFF
attr WZ_Klein .stc 59
attr WZ_Klein actCycle 000:10
attr WZ_Klein actStatus alive
attr WZ_Klein firmware 1.1
attr WZ_Klein model HM-CC-RT-DN
attr WZ_Klein room Wohnzimmer
attr WZ_Klein serialNr KEQ072XXXX
attr WZ_Klein subType thermostat
define FileLog_WZ_Klein FileLog ./log/WZ_Klein-%Y.log WZ_Klein
attr FileLog_WZ_Klein logtype text
attr FileLog_WZ_Klein room Wohnzimmer
define WZ_Klein_ClimRT_tr CUL_HM XXXX4004
attr WZ_Klein_ClimRT_tr model HM-CC-RT-DN
attr WZ_Klein_ClimRT_tr room Wohnzimmer
define FileLog_WZ_Klein_ClimRT_tr FileLog ./log/WZ_Klein_ClimRT_tr-%Y.log WZ_Klein_ClimRT_tr
attr FileLog_WZ_Klein_ClimRT_tr logtype text
attr FileLog_WZ_Klein_ClimRT_tr room Wohnzimmer

define ActionDetector CUL_HM 000000
attr ActionDetector actCycle 600
attr ActionDetector event-on-change-reading .*
attr ActionDetector room Wohnzimmer
define FileLog_ActionDetector FileLog ./log/ActionDetector-%Y.log ActionDetector
attr FileLog_ActionDetector logtype text
attr FileLog_ActionDetector room Wohnzimmer

Damit war die Konfiguration eigentlich auch schon abgeschlossen. Nun tauchen die Geräte in meinem entsprechenden Raum im FHEM auf und ich kann die Temperatur jederzeit manuell ändern.

HomeMatic-Thermostate FHEM

Sehr cool ist die Funktion, dass man aus den „ClimRT_tr“-logs auch Charts erstellen kann. Diese kann man sich auch ganz bequem über die Oberfläche zusammenklicken. Hier mal ein Beispiel:

FHEM-Chart (Konfiguration-Heizung)

Sobald ein paar Log-Daten gesammelt wurden, sieht es im FHEM dann so aus:

FHEM-Heizungschart

In diesem Beispiel habe ich die folgenden drei Werte eingebunden:

  • Ventil: Wie weit wurde das Heizungsventil vom Thermostat geöffnet (in Prozent)
  • Temperatur: Die aktuelle Temperatur im Raum
  • Zieltemperatur: Wie warm soll es sein?

Wie man sieht, schien heute über den Tag die Sonne – das heißt, dass die Heizung irgendwann garnicht gebraucht wurde um die Temperatur zu halten – im Gegenteil – es wurde sogar noch wärmer.

Momentan werden noch die Zeitpläne vom Thermostat genutzt – das geht natürlich auch per FHEM. Damit beschäftige ich mich aber erst im nächsten Beitrag. Als Freund von Statistiken werde ich mich sicher noch tiefer in das Thema begeben. Aber einfacher geht es wirklich nicht.

Viel Erfolg!


Beitrag veröffentlicht

in

, , , ,

von

Schlagwörter: