FHEM

Heizungssteuerung

Die Heizungssteuerung ist der Kern dieser Hausautomatisierung: Funk-Heizkörperthermostate regeln jeden Raum einzeln, abhängig davon, ob ein Fenster geöffnet ist, ob jemand anwesend ist und zu welcher Tageszeit geheizt wird. Dadurch läuft die Heizung nur dann auf Komfort, wenn es wirklich sinnvoll ist – das spart spürbar Energie. Eingesetzt werden zwei Thermostat-Typen, die FHEM über zwei Funk-Empfänger (CUL) ansteuert. Alle Namen, Adressen und Seriennummern auf dieser Seite sind generische Platzhalter.

Funk-Empfänger (IO-Devices) einrichten

Die Thermostate funken in zwei unterschiedlichen Protokollen. Deshalb existieren zwei CUL-Sticks: einer im HomeMatic-Modus, einer im MAX!-Modus. Jeder Stick wird über seine eindeutige USB-Kennung eingebunden, damit die Zuordnung auch nach einem Neustart stabil bleibt.

bashKlick markiert alles · Strg + C
define CUL_HomeMatic CUL /dev/serial/by-id/usb-XXXX-if00@38400 1232
attr  CUL_HomeMatic rfmode HomeMatic
attr  CUL_HomeMatic hmId AABBCC

define CUL_MAX CUL /dev/serial/by-id/usb-YYYY-if00@38400 4444
attr  CUL_MAX rfmode MAX

Für die MAX!-Geräte wird zusätzlich ein CUL_MAX-Gerät als Vermittler angelegt. Es übernimmt das Pairing und die Kommunikation mit den MAX!-Komponenten:

bashKlick markiert alles · Strg + C
define cm CUL_MAX 123456
attr  cm IODev CUL_MAX

HomeMatic-Thermostat einbinden (HM-CC-RT-DN)

Nach dem Anlernen erzeugt FHEM für ein HomeMatic-Thermostat mehrere Kanäle (Channels). Wichtig sind das Hauptgerät und der Kanal _Clima, über den die Solltemperatur gesteuert wird. Die übrigen Kanäle (_Weather, _WindowRec, _ClimaTeam …) entstehen automatisch.

bashKlick markiert alles · Strg + C
define HZ_Wohnzimmer CUL_HM 7132CB
attr  HZ_Wohnzimmer IODev CUL_HomeMatic
attr  HZ_Wohnzimmer model HM-CC-RT-DN
attr  HZ_Wohnzimmer subType thermostat
attr  HZ_Wohnzimmer autoReadReg 4_reqStatus
attr  HZ_Wohnzimmer room Wohnzimmer

Die Solltemperatur wird über den Clima-Kanal gesetzt. Da batteriebetriebene HomeMatic-Thermostate nur in kurzen Funkfenstern empfangen, muss der Befehl mit burstXmit aktiv an das Gerät „geweckt" und übertragen werden:

bashKlick markiert alles · Strg + C
set HZ_Wohnzimmer_Clima controlManu 21.0
set HZ_Wohnzimmer burstXmit

Soll das Thermostat wieder seinem internen Wochenprogramm folgen, wird der Automatikmodus aktiviert:

bashKlick markiert alles · Strg + C
set HZ_Wohnzimmer_Clima controlMode auto
set HZ_Wohnzimmer burstXmit

Zwei Thermostate in einem Raum koppeln

Große Räume haben oft zwei Heizkörper. Damit beide dieselbe gemessene Raumtemperatur verwenden und synchron regeln, lassen sie sich als Team verbinden. Dazu wird der _ClimaTeam-Kanal des einen Thermostats mit dem _Clima-Kanal des anderen verknüpft:

bashKlick markiert alles · Strg + C
set HZ_Wohnzimmer_Klein_ClimaTeam peerChan 0 HZ_Wohnzimmer_Gross_Clima single
set HZ_Wohnzimmer_Gross_ClimaTeam peerChan 0 HZ_Wohnzimmer_Klein_Clima single

MAX!-Thermostat einbinden

MAX!-Thermostate sind einfacher aufgebaut – sie besitzen keine Unterkanäle. Die Solltemperatur wird direkt am Gerät gesetzt, ein burstXmit ist nicht nötig.

bashKlick markiert alles · Strg + C
define HZ_Buero MAX HeatingThermostat 1b9ded
attr  HZ_Buero IODev cm
attr  HZ_Buero model HeatingThermostat
attr  HZ_Buero room Buero
bashKlick markiert alles · Strg + C
set HZ_Buero desiredTemperature 21.0
set HZ_Buero desiredTemperature auto

Automatik: Fenster, Anwesenheit und Uhrzeit

Die eigentliche Intelligenz steckt in einer DOIF-Regel pro Raum. Sie wertet drei Eingangsgrößen aus: den Fensterkontakt, einen aggregierten Anwesenheitsstatus aus der Anwesenheitserkennung (...StructureAnwesend) und die Uhrzeit. Daraus ergeben sich vier Stufen: Lüften, Komfort, Eco und Automatik.

bashKlick markiert alles · Strg + C
define di_Heizung_Wohnzimmer DOIF ([Fensterkontakt_Wohnzimmer:state] =~ "opened")
  (set HZ_Wohnzimmer_Clima controlManu 12.0)
  (set HZ_Wohnzimmer burstXmit)
DOELSEIF ([06:30-22:00] and [Fensterkontakt_Wohnzimmer:state] =~ "closed" and [WohnzimmerStructureAnwesend:state] eq "present")
  (set HZ_Wohnzimmer_Clima controlManu 21.0)
  (set HZ_Wohnzimmer burstXmit)
DOELSEIF ([Fensterkontakt_Wohnzimmer:state] =~ "closed" and [WohnzimmerStructureAnwesend:state] eq "absent")
  (set HZ_Wohnzimmer_Clima controlManu 17.0)
  (set HZ_Wohnzimmer burstXmit)
DOELSE
  (set HZ_Wohnzimmer_Clima controlMode auto)
  (set HZ_Wohnzimmer burstXmit)
attr di_Heizung_Wohnzimmer checkall all
attr di_Heizung_Wohnzimmer wait 30,5:60,5:60,5:0,5
attr di_Heizung_Wohnzimmer room Wohnzimmer

Die Logik arbeitet von oben nach unten:

  • Fenster offen → Absenkung auf 12 °C (Frostschutz beim Lüften).
  • Fenster zu, anwesend, Komfortzeit → Wohlfühltemperatur 21 °C.
  • Fenster zu, abwesend → Eco-Temperatur 17 °C.
  • sonst → Rückgabe an das interne Wochenprogramm (auto).

Zwei Attribute sind entscheidend: checkall all prüft bei jedem Ereignis alle Bedingungen erneut, und wait staffelt die Befehle zeitlich. Die Liste 30,5:60,5:60,5:0,5 bedeutet pro Zweig: erst x Sekunden warten (z. B. 30 s nach dem Fensteröffnen, um kurzes Stoßlüften zu ignorieren), dann 5 s vor dem burstXmit, damit der Sollwert sicher ankommt.

Heizverläufe protokollieren

Jedes Thermostat schreibt seine Werte in eine eigene Logdatei – einsortiert in einen Unterordner Heizung und wochenweise rotiert. Der Logtype tempN:Plot,text macht die Datei direkt als Temperatur-Diagramm auswertbar (siehe Sensorik & Auswertung).

bashKlick markiert alles · Strg + C
define FileLog_HZ_Wohnzimmer FileLog ./log/Heizung/HZ_Wohnzimmer-%Y-KW%W.log HZ_Wohnzimmer
attr  FileLog_HZ_Wohnzimmer logtype temp4:Plot,text
attr  FileLog_HZ_Wohnzimmer nrarchive 3
attr  FileLog_HZ_Wohnzimmer room hidden

Konfiguration prüfen und sichern

  1. Mit list di_Heizung_Wohnzimmer prüfen, welcher Zweig gerade aktiv ist.
  2. Ein Fenster öffnen und kontrollieren, ob das zugehörige Thermostat nach Ablauf der Wartezeit absenkt.
  3. Über set HZ_Wohnzimmer_Clima controlMode auto testen, ob die Funkübertragung samt burstXmit greift.
  4. Konfiguration dauerhaft speichern:
bashKlick markiert alles · Strg + C
save

Damit regelt jeder Raum eigenständig nach Fensterzustand, Anwesenheit und Uhrzeit – einheitlich aufgebaut, egal ob HomeMatic- oder MAX!-Thermostat.