Schlagwort-Archive: myHomeControl

Eigene App / Datenkrake zum SmartHome

Wir haben eine App für die Wärmepumpe. Hier kann ich die aktuelle Temperatur im Warmwasserspeicher ansehen und ein paar Dinge einstellen. Die Wärmepumpe Ein- und Ausschalten, etc.

Dann haben wir eine zweite App für die PV Anlage. Aktueller Ertrag, Stromverbrauch, Netzbezug und Einspeisung. Finde ich alles hier.

Eine weitere App für das SmartHome von myHomeControl. Hier kann ich alle Temperatur-/Co2-/Feuchtesensoren, etc. abrufen und diverse Dinge am Haus steuern. Hier kann ich auch den Stromzähler für die Wärmepumpe und z.B. den Außenstrom ablesen und noch viele andere Dinge tun.

Was mich massiv gestört hat ist, dass viele Daten die mich regelmässig interessieren aus zig verschiedenen Anwendungen abgeholt werden müssen und es fehlten ein paar übersichtliche Graphen/Visualisierungen, die mir bestimmte Daten zusammenfassen.

Weiterhin fehlten mir generell ein paar Daten, die mich interessieren. Z.B. Heizungsvor- und Rücklauf kann ich nur an der Heizung selber oder am Wärmemengenmesser ablesen. Dafür muss ich aber in den Keller…und dahin gehe ich eigentlich nur zum Lachen…ok oder Wäsche waschen…

Achtung…jetzt wird es etwas technisch und mir ist klar, dass viele hier nur noch Bahnhof verstehen. Die springen einfach zum Schluss des Beitrags und schauen sich das Ergebnis an.

Also musste etwas eigenes her. Für die fehlenden Temperaturdaten habe ich mir ein paar OneWire DS18b20 Sensoren gekauft und mir eine Mini Applikation in einem embedded Jetty (googlen, wen es interessiert) geschrieben, welche diese Daten als REST Schnittstelle bereit stellt. Sourcecode dazu hier: https://github.com/thomasbecker/tempsensorserver.

MyHomeControl bietet eine nicht mehr ganz so moderne soap Schnittstelle. Dafür habe ich mir einen Java Client generiert und darauf basierend eine Scala Library geschrieben, welche alle für mich interessanten Daten möglichst performant und parallel aus dieser Schnittstelle ausliest und in für mich brauchbarer Form zur Verfügung stellt.

Der Wechselrichter der Photovoltaik von Fronius bietet eine modernere REST Schnittstelle an. Auch hierfür habe ich mir einen Scala Client geschrieben der die Daten ausliest in meine Objekte marshalled und mir zur Verfügung stellt.

Das alles nutzt dann eine von mir geschriebene Applikation basierend auf dem https://www.lagomframework.com.

Diese liest alle für mich relevanten Daten alle 10 Sekunden aus und schreibt sie in eine Cassandra Datenbank. Weiterhin stellt die Applikation verschiedene REST Schnittstellen zum Abruf der Daten zur Verfügung.

Hier der Quellcode zu dieser App: https://github.com/thomasbecker/home-integrator-lagom

Jetzt habe ich also alle Daten in 10 Sekunden Intervallen zentral in einer Datenbank liegen. Das ganze läuft auf einem einzelnen MiniPC mit sehr geringem Energieverbrauch im Keller in Form von verschiedenen Microservices in Docker Containern.

Jetzt, wo ich alle Daten zentral habe und Abrufen kann fehlt noch ein Frontend darauf. Das ist eine Ionic 4 App. Ionic ist ein sehr nettes Framework basierend auf Angular/Typescript, welche sowohl als Webapplikation im Browser, als auch nativ auf iOS oder Android läuft.

Hier habe ich also verschiedenste Daten visualisiert. Oben sind immer die momentanen Daten zu sehen, welche einmal pro Sekunde aktualisiert werden (d.h. diese Graphen sind animiert). Darunter ist ein Graph mit den historischen Daten der letzten 4h. Die Historie kommt aus der Cassandra Datenbank. Wir erinnern uns, alle 10 Sekunden landet ein Datensatz in der Datenbank. Nachdem die Historie geladen wurde wird auch der Graph unabhängig von der Datenbank einmal pro Sekunde mit neuen Werten ergänzt. Über die Buttons zwischen den Graphen kann man den Zeitraum variieren. Von 2h bis zu einem Jahr aktuell. Mehr brauche ich momentan nicht. Da bereits ab wenigen Stunden die Datenmenge schon recht groß wird errechnet das Backend hier ein “moving average” und reduziert die Gesamtanzahl der Datensätze auf aktuell exakt 750. D.h. konkret: Für 8h sind 2.880 Datensätze in der Datenbank (6 * 60 * 8). Bei einem 8h Graph benötige ich eine solche Präzision jedoch nicht. Also mache ich daraus 750 Datensätze mit den Durchschnittswerten des jeweiligen Zeitraums. Das reicht völlig für den Graphen und das ist in ca. 150ms beim Client. Das gleiche auch für eine Woche, einen Monat oder ein Jahr, etc..

Genug der Theorie. So sieht das ganze dann auf dem IPad aus:

Stromverbrauch des Hauses. Rot die Wärmepumpe. Schwarz Netzbezug bzw. wenn negativ: Netzeinspeisung. Grün Photovoltaik Ertrag.

Das ganze ist nicht nur interessant. Man kann damit tatsächlich auch was anfangen. So kann ich z.B. genau sehen, wieviel Temperatur das Haus über Nacht verliert, wenn ich nachts eine niedrigere Heizkurve fahre als tagsüber. Bzw. In der Übergangszeit schalte ich die Wärmepumpe nachts komplett aus. Um möglichst viel PV Strom für die Wärmepumpe zu nutzen.
Ebenso kann man sehr gut sehen, wie sich Wäsche aufhängen, Duschen, Baden, etc. auf die Luftfeuchtigkeit mit dem Entalpietauscher auswirkt. Und ich konnte die Nutzung der PV Anlage für die Wärmepumpe fast ohne Komfortverlust weiter optimieren. Komplett ausgeschaltet bei 5 Grad Außentemperatur verlieren wir nichtmal ein Grad, wenn ich die WP Abends um 20:30 Uhr komplett ausschalte und morgens um 10 Uhr wieder einschalte. Womit wir beim nächsten Thema wären. Ich wollte wissen, wieviel vom Wärmepumpenstrom wir über die PV abdecken. Fakt ist ja, dass wir im Winter am meisten Strom für die Wärmepumpe verbrauchen. Aber auch, dass im Winter bei kurzen Tagen und tiefstehender Sonne nur wenig PV Erträge vorhanden sind (wer hat sich das eigentlich so ausgedacht?). Trotzdem habe ich mal geschätzt, dass wir mit der 10 kWp PV auf dem Dach und meinen Optimierungen gut 30-40% abdecken können sollten.

Aber glauben ist nicht wissen und ein paar Bekannte haben das für viel zu optimistisch gehalten. Also mussten auch dafür Graphen her. Immer wenn ein Datensatz zum Stromverbrauch im Haus rein kommt, landet dieser in einer weiteren Tabelle in er Cassandra und zwar mit folgenden Daten: Stromverbrauch Wärmepumpe, Photovoltaik Ertrag und Abdeckung der Wärmepumpe durch PV Strom. Für diese Berechnung ignoriere ich stumpf alle anderen Stromverbrauche im Haus und tue so als gäbe es nur die Wärmepumpe. Der erste Versuch war die Daten in der Datenbank zu aggregieren. D.h. wenn ich die Daten für einen Monat abrufe dann sind das ein paar hundert Tausend Einträge auf die es ein paar Durchschnittswerte gruppiert nach Monat zu berechnen galt. Mir war klar, dass das nicht besonders performant und auch nicht die finale Lösung wird. Mich hat aber auch interessiert, was die Cassandra auf dem mäßig potenten MiniPC zu leisten vermag. Ich war erstaunt, dass die Daten dennoch in 2-5 Sekunden zur Verfügung standen. Aber spätestens bei der Übersicht für ein Jahr wurde es dann deutlich zu langsam. Also habe ich das aggregieren vom Lesen auf das Schreiben verlegt. Ich pflege jetzt mehrere Tabellen. Eine Stundenbasierte mit allen Daten. Die Daten in dieser Tabelle haben eine TimeToLive von 2h. D.h. nach 2h wird ein Datensatz wieder gelöscht. Eine weitere Tabelle mit den Durschnittswerten für jede Stunde des Tages. Eine weitere für jeden Tag des Monats. Eine weitere für jeden Monat des Jahres und eine letzte für die Jahre die da kommen.

Immer wenn ein neuer Datensatz rein kommt landet er in der Stundentabelle. Gleichzeitig hole ich mir alle Datensätze für die aktuelle Stunde (max. 360) und berechne den Durchschnitt der aktuellen Stunde neu. Diesen trage ich in die Tagestabelle als Durchschnitt für die aktuelle Stunde ein. Dann hole ich mir alle Durchschnittswerte für jede Stunde des aktuellen Tages (max. 24) und berechne den Tagesschnitt neu und trage das Ergebnis in die Monatstabelle ein, usw..
Das Schreiben dauert so etwas länger. Aber immer noch deutlich unter 50ms. Und mich interessiert auch nicht, wie lange das Schreiben dauert. Solange es schnell genug ist, dass alle Daten problemlos weg geschrieben werden können.

Für die Monatsansicht eines Jahres muss ich so also nur 12 Datensätze aus der richtigen Tabelle lesen. Anstatt mehrerer Millionen Datensätze zu aggregieren. Der gesamte Graph läd so im Client in 30-40ms. D.h. man klickt und ohne spürbare Verzögerung wird der Graph angezeigt.

Sabbel nich…wie sieht das Ergebnis aus? So:

Als erstes mal der Januar. Hier sieht man deutlich, dass relativ viel verbraucht wird und relativ wenig von der PV (grün) abgedeckt werden kann. Kalt, kurze Tage, tief stehende Sonne sind eine doofe Kombination.

Zum Vergleich der März. Hier kann ich überwiegend mit PV Strom heizen und Warmwasser bereiten. Der Gesamtverbrauch sinkt. Die PV Abdeckung steigt bereits sehr stark. Das wird jetzt noch verstärkt, weil wir seit ein paar Tagen die Wärmepumpe nur noch für Warmwasser laufen haben und nicht mehr heizen müssen. Und jeder Tag wird länger und die PV Erträge werden bis in den Sommer noch sehr stark ansteigen.

Hier dann die Jahresansicht für 2019. Man sieht deutlich, wie schlecht die Abdeckung im Januar ist (ca. 20%) und im März sind wir bei 65%.

Hier die “All time” Ansicht. Ich habe Daten im aktuellen Format nur für 2019. Im Dezember sind es nur Daten von zwei, drei Tagen. Man sieht aber, dass wir in 2019 jetzt schon mit großen Schritten auf die 40% Abdeckung zugehen. Ab April bis September/Oktober werden wir wohl auf 80-90% Abdeckung kommen, da wir nur noch Warmwasser machen müssen und die PV Erträge deutlich höher und länger über den Tag verteilt sein werden.

Also wieviel Wärmepumpenstrom kann denn jetzt von der PV über das Jahr verteilt abgedeckt werden? Keine Ahnung…fragt mich am 31.12.2019 um 23:59 Uhr nochmal. Dann weiß ich mehr. Aber ich korrigiere mein vorherigen Schätzungen mal auf deutlich über 40%.

D.h. unsere sowieso schon niedrigen Heizkosten von ca. 400-500€ / Jahr werden zu mindestens 40% … vermutlich noch etwas mehr von der PV getragen. Ergo tatsächlich zahlen wir wohl unter 300€ für Heizung- und Warmwasser für ca. 250qm beheizte Wohnfläche. In der 74qm Wohnung lagen wir deutlich über 600€.

Man kann also sagen, dass unser Heizkonzept ganz gut aufgeht und sich die Investition in gute Dämmung und vor allem die PV sehr schnell bezahlt machen wird. Die Mehrkosten von KFW55 (Standard bei Weberhaus) zu KFW40 wurden bei uns vom Tilgungszuschuss der KFW Bank übertroffen und die PV hat sich in ca. 3-4 Jahren (dann ist sie 6 bzw. 7 Jahre alt) bereits selbst bezahlt, wenn es so weiter geht. Das einzige, was mich ärgert ist, dass ich das Dach nicht gleich mit PV voll gemacht habe. Dann wären nämlich 20-25 kWp aufs Dach gegangen. Der Preis pro kWp wäre gesunken, die Abdeckung des Wärmepumpenstrom bei schlechtem Wetter/Winter wäre deutlich höher und auch diese Mehrinvestition hätte sich innerhalb von 6-8 Jahren selbst bezahlt. Aber dazu vielleicht später mal mehr.

Gartenbeleuchtung

Es ist wieder viel passiert und es geht auf das Ende des Urlaubs zu. Endlich ist der Urlaub vorbei und ich kann wieder normal arbeiten! Das ist nicht so anstrengend. 🙂 Ok, es macht aber auch noch Spaß und das Ergebnis entschädigt für alles.

Ich habe ja ein 5 Adriges Kabel in den Garten verlegt und als Reserve ein weiteres 5 Adriges von der anderen Seite, welches aber erstmal nur für die Zisternenpumpe benutzt wird.

1 Ader Nullleiter, 1 Ader Erde, 1 Ader Phase/Dauerstrom. Bleiben zwei freie Adern, die ich schalten kann. Eine davon habe ich jetzt an das Eltako/Enocean Bussystem angeschlossen. Dazu brauchte ich einen neuen Schaltaktor (FSR14-2x). Ich hab zwar noch zwei freie Kanäle an meiner FSR14-4x Batterie, aber die hängen an der falschen Sicherung.

Also alles im Zählerkasten entsprechend verkabelt und dann eingelernt. Die Gartenbeleuchtung (3 Gartenstrahler bisher) dann mit an die Terrassenbeleuchtung programmiert. Diese wird ja durch zwei Bewegungsmelder am Erker, Taster im Haus oder eben myHomeControl / Apple Homekit über Handy/Tablet gesteuert. Das ganze geht jetzt immer gemeinsam an- und aus. Über myHomeControl / Apple HomeKit kann ich beides auch getrennt schalten…brauchen wir aber eigentlich nicht.

Die Strahler werden dann unseren Amberbaum, die Felsenbirne und die Sauerkirsche anleuchten. Haben wir alles noch nicht, aber fest eingeplant. 🙂

Achja, der ausgesähte Rasen wächst auch, wie Sau. Leider auch unser geliebter Sauerampfer und ich kann nicht auf die Rasenfläche, um den raus zu reissen. Werde ihn jetzt bis zum ersten Mähen dran lassen und dann erstmal abmähen. Und vor dem zweiten Mähen dann die Wurzeln entfernen. Letzteres reisst nämlich ganz ordentliche Löcher in den Boden. Das möchte ich auf der frischen Rasenfläche vermeiden, bis der Rasen fest verwurzelt ist.

 

Gartenbeleuchtung

MiniPC für myHomeControl / StandBy Verbrauch

Auf Wunsch hier noch ein Bild vom MiniPC auf dem unsere Haussteuerung „myHomeControl“ läuft. Ich bin ein möglichst kein StandBy-Verbrauch Nazi, aber der Verbrauch von dem Ding war so niedrig, dass sogar ich das akzeptiert habe. Muss das Katalog Versprechen noch nachmessen. Angegeben waren glaube ich <5W.

Insgesamt haben wir mit dem ganzen Eltako EnOcean Zeug, laufender Wohnraumlüftung, laufender Heizung (im StandBy/Schnüffelmodus), MiniPC, Router, WLAN Repeater, einer schaltbaren EnOcean Steckdose (Permundo Smart Plug), etc. ca. 70W Stromverbrauch, wenn sonst alles im Haus ausgeschaltet ist. Ggfs. komme ich noch ein wenig weiter runter, muss nur Zeit finden das ein oder andere zu messen und auszuprobieren.

Mini-PC

Mini-PC

Verkabelung, etc. alles noch ein wenig provisorisch, bis ich einen passenden 19″ Schrank gefunden und installiert habe. Ist aber auf der Prioritätenliste gerade nicht sehr weit oben…

Wetterstation

Schon vor Wochen habe ich die Wetterstation von Eltako (Multisensor MS) zusammen mit der Sat-Antenne auf dem Dach montiert. Schlauerweise ein Foto von der Verkabelung gemacht:

Wetterstation

Wetterstation

Die Flecken auf der Hose sind übrigens Parkettklebereste.

Immer noch eine nette Aussicht vom Dach über das Wohngebiet. Jetzt habe ich mir endlich mal die Zeit genommen das ganze im Zählerschrank anzuschließen. Es braucht dafür noch ein Wetterdatengateway und ein 24V Netzteil.

Die beiden habe ich dann auf der Hutschiene an entsprechender Stelle montiert. Weil ich damit eine neue Reihe anfangen musste, brauchte ich ein sündhaft teures Busbrücken Kabel von Eltako. Dann das KNX Kabel ordentlich durch die Kabelkanäle von unten in den Zählerkasten gezogen. Und alles verkabelt bis auf die Stromversorgung. Für letztere hätte ich nur den richtigen Sicherungsautomaten abschalten müssen. Aber sicher ist sicher und ich hab mal das gesamte Haus vom Strom getrennt.

Eltako Zeuch und Kabel

Eltako Zeuch und Kabel

Sieht kompliziert aus. Aber wenn man einmal durchgeblickt hat, geht das eigentlich. Neu für die Wetterstation sind die beiden blauen Dinger unten links. Ganz links das Netzteil und daneben das Wetterdatengateway. Das Netzteil habe ich mit an den Sicherungsautomaten für die Aussenbeleuchtung gehangen. Braucht eh kaum Strom (0,5A).

Vor dem Gateway mit dem weißen Barcode Aufkleber ist ein Dimmer mit zwei Abstandshaltern montiert. Ab dem ist alles nachgerüstet, weil wir es bei der Bemusterung noch nicht kannten oder es über Weberhaus unverhältnismässig teuer gewesen wäre. Ein Dimmer z.B. waren bei Weberhaus glaube ich >180€. Bezahlt habe ich jetzt ca. 50€.

Die eigenen Aktoren/Eltako Bauteile der Reihe nach: Dimmer, Stromzähler für Wärmepumpe, Dimmer, Netzteil Wetterstation, Wetterdatengateway. Ein weiterer Dimmer für das Badezimmer liegt bereit und das ein oder andere kommt noch. Dazu später mehr.

Eltako Aktoren

Eltako Aktoren

So sehen die Wetterdaten dann in myHomeControl aus:

Wetterdaten

Wetterdaten

Die Ansicht mit den Statistiken ist ganz nett. Der eigentliche Hintergrund der Wetterstation ist die Steuerung der Rollläden, etc. über die tatsächlichen Daten vor Ort anstatt einen Online Wetterdienst zu nutzen.

Aber ehrlicherweise muss ich sagen, dass die Steuerung über WorldWeatherOnline sehr gut funktioniert hat. Ja, wir hatten die Verschattung auch bei starker Bewölkung schon unten. Aber das war vielleicht 2,3 Mal der Fall. Ansonsten hat das auch über den Online Wetterdienst sehr gut funktioniert. Die Wetterstation habe ich uns aber schon zugelegt, bevor ich das wusste. Bereue es aber trotzdem nicht. Schöne Spielerei.

So sieht das ganze in der Netzwerkansicht von myHomeControl aus. Rechts sind die Rollladen-Aktoren. In der Mitte die Beschattungslogik für die einzelnen Hausseiten und links die Datenquellen. Einmal der Wetterdienst, welcher jetzt nur noch für die Temperaturhistorie der letzten Tage benötigt wird. Und unten links dann die Wetterstation, welche für die Rollladensteuerung die Außentemperatur, die Sonnenlichtintensität aus Süd-, West- und Ost-Richtung liefert. Über die Beschattungslogik setzt man dann Schwellwerte bei denen die Beschattung auslösen oder eben nicht auslösen soll. Da haben wir jetzt ganz brauchbare Werte gefunden. Bin gespannt, wie das im Winter passt, wenn die Sonne genutzt werden soll das Haus  aufzuheizen, aber nicht zu sehr.

Ein paar Regeln als Beispiel:

< 19 Grad Außentemperatur – Keine Verschattung
< 22 Grad Innentemperatur – Keine Verschattung
< 32000 LUX Sonnenlicht auf der jeweiligen Seite – Keine Verschattung

Dazu kann man noch exakt den Einfallswinkel der Sonne aus den Himmelsrichtungen und auch von oben (Dachüberstand) pro Seite und Fenster setzen. Hier mussten wir einiges korrigieren, weil z.B. die Westseite sonst viel zu spät verschattet hat.

Netzwerkansicht

Netzwerkansicht

Die automatische Beschattung ist im Sommer tatsächlich Gold wert.