Je mehr Daten man hat, desto besser kann das Modell dann trainiert werden, vorausgesetzt, es sind die richtigen. Deshalb muss überlegt werden, welche Daten notwendig sind bevor das Modell aufgebaut wird. Um feststellen zu können, welche Daten benötigt werden, muss man sich Gedanken über die Abhängigkeiten machen – wovon ist der gewünschte Stand der Jalousien abhängig?
Die Jalousien sollen natürlich nicht einfach Zeitgesteuert oder anhand der Astronomie-Funktionen gesteuert werden. An einem bewölkten Tag können sie ruhig offen bleiben. Andererseits ist aber auch die Temperatur nicht alleine ausschlaggebend – an einem schönen Wintertag, kann die Temperatur im Raum alleine durch die Sonneneinstrahlung um ein paar Grad steigen. Allerdings wäre es sinnvoll, die Sonnenenergie im Winter auch zum Heizen des Raums zu nutzen. In wie weit die Daten für die Nutzung im Modell geeignet sind oder Sinn machen, wird sich zeigen …
Status Jalousien
Um überhaupt ein Modell erstellen zu können, ist es natürlich notwendig, den Zielwert (im Modell Label genannt) zu kennen. Dazu müssen diese Daten mehrere Tage/Wochen/Monate aufgezeichnet werden. Je nach Wetter und Sonneneinstrahlung fährt man selbst die Jalousien auf eine Position, die angenehm ist. Im Endeffekt kann dieser Vorgang schon als lernen bezeichnet werden, auch wenn hier noch nichts mit dem Modell passiert – es geht hier rein ums Sammeln der Daten.
Status Heizung
Einer der wichtigsten Punkte ist, dass die Jalousien offen bleiben, solange die Heizung im entsprechenden in Betrieb ist. So lange die Heizung in Betrieb ist, soll auch die Energie der Sonne (falls vorhanden) genutzt werden, um den Raum zusätzlich (kostenlos) zu erwärmen. Dieser Sensor-Wert ist natürlich vom jeweiligen Raum abhängig.
Soll- und Ist-Temperatur
Die Soll- und Ist-Temperatur hängen ein wenig mit dem Status der Heizung zusammen. Wenn die Soll-Temperatur im Raum höher ist als die Ist-Temperatur, wird die Heizung eingeschaltet sein. Andererseits ist auch der Unterschied zwischen Soll und Ist interessant. Wenn der Ist-Wert nur z. B. 0,5°C höher als der Soll-Wert ist, können die Jalousien ruhig weiter offen sein, als wenn der Unterschied 2°C beträgt.
Luftfeuchtigkeit im Raum / Luftfeuchtigkeit Außen
Die Luftfeuchtigkeit ist ein wichtiger Punkt, wenn es um das Wohlfühlklima geht. Je höher die Luftfeuchtigkeit ist, desto wärmer (schwüler) empfinden wir es. Wenn die Luftfeuchtigkeit um ein paar Prozent höher ist, kann die Temperatur etwas niedriger liegen und wir empfinden es dennoch als angenehm warm. Dieser Wert hat sicherlich Auswirkung auf die Beschattung – besonders in einem Raum.
Da die Luftfeuchtigkeit im Winter, wenn in einem Raum geheizt wird, sowieso sehr gering ist, muss das nicht beim Status der Heizung (ein/aus) berücksichtigt werden.
Außentemperatur
Die Außentemperatur ist für die Beschattung sicherlich ein interessanter Wert. Je höher der Wert, desto stärker die Sonne? Nicht unbedingt, im Winter ist es an einem schönen, sonnigen Tag sicher kälter als im Sommer an einem bewölkten. Da die Temperatur übers Jahr gesehen ziemlich normal Verteilt (Achtung: Statistik) ist, könnte das ein guter Ansatz sein, um die Jahreszeit zu definieren. Eine Möglichkeit wäre natürlich auch das aktuelle Monat zu verwenden, das ist aber dann eine kategorialen Variablen. Kategoriale Variablen machen aber nur wirklich Sinn, wenn sie vollständig sind. Wenn die Daten z. B. nur für ein halbes Jahr zur Verfügung stehen, sind die Monate nicht vollständig. Im Endeffekt ist es aber auch egal, in welchem Monat es warm oder kalt ist – das Ergebnis soll das gleiche sein.
Diese Grafik zeigt den Verlauf der Wetter-Daten, die ich aufzeichne für einen Tag.
Name des Aktors
Der Name des Aktors ist aber genau eine der kategorialen Variablen. Es ist aber notwendig, die Jalousien im Wohnzimmer anders zu steuern als z. B. in der Küche (das Wohnzimmer ist im Westen, die Küche im Osten). Es kann in einem Raum natürlich auch mehrere Jalousien geben (z. B. ein Fenster ist im Süden, eines im Westen). Die sind getrennt zu betrachten und sollen unabhängig von einander gesteuert werden.
Sonneneinstrahlung
Die Sonneneinstrahlung ist der entscheidende Faktor für die Entscheidung ob die Jalousien geschlossen werden soll bzw. wie weit. Sensoren dafür sind aber schwer umzusetzen und liefern auch nicht immer Sinnvolle Daten. Eine Möglichkeit wäre eine z. B. eine Differenz zwischen zwei Temperatur-Sensoren, einer in der Sonne, der andere im Schatten.
Oder es werden Sensor-Werte verwendet, die bereits vorhanden sind – z. B. Sonnenkollektoren.
Unabhängig davon, welche Sensoren verwendet werden, bekommt man an diesem Punkt langsam eine Ahnung, warum ein manuell programmiertes Script oder Programm schwierig umzusetzen ist. In diesem Beispiel werden die Sensordaten von einem Sonnenkollektor in Verbindung mit einem Puffer verwendet.
Sensoren für die Sonneneinstrahlung
Zum Einen ist natürlich der Stand der Sonne ausschlaggebend. Hier gibt es zwei Werte, die interessant sind: Azimuth und Elevation.
Elevation ist, wie der Name schon sagt, der Höhenwinkel. Würde man von sich ausgehend, eine Grade am Boden Richtung Sonne ziehen und eine Gerade direkt auf die Sonne zu, wäre der Winkel zwischen den Beiden Linien die Elevation.
Der Azimuth ist die Richtung der Sonne. Würde man genau nach Richtung Norden sehen und hätte die Sonne genau vor sich (wo sie aber nie zu sehen sein wird), wäre der Azimuth 0°. Blickt man genau in Richtung Süden und hat die Sonne genau vor sich, ist der Azimuth 180° – im Osten wären es dann 90° und im Westen 270°.
Hier ist der Verlauf von Azimuth und Elevation für einen Tag (13.07.2018). Die Sonne steht zu dem Zeitpunkt am niedrigsten (gelb), an dem sie genau im Norden steht (blau) bzw. am höchsten im Süden (hmm, was für eine Erkenntnis – haben wir das nicht schon in der Volkschule gelernt?). Was aber je nach Tag variiert, ist die Uhrzeit, wann sie Süden bzw. Norden erreicht und auch die Dauer für die sie zu sehen ist (Elevation – im Winter wird es später hell und früher finster, der Tag hat aber trotzdem 24 Stunden).
Diese beiden Werte sind wieder in Relation zu sehen. Nur weil die Sonne direkt aus Süden auf ein Haus knallt, muss es nicht sein, dass ich die Jalousien geschlossen werden sollen. Je nach Höhenwinkel kann es sein, dass die Sonne so hoch über dem Dach steht, dass die Fenster alle im Schatten sind. Andererseits kann es sein, dass die Sonne schon fast hinter dem Horizont verschwunden ist, aber genau im Westen steht und in den Raum scheint.
Da anhand des Sonnenstandes keine Aussage darüber getroffen werden kann, wie viel Energie am Boden bzw. im Wohnzimmer ankommt, werden noch andere Sensor-Daten gebraucht. Die Überlegung ist also, welcher Sensor schlägt aus, wenn die Sonne drauf scheint? Hier ist es die Temperatur der Sonnenkollektoren. Je stärker die Sonneneinstrahlung, desto höher die Temperatur. Allerdings ist das nicht ganz richtig. Wenn die Temperatur des Puffers niedrig ist, der Puffer also über die Sonnenkollektoren erwärmt wird, ist die Temperatur des Kollektors deutlich niedriger – da der Puffer geheizt und der Kollektor somit gekühlt wird. Irgendwie muss das kompensiert werden. Dazu kann die an den Puffer abgegebene Wärmeleistung verwendet werden. Je höher diese Leistung ist, desto größer ist der Unterschied zwischen Puffer und Solaranlage, desto mehr wird der Sonnenkollektor gekühlt.
Das ist die Aufzeichnung der Leistung bzw. der Temperatur der Solaranlage und die Temperaturen im Puffer über eine Woche. Der letzte Tag hier zeigt schön, dass die Temperatur der Solaranlage steigt, wenn der Puffer geladen ist – hier nochmal im Detail:
Hellblaue Fläche: Kollektortemperatur Dunkelblau: Leistung Solar Gelbe Fläche: Temperatur Kessel (wenn mit Pellets geheizt wird) Andere Farben: Temperaturen im Puffer |
Aber zu 100% stimmt das auch wieder nicht. Denn, wenn der Puffer bereits 80°C hat muss der Kollektor wärmer sein um z. B. 20kW Leistung zu bringen, als wenn der Puffer z. B. nur 60°C hat. Also wird die aktuelle Puffertemperatur ebenfalls ein Wert für mein Modell sein.
Auch das ist aber nicht immer ganz richtig. Manche Puffer-Speicher haben ein Schichtlade-Modul. Das warme Wasser wird also oben eingespeist, wenn es sehr warm ist oder unten, wenn es weniger warm ist. Auch das muss berücksichtigt werden.
Die Temperatur des Kollektors ist aber wieder vom Stand der Sonne abhängig. Wenn die Sonne weit östlich oder westlich steht, wird die Kollektortemperatur nicht so hoch sein, als wenn sie direkt vom Süden drauf scheint. Trotzdem gibt es Räume, die am Abend beschattet werden sollen.
Hier ist noch einen Screenshot wie das aussehen könnte (in diesem Fall von einem ETA Pellets-Ofen, der auch die Solaranlage steuert).
Links: Puffer mit den verschiedenen Temperaturen. Man kann hier schön sehen, dass die Solaranlage mit 74°C den Puffer speist. Rechts: Status der Solaranlage.
Sonstige Sensor-Daten
Daten von anderen Sensoren könnten zusätzlich noch interessant sein z. B. die Windgeschwindigkeit oder ob es regnet. Allerdings werden diese Daten wenig Einfluss auf das Ergebnis haben.
Wo kommen die Daten her?
Als Hausautomation ist Homematic im Einsatz. Für die Visualisierung wird Openhab verwendet. Die gesamte Heizung und Solaranlage wird über den Pellets Ofen gesteuert, ein ETA PU 11. Auch die Screenshots sind von Openhab bzw. dem Ofen. Einige der Daten des Pellets Ofens werden von Openhab über die REST-API der Steuerung abgefragt.
Sämtliche in Openhab verfügbaren Daten werden bei einer Änderung automatisch in eine MySQL-Datenbank geschrieben. Von dort werden sie mit einem kleinen Programm exportiert.
Je mehr Daten zur Verfügung stehen, desto einfacher und genauer kann der Machine Learning Algorithmus dann sein Modell trainieren. Da aber nicht bei jeder Veränderung des Sonnenstandes oder der Temperatur die Jalousien manuell verstellt werden, gilt eine Jalousie-Stellung für eine ganze Serie an Daten. Eine Möglichkeit wäre, die Daten zu exportieren, wenn ein Datensatz für eine Änderung irgend eines Sensor vorhanden ist. Manchen Sensordaten schwanken aber ziemlich über den Verlauf des Tages. Wenn z. B. eine Wolke vor der Sonne ist, ändert sich die Kollektor-Temperatur sehr schnell um einige Grad.
Hier kann man sehr schön erkennen, wie sich die Kollektor-Temperatur verändert. Die Werte werden minütlich abgefragt. Es wird jede Minute eine Veränderung geben und somit wird jede Minute ein Datensatz für die Kollektor-Temperatur gespeichert. In dem Bereich zwischen ca. 14:00 und 15:00 Uhr würde es sicher Sinn machen, die Jalousien weiter zu öffnen. Wenn wir uns aber die Schwankung um ca. 16:00 Uhr ansehen, war das sicher nur eine kleine Wolke und die Stellung der Jalousien wurde nicht verändert. Die Kollektor-Temperatur schwank aber zwischen 110°C und 85°C. Würden jetzt Datensatz zu jeder Änderung exportiert werden, würden wir Datensätze erhalten, die bei 85°C das gleiche Ergebnis wie bei 110°C liefern.
Natürlich könnte man diese Datensätze beim Erstellen des Modells herausfiltern, aber sie können auch bereits beim Export minimiert werden. Zum Beispiel werden die Daten in Intervallen zu je zehn Minuten abgefragt. Somit ist die Anzahl der Datensätze für diesen Zeitraum nur ein oder zwei Datensätze anstatt 10 oder 20. Die Wahrscheinlichkeit, genau so einen Ausreißer zu treffen ist eher gering.
Außerdem sind nur Daten interessant, die Tagsüber aufgezeichnet wurden, wenn z. B. die Jalousien während der Nach sowieso über eine Zeitsteuerung geschlossen sind.
Zusammenfassung
Das Sammeln der Daten ist meistens nicht das Problem. Aber wie man bei diesem kleinen Projekt schon gut sieht, ist die Menge der Daten manuell schwer zu analysieren. Dann muss auch noch eine Logik gefunden werden, mit der man die Abhängigkeiten der Daten auf das gewünschte Ergebnis umlegt. Natürlich gäbe es bestimmt mathematische Formeln dafür oder man könnte eine Entwickeln, das ist aber viel Aufwand und kompliziert, wenn man nicht gerade Mathematiker ist.
Die Menge der unterschiedlichen Sensoren und die Varianz der Daten zeigen hier ganz gut, dass man leicht damit überfordert ist. Ein Machine Learning Modell hat damit keine Probleme. Aber natürlich muss man sich auch mit den Daten beschäftigen, bevor man mit dem Aufbau des Modells beginnt.
Zum Abschluss noch eine Anmerkung. Das Modell weiß natürlich nicht, ob man auf Urlaub oder arbeiten ist. Wenn also die Jalousien nicht den gewünschten Wert haben, weil sie tagsüber sowieso immer geschlossen sind, sollten diese Daten auch ignoriert werden.