Heizungsautomatisierung (Update II): Adaptiv
Hier kommt ein weiteres Update zur Heizungssteuerungs-Reihe. Dies ist Part 3 – vorher waren Part 1 & Part 2.
Vorheizen
Beispiel: Man will dienstags etwa um 6:00 Uhr aufstehen – der Wecker klingelt um 6:00 Uhr, man snoozt ihn erfahrungsgemäß ein- oder zweimal, also ist man gegen 6:15 Uhr im Bad. Wenn man also um 6:15 Uhr in ein warm vorgeheiztes Bad kommen möchte, muss die Heizung natürlich schon früher begonnen haben zu heizen. Wenn der Zeitplan also 06:15–08:30 Uhr für das morgendliche Heizen lautet und das Heizsystem kein Look-ahead hätte, dann würde die erste Person im Bad frieren, nachfolgende hätten es dann eventuell angenehm.
Ich hatte also von Anfang an eine Vorheizfunktion eingebaut, also eine Funktion, die es mir erlaubt, beim Erstellen der Zeitpläne nur einstellen zu müssen, wann es warm sein soll, und nicht bedenken zu müssen, was das für die Heizung genau bedeutet. Ich wollte nämlich nicht bei der Erstellung eines Zeitplans wie im Beispiel oben bedenken müssen: „Um 6:15 Uhr soll es warm sein, die Heizung im Bad schafft 0,8° pro Stunde – mmh, wie kalt wird es wohl um 05:00 Uhr im Bad sein? Vielleicht kühlt es auf 19 °C aus – lass mal 2 Grad Vorheizen einplanen – also stellen wir 4:45 Uhr ein.“
Alte Version
Also hatte das System ab Version 1 schon eine Look-ahead-Aufheizfunktion. Das System kennt für jeden Raum eine Aufheizrate (im Beispiel oben 0,8 K/h) und schaute dann selbst voraus, wann es das nächste Mal wärmer sein soll. Wenn es also nachts um 5:00 Uhr schaut, sieht es: „Um 6:15 Uhr sollen im Bad 21,5 °C sein“, und rechnet aus Aufheizrate und aktueller Raumtemperatur aus, ob es schon loslegen oder noch warten soll. Das nimmt mir beim Erstellen der Zeitpläne die ganze Raterei ab, wie weit sich die Räume wohl abkühlen werden – das ist ja je nach Wetterlage auch nicht fix.
Die Aufheizraten hatte ich bei einer längeren Abwesenheit über die Weihnachtstage gemessen – die Wohnung war während unserer Abwesenheit zehn Tage lang ohne Heizung, und bei der anschließenden Wiederaufwärmung der Wohnung habe ich die Werte ermittelt. Näherungsweise hat das auch ganz gut funktioniert, aber in der Praxis sah ich nun, dass die Räume tendenziell schneller wieder warm sind, als das System annimmt – daher jetzt das Update.
Neue Idee
Das System kann nun die Aufheizrate selbst beobachten und anpassen.
Bei jedem Vorheizvorgang, den das System selbst startet, merkt es sich nun die Starttemperatur und die Startzeit, und nach Abschluss der Vorheizung berechnet es die Aufheizrate des Raums.
Um zu verhindern, dass das System mit diesen Werten wild oszilliert, habe ich einige Bedingungen vorgeschaltet und etwas Dämpfung eingebaut. Wenn die Aufheizphase kürzer als 30 Minuten war oder weniger als 1 °C überwunden werden musste, dann lernen wir daraus nicht, weil die kurzen Phasen gegebenenfalls zu ungenau sind. Außerdem gibt es natürlich noch Fensteröffnungen, plötzliche Abwesenheit der Bewohner (wir sind früher aufgestanden und haben die Wohnung verlassen) oder manuelle Eingriffe durch Bewohner – wenn eines dieser Ereignisse auftritt, dann ist diese Aufheizung auch fürs „Daraus-Lernen“ ungeeignet und wird verworfen.
Wird jedoch ein Wert ermittelt, der diesen Vorbedingungen standgehalten hat, dann wird dieser nicht einfach übernommen. Der Wert wird vielmehr mittels EMA (exponentiell geglätteter Durchschnitt) mit der bisherigen Annahme verrechnet. Zuerst wollte ich einfach einen Durchschnitt der letzten x Werte nehmen, aber dann hätte ich diese jeweils wieder alle persistieren müssen – so kam ich mit einem zusätzlichen Wert pro Raum aus. Als zusätzliche Dämpfung habe ich noch die Einschränkung ergänzt, dass sich der Wert in einem Schritt um maximal 10 % verändern darf.
Die Hoffnung ist also, dass sich das System zum einen langsam an die tatsächlichen Aufheizraten „heranlernt“ und zum anderen auch in kälteren und wärmeren Wochen seine Werte sanft in die jeweilige Richtung anpasst (sofern die Außentemperatur überhaupt einen Einfluss auf die Aufheizrate hat – das weiß ich noch nicht wirklich).
Initialisiert habe ich das System natürlich zunächst mit den um Weihnachten ermittelten Aufheizraten je Raum, sodass es nahtlos loslegen konnte.
Fazit
Seit einigen Tagen läuft nun die Anlernphase – viel hat es dabei noch nicht gelernt. Die meisten Messungen wurden verworfen (meist weil die Räume gar nicht über 1 °C abgekühlt waren oder weil ich an einem Tag morgens manuelle Eingriffe hatte). Aber den Logfiles kann man entnehmen, dass das System fleißig misst und rechnet. Bis zum Ende des Winters werde ich vermutlich sehen, wo sich die Werte der einzelnen Räume einpendeln. Idealerweise werden die Vorheizphasen damit so kurz, wie sie sein dürfen, um zur gegebenen Zielzeit die gewünschte Zieltemperatur im Raum zu haben – ohne zu früh loszuheizen, aber eben auch nicht zu spät, um jemanden morgens in ein kaltes Bad zu jagen. Denn wer könnte so etwas schon wollen?