Heizungssteuerung mit HomeMatic

Räume zielgerichtet mit der HomeMatic beheizen, scheint ein Projekt zu sein, das sich relativ einfach lösen lässt, wenn…. ja wenn da nicht die Tücken und Wünsche im Detail wären….

Dieses Projekt ist kein Copy&Paste Projekt, vieles muss auf deine individuelle Situation angepasst werden. Also nimm Dir die Zeit, alles gründlich durchzulesen.

Dieses Projekt benötigt keine Steuerung durch ioBroker und läuft autark auf der Homematic, jedoch kann die Steuerung durchaus von IObroker beeinflusst werden, zum Beispiel wird die Lüftungsdauer abhängig von der Außentemperatur überwacht, Heizgruppen werden bei entsprechender Außentemperatur automatisch abgeschaltet und Warnungen über MP3 Lautsprecher ausgegeben.

Tja, am Anfang war das Feuer …..ähem… die HomeMatic und ….


Überlegungen und Versuche

Realisierung 1. Versuch:

  • Ein Heizungsregler
  • Ein Fensterkontakt
  • alles in einer Heizgruppe mit aktiver Fenster-Offen Erkennung

Ergebnis:

  • Funktioniert so einigermaßen
  • Raumtemperatur stimmt
  • Regelverhalten träge
  • Nachteil im Sommer: Der Regler steht im Sommerbetrieb auf „100% Ventilöffnung“ um die Ventilsitze zu entlasten, werden aber Fenster geöffnet, fährt der Regler immer auf 0% und später beim schliessen des Fensters wieder auf 100%, dies belastet unnötig die Batterien.

Realisierung 2. Versuch:

  • Ein Heizungsregler
  • Ein Fensterkontakt
  • nur der Heizregler befindet sich in der Heizgruppe
  • Fenster offen/zu wurde über ein 2. Programm realisiert

Ergebnis:

  • Funktioniert besser
  • Raumtemperatur stimmt
  • Regelverhalten träge

Realisierung 3. Versuch:

  • Ein Heizungsregler
  • Ein Fensterkontakt
  • Ein Wandthermostat an einer Innenwand
  • Heizregler und Wandthermostat sind in einer Heizgruppe
  • Fenster offen/zu wurde über ein 2. Programm realisiert

Ergebnis:

  • Funktioniert gut
  • Raumtemperatur stimmt
  • Regelverhalten gut
  • Nachteil: Wenn im Raum Fenster geschlossen ist, jedoch die Türe zum Nachbarzimmer offen ist, heizt man indirekt durch das Fenster des Nachbarraums ins Freie.

Realisierung 4. Versuch:

  • Ein Heizungsregler
  • Ein Fensterkontakt
  • alle Türen zu den Nachbarräumen mit Türkontakten versehen
  • Ein Wandthermostat an einer Innenwand
  • Heizregler und Wandthermostat sind in einer Heizgruppe
  • Fenster offen/zu wurde über ein 2. Programm realisiert
  • Weiteres Programm wegen der Lüftungsüberwachung über Nachbarräume integriert

Ergebnis:

  • Funktioniert gut
  • Raumtemperatur stimmt
  • Regelverhalten gut
  • Nachteil: Da 4 Räume jeweils mit 2 Türen zu den Nachbarräumen vorhanden waren, hat meine Programm-Logik den Duty-Cyle teilweise ins Nirwana getrieben, vor allem wenn einer durch alle 4 Räume rannte, alle Türen auf riss….

Viele Versuche später….
Jetzt war der Zeitpunkt gekommen, sich einmal so richtig Gedanken zu machen, was man eigentlich letztendlich erreichen will und vor allem, wie das ganze gelöst werden kann, ohne dass man dabei den Duty-Cycle ausreizt, daraus wurde dann, über Wochen und vielen Try&Errors mein Steuerungsprojekt, mit dem ich nun alle Räume des ganzen Hauses steuere und die Auslastung des Funknetzes minimal ist. Die Realisierung wird in den nachfolgenden Beiträgen Stück für Stück beschrieben und so gut es geht auch erklärt werden. Mit Sicherheit gibt es noch Potential zur Verbesserung, ich bin aber mit dem jetzigen Zustand mehr als zufrieden.

Anforderungen

AnforderungHomematicioBroker
Funknetz Auslastung so gering wie möglich halten
Einzelraum Regelung
Abschalten der Heizung bei Belüftung
Abschalten der Heizung bei Fremdlüftung (Türen zu benachbarten Räume mit offenen Fenstern)
Reduzierung der Temperatur, wenn Türen zu benachbarten Räumen offen, die eine geringere Raumtemperatur haben
Übergangsheizprofile Sommer/Herbst und Frühjahr Sommer
Automatisches abschalten der Raumheizung, wenn Außentemperatur OK
Warnmeldung bei zu langer Raumlüftung, abhängig von der Außentemperatur
Kalender-gesteuerte Raum Heizung, wenn verschiedene Personen Urlaub/Ferien haben
Räume auch bei ausgefallener CCU/HomeMatic/IObroker beheizbar (Autark)
Heizungsregelung über Externe/Zusatzprogramme steuerbar (Sondersteuerung)
Welches System ist für was zuständig

Heizgruppen bilden

Es ist besser, wenn eine Gruppierung der Geräte (in Heizgruppen) vorgenommen wird, selbst wenn dann die Gruppe nur aus einem Gerät besteht. Den Hintergrund dazu, möchte ich kurz an einem Beispiel erklären.

Beispiel Badezimmer ohne Gruppenbildung:

  • Am Anfang war dort nur ein einzelner Heizungsregler am Heizkörper, und natürlich haben meine Programme auch nur diesen Regler direkt angesprochen bzw. Temperatur-Werte direkt am Heizkörper abgefragt
  • Jetzt kommt ein Wandthermostat dazu um die Temperatur und auch die Luftfeuchtigkeit im Raum zu messen
  • blöd, jetzt muss ich meine Programme umschreiben
  • kann zwar nachträglich eine Heizgruppe einrichten, bringt aber nichts, Programme müssen trotzdem umgeschrieben werden
  • Das umschreiben der Programme kann in komplexen Umgebungen die „Hölle auf Erden“ sein!

Beispiel Badezimmer MIT Gruppenbildung:

  • Der eine Regler am Heizkörper wird in die Gruppe „Heizgruppe-Bad“ aufgenommen
  • In den Programmen wird immer die Gruppe angesprochen, nicht der Heizregler direkt
  • Jetzt kommt ein Wandthermostat hinzu
  • Einzige Tätigkeit: Diesen Wandthermostat einfach der Gruppe hinzufügen, fertig!

Fazit: In der HomeMatic die einzelnen Geräte zu Heizgruppen gruppieren und in den Programmen nur die Heizgruppe ansprechen/auslesen.
Was gehört nicht in die Heizgruppe: Insbesondere Fenster-/Tür-Kontakte gehören NICHT in die Heizgruppe, da man sonst das Regelverhalten nicht mehr direkt steuern kann, dazu habe ich ja schon etwas geschrieben.

Systemvariable anlegen

Für den Betrieb sind einige Systemvariable nötig, die in der HomeMatic angelegt werden müssen, bevor wir mit der Programmerstellung weiter machen können.

SystemvariableFunktionTypEinstellung
HeizperiodeHiermit wird gesteuert, ob die Heizperiode generell „Ein“ oder „Aus“ ist. Wird diese Variable auf „Aus“ gesetzt, werden zum Beispiel in allen Heizgruppen die Heizkörper-Ventile für den Sommerbetrieb 100% geöffnet, wird die Variable auf „Ein“ gesetzt, werden alle Heizgruppen auf „Automatik-Betrieb“ gesetzt.Logikwertwahr = Ein
falsch = Aus
Heizsteuerung-EreignisBei dieser Variablen, handelt es sich um eine Zeichenkette, bei der die Protokollierung eingeschaltet ist, sie dient dazu, Statusmeldungen in das HomeMatic Systemprokoll einzutragen.Zeichenkette
S_DummyWie aus dem Namen schon erkennbar ist, ist diese Variable ein Dummy, der für allerlei herhalten muss, teilweise wird dieser Dummy für Bedingungen, die nie erfüllt sein sollen benutzt oder auch um in manchen Programmabschnitten einfach kleine Anmerkungen einzutragen, die dann als Dokumentation dienen.Zeichenkette
Heizstatus-xxxxxJede Heizgruppe muss eine eigene System-Variable „Heizstatus-“ besitzen, über diese Variable wird die Funktion über die HomeMatic-Programme gesteuert. Als Beispiel: Heizstatus-Wohnzimmer, Heizstatus-Bad, Heizstatus-Buero usw. Diese Variablen sind nach folgendem Schema in der HomeMatic einzurichten. Bitte beachten: Wenn hier die Reihenfolge verändert wird, hat dies Auswirkungen auf diverse Skripte, da diese den Wert über Indexe lesen (Index0 = AUS, Index2 = Lueften). Wird also die Werteliste in der Reihenfolge hier geändert, muss in allen Skripten diese Anpassung erfolgen, sonst droht Chaos!WertelisteAUS ;EIN; AUTO; Lueften ;UrlaubEIN; Fremdlueftung; Reduziert; EXTERN; UebergangEIN; UebergangAUS; UrlaubAUS
MemStatus-xxxxxJede Heizgruppe muss eine eigene System-Variable „MemStatus-“ besitzen, die Werte Liste ist genau nach dem gleichen Schema wie „Heizstatus-“ aufgebaut. Als Beispiel: MemStatus-Wohnzimmer, MemStatus-Bad, MemStatus-Buero usw. Die System-Variable dient dazu, den Zustand festzuhalten, in dem sich eine Heizgruppe vor einem Übergang in einen andern Status befand. Als Beispiel: Heizgruppe befindet sich im Modus „AUTO“, ein Fenster wird geöffnet und die Heizgruppe wechselt den Status auf „Lueften“, das Fenster wird geschlossen und nun holt sich die Heizgruppe den vorherigen Zustand wieder aus seiner „MemStatus“ Variable. Analog dazu gilt, dass wenn die Reihenfolge der Werte geändert wird, alle Scripte dementsprechend angepasst werden müssen.WertelisteAUS; EIN; AUTO ; Lueften; UrlaubEIN; Fremdlueftung; Reduziert; EXTERN; UebergangEIN; UebergangAUS; UrlaubAUS
Fensterstatus-xxxxxDamit das kurzzeitige öffnen eines Fensters nicht die ganze Heizgruppe in den Status „Lüften“ schaltet, wird die Systemvariable für die zeitliche Verzögerung benutzt. Wenn im Raum die Fenster geschlossen sind, hat sie den Zustand „Geschlossen“, sind Fenster länger als 31 Sekunden offen (je nach individueller Programmierung) hat diese Variable den Zustand „Offen“wahr = Offen
falsch = Geschlossen
Benötigte Systemvariable

Heitzstatus Bedeutung

StatusBedeutung
AUSHeizgruppe ist in den manuellen Modus geschaltet, Heizkörper sind im manuellen Modus und die Ventile sind geschlossen (0% Temp = 4.5º)
EINHeizgruppe ist in den manuellen Modus geschaltet, Heizkörper sind im manuellen Modus und die Ventile sind offen (100% Temp = 30.5º, z.B. Sommerbetrieb)
AUTOHeizgruppe ist in den Auto-Mode geschaltet, Raum wird nach dem eingestellten Heizprofil der Heizgruppe beheizt
LueftenRaum wird belüftet, Heizgruppe wird in den manuellen Modus geschaltet, die Temperaturabsenkung wird vom Steuerprogramm vorgegeben (norm. 5,0º)
UrlaubEINRaum wird innerhalb Urlaub beheizt, Temperatur wird vom Steuerprogramm vorgegeben
FremdlueftungRaum wird durch offene Türen Fremdbelüftet, Raumtemperatur wird abgesenkt (norm. 5º)
ReduziertRaumtemperatur wird abgesenkt, da Türe zu Nachbarräumen offen, Temperaturvorgabe wird vom Steuerprogramm vorgegeben
EXTERNRaumtemperatur wird von einem externen Programm gesteuert
UebergangEINDer Raum wird während der Übergangsphase beheizt, Temperatur wird vom Steuerprogramm vorgegeben
UebergangAUSDer Raum wird während der Übergangsphase mit abgesenkter Temperatur beheizt, Temperatur wird vom Steuerprogramm vorgegeben
UrlaubAUSDer Raum wird innerhalb Urlaub mit abgesenkter Temperatur beheizt, Temperatur wird vom Steuerprogramm vorgegeben
Bedeutung der Heitzstadien

Grundprogrammierung Heizgruppe

Es ist wichtig, dass man sich im dazu bereits im Vorfeld Gedanken macht, wie das Heizprofil für eine ganz normale Woche aussehen soll, also wie die einzelnen Räume beheizt werden, ohne Urlaub, Krankheit und Schulferien.

  • Badezimmer morgens unter der Woche von 5:30h bis 8:00h auf 24º, danach Absenkung auf 20º, Abends dann von 20:00h bis 21:30h wieder 24º
  • Badezimmer am Wochenende von 08:00h bis 10:00 auf 24º usw.
  • Büro am Wochenende …..
  • Büro unter der Woche ….
  • Wohnzimmer ….
  • usw.

Also für jede Gruppe ein Heizprofil erstellen, so wie ihr das auch an einem Regler ohne HomeMatic machen würdet, das heißt, dass diese Heizprofile ohne zu tun der HomeMatic direkt von den gruppierten Geräten autark ausgeführt werden. Selbst wenn die HomeMatic ausfällt, heizen die Gruppen wenn sie im AUTO-Mode betrieben werden, nach den erstellten Heizprofilen weiter.

Die einzelnen Heizgruppen werden dann überwiegend im Auto-Mode betrieben, es sei denn, dass eine besondere Steuerung nötig ist, wie zum Beispiel das Lüften, Urlaubstage, Krankheitstage, dann wird die Steuerung direkt von der HomeMatic oder von IObroker übernommen.

Dieses vorgehen erzeugt wenig Funkverkehr und das ist ja eines der Ziele, die damit verfolgt werden sollen.

Steuerung Heizgruppe

Jede Heizgruppe muss ein eigenes Steuerprogramm besitzen, das auf die verschiedenen Modi des Heizstatus reagiert. Ich habe die einzelnen Abschnitte wegen der Übersichtlichkeit hier auf der Seite getrennt. Dieses Steuerprogramm ist jetzt wirklich ein hartes Stück Arbeit, aber keine Angst, habt ihr einmal das Programm fehlerfrei erstellt, könnt ihr das Programm quasi kopieren und unter neuem Namen abspeichern, vorher jedoch die relevanten Daten innerhalb des Programms anpassen, sonst droht Chaos.

Hier das Steuerprogramm stellvertretend für das Badezimmer, man sieht, dass immer nur die komplette Heizgruppe angesteuert wird! Die Temperaturwerte können natürlich individuell angepasst werden, je nach Vorliebe. Am besten Ausdrucken, damit der Überblick nicht verloren geht.

Steuerung Lüftung

Wie wird nun das Regeln der Raumtemperatur bei Raumlüftung realisiert? Eines haben alle Heizgruppen gemeinsam: Für jede Heizgruppe existieren zwei Programme, hier als Beispiel das Bad im OG:

  1. Das Programm Lueftung Bad OG TIMER, hier wird überwacht, ob ein Fenster nur kurzzeitig oder länger als die vorgegebene Zeit geöffnet ist, dies wird dann anhand der Systemvariablen „Fensterstatus-Bad-OG signalisiert, die dann den Zustand „Geschlossen“ oder „Offen“ einnimmt.
  2. Das Programm Lueftung Bad OG AKTIV, hier wird letztendlich die entsprechende Heizgruppe in den Lüftungsstatus gesetzt.

Steuerung Raumstatus

Jetzt wird es für den einen oder anderen etwas gruselig, leider kommt man um ein Script das für die Steuerung der abhängigen Heizgruppen zueinander zuständig ist, nicht herum. In diesem Beispiel geht es jetzt um das Obergeschoss. Die Räume sind in der Reihenfolge Flur-Bad-Schlafzimmer-Kinderzimmer2-Kinderzimmer1-Flur durch Türen verbunden. Das heißt die Räume könnten sich durch offene Türen gegenseitig belüften. Das bedeutet leider, dass dieses Script individuell, je nach Bedarf auf die jeweilige Konstellation angepasst werden muss.

Dieses Programm ist so angelegt, dass es nur bei einem manuellen Aufruf ausgeführt wird, da die Bedingung so angelegt ist, dass sie nie erfüllt wird. Bei einem Aufruf des Programms über die Weboberfläche der HomeMatic oder beim Aufruf von einem anderen Programm aus, wird die Bedingung immer von der HomeMatic auf WAHR gesetzt und deshalb wird dann das Programm ausgeführt.

Im Prinzip läuft das Script nach folgenden Schema ab:

  • Als erstes prüft jeder Raum, ob ein Fenster geöffnet ist, wenn dies der Fall ist, setzt der Raum seinen Heizstatus auf „Lueften“
  • Dann prüft jeder Raum, ob zu einem Nachbarraum eine Türe geöffnet ist und ob dieser Raum belüftet wird
  • Wenn Nachbarraum belüftet und die Türe geöffnet, setzt der Raum seinen Heizstatus auf „Fremdlueftung“
  • Damit in der Kette wirklich alle Räume zueinander geprüft werden, wird durch die „while(counter < 4)“ Schleife dieser Test mehrfach wiederholt (Anzahl Räume -1)
  • Zum Schluss werden die berechneten Heizstatus’e in die Systemvariable geschrieben, wenn sich der Wert vom gespeicherten unterscheidet

Wie man sieht, ist die Bedingung des Programms so angelegt, dass es eigentlich nie automatisch ausgeführt wird. Um es dennoch auszuführen, gibt es zwei Möglichkeiten:

  1. Manueller Start des Programms über die Bedienoberfläche der HomeMatic
  2. Aufruf des Programms von einem anderen Programm

Bei beiden Möglichkeiten wird die erste Bedingung automatisch auf „wahr“ gesetzt. Hier nun das Programm:

Nun fehlt noch das vorletzte Programm, welches das Script „Raumstatus-OG-setzen“ aufruft und damit die Heiz-Zustände der Räume aktualisiert. Dieses Programm reagiert auf alle Türen und Fenster, wenn sich deren Zustand ändert. Dann wird unser „Raumstatus-OG-setzen“ Script zeitversetzt aufgerufen. Der Zeitversatz ist deshalb nötig, dass wenn jetzt jemand durch alle Räume rennt nicht ständig die Heizstadien permanent geändert werden und dadurch das Funknetz ans Limit gebracht wird. Und den Batterien der Regler wäre auch nicht damit gedient, wenn dauernd Auf/Zu gesteuert würde. Die Zeitverzögerung von 3 Minuten ist meiner Meinung nach das untere Limit und sollte individuell angepasst werden. Das ist die Zeit, die vergeht bis Nachbarräume erkennen, dass sie Fremd belüftet oder auf reduzierter Temperatur laufen sollten.

Auch wird hier demonstriert, wie man aus einem Programm heraus ein anderes HomeMatic Programm über ein Script starten kann.

Steuerung Heizperiode

Und wie schalte ich jetzt alle Heizgruppen anhand der Heizperiode?

Wir haben ja die Systemvariable „Heizperiode“ angelegt, die den Zustand „Ein“ oder „Aus“ annehmen kann, deshalb brauchen wir noch ein Programm, das auf die Änderung dieser Systemvariable reagiert und alle Heizgruppe ansteuert. Da beim simplen setzen dieser Variable die Heizgruppen im ganzen Haus umgesteuert werden, tritt dabei massiv Funkverkehr auf und treibt den Duty-Cycle dementsprechend in die Höhe. Deshalb ist es wichtig, die Ansteuerung zeitlich zu entkoppeln, so dass nicht alle Gruppen gleichzeitig umgesteuert werden. Nach Einschalten der Heizperiode ist es auch wichtig, das jeweils zugehörige Programm zu starten, das den Raumstatus für die zusammenhängenden Gruppen ermittelt, natürlich auch mit zeitlichem Abstand.

Wird die Heizperiode nun eingeschaltet, gehen alle Regler in den Automatik Betrieb, wird sie abgeschaltet, gehen alle Regler auf 100% Öffnung für den Sommerbetrieb.

Ablauf Diagramme

Diagramm Lüftung xxxx aktiv: Programm reagiert, wenn sich der Fensterstatus-xxxx ändert

Diagramm Lüftung xxxx Timer: Programm reagiert, wenn sich der Zustand eines Fensters geändert hat

Schreibe einen Kommentar

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

Cookie Consent mit Real Cookie Banner