Manfreds Homepage

Manfred Tremmels Homepage - Smart Home mit Home Assistant

Home Assistant Logo

Smart Home mit Home Assistant

Warum ein Smart Home System?

Im Prinzip läuft die PV-Anlage problemlos ohne Smart Home System, mein SMA-Wechselrichter wird als externer Generator beim RCT-Wechselrichter eingebunden und so laufen die Daten zusammen. Wenn ich aber Informationen z.B. eines gewissen Strings überprüfen will, muss ich mich im Webinterface des SMA-Wechselrichters anmelden und dort nachschauen. Die Auswertungsmöglichkeiten dort sind begrenzt, SMA hat defür die Energy App und das Sunny Portal im Programm, aber da bekomme ich die RCT-Daten nicht rein und die Daten sollen ja auch schön bei mir bleiben und nicht ins Internet!

Einige Funktionen, wie das Prognose basierte Laden des Akkus, scheint mir nicht optimal umgesetzt, irgendwie ist der Akku immer früh voll, oder blieb zu lange leer. Da sollte mit mehr Daten und eigenen Erfahrungswerten mehr möglich sein.

Und dann ist ja auch noch die Wärmepumpe, die keine SG Ready Schnittstelle bietet und so nicht über den Wechselrichter angesteuert werden konnte. Da sollte doch auch was machbar sein, oder?

Warum Home Assistant?

Wer hier einen großen Vergleich von Smart Home Systemen erhofft, wird leider enttäuscht werden. Ich hatte einen Raspberry Pi 3 herumliegen, das System sollte Open Source sein und ich hab im PV-Forum gelesen, dass sich die Wechselrichter recht problemlos einbinden lassen.

Also installiert, für gut befunden und dabei geblieben, das wars auch schon ☺

Home Assistant Installation

Die Installation ist auf der Seite des Projekts gut erklärt, mit dem Raspberry Pi Imager eine SD-Karte beschrieben, in den Raspberry Pi gesteckt, diesen die Grundeinrichtung vornehmen lassen. Bei dem alten 3er dauert das durchaus eine Weile, eventuell wird der künftig mal durch ein leistungsfähigeres Modell ersetzt. Im laufenden Betrieb aber kann ich nicht klagen.

Sobald die Basiseinrichtung erledigt ist, erkundet Home Assistant seine Umgebung, ob Netzwerk, Bluetooth oder andere zur Verfügung stehende Schnittstellen, was gefunden und erkannt wird, wird zur Einrichtung angeboten. Die Wechselrichter sind nicht darunter, sie erfordern weitere Plugins.

RCT Power Wechselrichter und Home Assistant

Home Assistant Community Store

Basis für die Einbindung der meisten Wechselrichter ist der Home Assistant Community Store (HACS), so auch für RCT-Power und SMA. Die Installation ist mit wenigen Klicks entsprechend der Anleitung erledigt. Nach der Installation und dem Neustart findet sich der HACS-Eintrag in der Seitenleiste.

Über diesen Eintrag in der Seitenleiste HACS aufrufen, im Filter oben RCT eintippen und das passende Plugin "RCT Power" installieren.


Home Assistant RCT Erweiterung per HACS

In „Einstellungen‟ → „Geräte und Dienste‟ → „RCT Power‟ kann per „Eintrag hinzufügen‟ jetzt der Wechselrichter, mit Batterie aufgenommen werden. Einzustellen sind drei Parameter:


Home Assistant RCT Wechselrichter hinzufügen

Konfiguration der angezeigten Daten

Das Plugin bietet extrem viele Daten, der Abruf vom Wechselrichter ist aber nicht besonders stabil (kennt man auch von der RCT App, da kommen auch immer mal wieder keine Daten), es ist durchaus empfehlenswert, sich hier auf die benötigten Informationen zu beschränken. Unter „Einstellungen‟ → „Geräte und Dienste‟ → „RCT Power‟ → „x Entitäten‟ kann man sich alle Daten anzeigen und mit einem Klick auf die rechte Spalte Details anzeigen. Dort über das Zahnrad kann die Konfiguration geöffnet werden, die auch eine Aktivierung bzw. Deaktivierung gestattet.

Integration ins Home Assistant Energie Dashboard

Das Energie Dashboard ist die Schaltzentrale für den Energiefluss im Haus, bzw. in oder aus selbigem. Solange es nicht eingerichtet ist, kommt man mit dem Aufruf aus der Seitenleiste direkt in die Konfiguration, ansonsten kann diese rechts oben über die drei Punkte → „Energiekonfiguration‟ aufgerufen werden.


Home Assistant Energie Dashoard Einstellungen

Folgende Sensoren vom RCT-Wechselrichter sind hier einzutragen:

Empfehlenswert ist auch, Erzeugungsprognosedaten zu hinterlegen, genaueres dazu lesen Sie bitte in der offiziellen Doku nach, oder schauen Sie das Erklärvideo auf youtube an: Home Assistant Energy Dashboard erklärt: Von der Einrichtung bis zu coolen Karten (Hinweis: da wird einiges mehr besprochen, wer nur das Energie Dashboard einrichten will, kann die ersten gut sechs Minuten überspringen).


Home Assistant Energie Dashoard in Betrieb

Parameter des Wechselrichters ändern

Das oben erwähnte „RCT Power‟ Plugin ermöglicht es diverse Daten aus dem Wechselrichter auszulesen, nicht aber, Einstellungen zu ändern. Um die Lücke zu schliessen, kann das rctpower_writesupport Script verwendet werden.

Die Installation erwies sich bei mir als etwas tricky, ich hab es mit folgenden Schritten durchgeführt:

SMA Wechselrichter und Home Assistant

Installation über Home Assistant Community Store

Analog dem RCT Wechselrichter, erfolgt auch die SMA-Integration per Home Assistant Community Store (siehe dort: HACS). Es stehen zwei Plugins zur Verfügung, wichtig ist hier, das "SMA Devices Plus" zu verwenden, denn nur dieses unterstützt neuere EnnoxOS basierende Wechselrichter, wie meinen Tripower X.


Home Assistant Energie SMA Wechselrichter hinzufügen, Typ Auswahl

Home Assistant Energie SMA Wechselrichter hinzufügen, IP und Zugangsdaten

Konfiguration der angezeigten Daten

Das Plugin bietet deutlich mehr Daten an, als per Default zur Verfügung gestellt werden. Diese stellen wohl den kleinsten gemeinsamen Nenner der unterstützten Wechselrichter da. Mir fehlten vor allem die Daten des dritten MPPs, die zwar vordefiniert, aber deaktiviert sind. Unter „Einstellungen‟ → „Geräte und Dienste‟ → „SMA Device Plus‟ → „x Entitäten‟ kann man sich alle Daten anzeigen, und mit einem Klick auf die rechte Spalte die Details dazu. Ein Klick auf das Zahnrad öffnet die Konfiguration in welcher eine Aktivierung als auch Deaktivierung durchgeführt werden kann.

Es ist durchaus empfehlenswert, sich hier auf die benötigten Informationen zu beschränken, um den Speicherbedarf im Zaum zu halten.

Parameter des Wechselrichters ändern

Das „SMA Devices‟ Plus Plugin bietet direkt die Möglichkeit Parameter im Wechselrichter zu setzen, für das Power Limit wird dies unter Set Parameter beschrieben. Könnte noch interessant werden, wenn ich einen iMSys mit Steuereinheit bekomme (siehe auch meine Vorbereitung einer Konfiguration für eine Abregelung).

Vitocal 350-A Wärmepumpe und Home Assistant

Voraussetzungen

Leider wird es jetzt etwas komplizierter, die Wärmepumpe Vitocal 350-A mit ihrer Steuereinheit Vitotronic 200 bietet noch keine Netzwerkanbindung, zugreifen kann man lediglich über die Optolink-Schnittstelle. Im Internet finden sich diverse Bauanleitungen für die Anbindung. Mir war das ehrlich gesagt zu heikel, und ich habe mich für das offizielle Optolink Kabel von Viessmann entschieden, das man als Ersatzteil unter der Artikelummer 7856059, bzw. EAN/GTIN 4054465085245 bestellen kann. Das Kabel steckt man an die USB-Schnittstelle des auslesenden Rechners, also in meinem Fall den Raspberry Pi und die V-förmige Auslassung zwischen den beiden Dioden. Es musste noch eine Netzwerkbuchse in den Technikraum, aber das ist eine andere Geschichte.


Home Assistant Raspberry Pi mit „professioneller‟ Kabelbinderaufhängung

Installation des passenden Plugins

Nachdem die Hardwareanbindung erledigt war, ging es an softwareseitige Integration. Mit Home Assistant VControl existiert ein Plugin, das basierend auf vcontrold die Daten auslesen kann und per MQTT an Home Assistant weiterleitet.

Um die Daten verarbeiten zu können wird zunächst der Mosquitto Broker installiert, per „Einstellungen‟ → „Add-ons‟ → „ADD-ON STORE‟ aufrufen nach Mosquitto suchen und installieren.

Das Home Assistant VControl ist nicht im offiziellen Repository, das passende Repository kann per Home Assistant VControl Homepage mit einem Klick hinzugefügt werden und das Plugin installiert werden. An und fürsich wäre es das schon, allerdings hat das Plugin nur wenige Daten für noch weniger Wärmepumpen vorkonfiguriert.

Konfiguration des passenden Plugins

Als erstes gilt es festzustellen, welches Modell man installiert hat. Ein guter Einstiegspunkt war für mich die Sammlung ViessData21 auf Github das DP_Listen_2.zip Archiv enthält eine Vielzahl gesammelter Daten. Die Datei devices.csv aus dem Archiv listet dabei die IDs und Benennungen der verschiedenen Kombinationen, meine findet sich in Zeile 9, ID: 2049, leider eine Variante, die von der mitgelieferten Konfiguration nicht unterstützt wird.

Also geht es los, eine passende Konfiguration zu zimmern. Basis stellte eine fertige Konfiguration für eine Wärmepumpe mit ID 204D, die ich im Internet gefunden habe und die Adressen, die bei openv gesammelt wurden. Entstanden sind dabei folgende Konfigurationen:

Das Plugin ruft regelmässig die Daten von der Wärmepumpe ab, allerdings nicht alle, die in der vito.xml hinterlegt sind, sondern nur die, die man in der Pluginkonfiguration nochmal explizit angibt unter „Einstellungen‟ → „Add-ons‟ → „Vcontrol add-on‟ → „Konfiguration‟ → „Commands‟


Home Assistant Vcontroll Plugineinstellungen

PV-Live Dashboard

Das Energie Dashboard bietet viele interessante Daten und Auswertungen, basiert allerdings auf stündlich aktualisierte Verbrauchsdaten. Wer schnell die aktuelle Produktion oder den Akku-Stand nachsehen will, wird nicht fündig. Deshalb habe ich mir ein eigenes Dashboard gebaut, dass primär auf der Power Flow Card Plus Karte basiert. Diese Karte sieht ähnlich wie die Energieverteilung Karte des Energie Dashboards aus, kann aber Live-Daten anzeigen.

Helfer

Für die Power Flow Card Plus Karte müssen die Erträge der beiden Wechselrichter zusammengefasst werden, denn die Karte erlaubt es nicht mehrere Sensoren einzutragen.

Unter „Einstellungen‟ → „Geräte und Dienste‟ → „Helfer‟ → „Helfer erstellen‟ (rechts unten im Eck) wird ein Statistik Helfer erstellt, ich habe ihn „Solar Power Generators All Strings‟ und dort die Stringwerte eingetragen und daraus die Summe gebildet. Da die Daten auf Watt-Ebene vorliegen, reicht bei Genauigkeit eine Null (keine Nachkommastellen).

Addiert werden:


Home Assistant Helfer der die Summe aller Strings addiert

Der Hausverbrauch wird von Power Flow Card Plus errechnet, berücksichtigt aber keine Verluste von Wechselrichter und Batterie, die Angaben stimmen also nur dann, wenn reiner Netzbezug herrscht. Die Karte erlaubt aber auch einen Sensorwert einzutragen um diesen, statt der berechneten Werte zu verwenden. RCT liefert zwar Consumer Power als Wert, aber der geht immer wieder ins Negative, wenn der SMA-Konverter zum laden des Akkus beisteuert. Demzufolge habe ich mir auch diesen Wert mit einem Helfer selbst errechnet, ich hab ihn „Power Consumption of the house‟ genannt.

Addiert werden hier (nicht wundern, die Sensoren liefern teils negative Werte, in Summe kommt der eigene Verbrauch raus):

Batterie Kapazität ermitteln

Ein Datum, das mir immer in der App gefehlt hat, war die Kapazität der Batterie. Einerseits um Probleme zu erkennen, andererseits auch um im Garantiefall (min. 80% Kapazität nach 10 Jahren) etwas in der Hand zu haben.

Aus dem Wechselrichter können die beiden Werte sensor.rct_power_storage_battery_used_energy (entnommene Energie in Wattstunden) und sensor.rct_power_storage_battery_stored_energy (gespeicherte Energie in Wattstunden) ausgelesen werden. Der Zeitpunkt, zu dem die Entladung eines Kalibrierungslaufs startet und endet kann wiederum vom RCT Power Storage Battery Status abgeleitet werden. Er ändert sich beim Beginn der Entladung von „charging‟ auf „discharging‟ und wenn er damit fertig ist, auf „normal‟. Werden zu beiden Zeitpunkten die genannten Werte zwischengespeichert, kann aus deren Differenzen die Kapazität errechnet werden.

Als erstes habe ich dafür vier numerische Eingabefelder als Helfer definiert (habe nichts passenderes gefunden), in denen die Werte zwischengespeicher werden:


Home Assistant Helfer numerische Eingabefelder

Ein weiterer Helfer definiert als Template errechnet den Wert mit folgendem code:

{{ ((float(states('input_number.rct_battery_calibratione_unload_used_ende')) - float(states('input_number.rct_battery_calibratione_unload_used_start'))) - ((float(states('input_number.rct_battery_calibratione_unload_stored_ende')) - float(states('input_number.rct_battery_calibratione_unload_stored_start'))))) | round(2) }}


Home Assistant Helfer errechnen der Batteriekapazität

Jetzt müssen nur noch die Dummy-Eingabefelder mit den Werten zum entsprechenden Zeitpunkt bestückt werden. Unter „Einstellungen‟ → „Automation & Szenen‟ → „Automationen‟ habe ich zwei Automationen angelegt:

Beide beziehen sich auf die Statusänderung und führen dann je zwei Aktionen aus, in denen die Werte in die Eingabefelder geschrieben werden. Ich rechne die Werte dabei von Watt auf Kilowatt um und runde auf zwei Nachkommastellen, dazu muss die Aktion im YAML Modus bearbeitet werden, der Code sieht dann wie folgt aus:


Home Assistant Automation, zwischenmerken der Werte

Power Flow Card Plus Karte

Die Karte stammt aus dem HACS und kann daraus nachinstalliert werden. Für die Darstellung der Live-Daten nutze ich folgende Sensoren:

Horizon Karte

Auch diese Karte habe ich aus HACS nachinstalliert, sie zeigt Sonnenauf- und -untergang an und lief ohne weitere Konfiguration.

Das ganze Dashboard

Ansonsten habe ich mit der Entitäten-Karte eine Liste für mich relevanter Daten aufgenommen, per Staistikdiagram den Verlauf der einzelnen Strings, des Netzbezugs bzw. der Netzeinspeisung als auch der Batterie dargestellt. Die Wettervorhersagekarte auf Stundenbasis rundet die Sache dann ab.

Das ganze Dashboard als yaml kann unter ha_pv-live_dashboard.yaml herunter geladen werden.


Home Assistant PV-Live Dashboard

Wärmepumpen Dashboard

Das Dashboard für die Wärmepumpe ist im Moment noch nicht besonders hübsch, ich habe die Felder in drei Bereiche geteilt, denen ich je eine Spalte gewidmet habe, Wärmepumpe, Heizen und Warmwasser, desweiteren habe ich sie in drei Unterseiten aufgeteilt, Informationen, Einstellungen und Diagnose, um den Überblick nicht zu verlieren.

Herunterladen können Sie des Dashboard im YAML-Format als ha_waermepumpen_dashboard.yaml.


Home Assistant Wärmepumpen Dashboard - Info-Bereich

Home Assistant Wärmepumpen Dashboard - Einstellungen-Bereich

Home Assistant Wärmepumpen Dashboard - Diagnose-Bereich

Automatisierungen

Mit den ganzen Informationen aus Wärmepumpe und den Wechselrichtern kann man natürlich nicht nur Dashboards befüllen und manuell Werte setzen, Interessant wird es erst, wenn man Home Assistant das regelbasiert selbst machen lässt.

Netzdienliches und schonendes Batterieladen

RCT bietet ein Prognose basiertes Laden an, aber mal ehrlich, bei wem funktioniert das wie es sein sollte? Im Sommer ist die Batterie oft voll, bis der Wechselrichter den Zielwert runter setzt und im Winter bei sonnigem Vormittag und dunklem Nachmittag steht man gelegentlich mit einem halb gefüllten Akku da.

Für die Batterie ist es nicht gesund, wenn sie den halben Tag voll rum steht und netzdienlich ist es, möglichst die Mittagsspitze zu kappen, deshalb öffne ich den Höchstwert erst ab 11 Uhr. Ausserdem muss der Akku nicht randvoll beladen werden, wenn der nächste Tag gute Erträge erwarten lässt.

Mit den Informationen, die zur Verfügung stehen, habe ich mir folgende Regeln zusammen gebastelt:

Drei Helfer habe ich mir dazu angelegt:

In Home Assistant sieht die Abfrage des Sensor Templates dann als YAML Code so aus:

{% set epr_today = float(states('sensor.energy_production_today_remaining_sum')) %}
{% set ep_tomorrow = float(states('sensor.energy_production_tomorrow_sum')) %}
{% set heating_on = ((is_state("select.mosquitto_mqtt_broker_betriebsart_2", "Heizen+WW") | bool) or (is_state("select.mosquitto_mqtt_broker_betriebsart_2", "Party") | bool)) %}
{% if ((epr_today > 40 and heating_on) or (epr_today > 20 and heating_on == false)) and now().hour < 11 -%}
  27
{%- elif ((epr_today > 30 and heating_on) or (epr_today > 15 and heating_on == false)) and now().hour < 11 -%}
  37
{%- elif ((epr_today > 20 and heating_on) or (epr_today > 10 and heating_on == false)) and now().hour < 11 -%}
  47
{%- elif ((epr_today > 15 and heating_on) or (epr_today > 7 and heating_on == false)) and now().hour < 11 -%}
  57
{%- elif ((epr_today > 10 and heating_on) or (epr_today > 5 and heating_on == false)) and now().hour < 11 -%}
  67
{%- elif ep_tomorrow > 40 and heating_on == false -%}
  77
{%- elif ep_tomorrow > 20 and heating_on == false -%}
  87
{%- else -%}
  97
{%- endif %}


Home Assistant Helfer Batteriezielwert errechnen

Das ganze muss jetzt noch an den Wechselrichter übermittelt werden, dazu ist dient eine Automation, die immer getriggert wird, wenn sich der Wert ändert. Unbekannte und nicht vorhandene Stati nehme ich dabei sicherheitshalber aus (geht leider nicht im visuellen Modus).

Dabei kommt das Script rct_ha_call aus dem rctpower_writesupport Projekt zum tragen, beachten muss man dabei, dass der Prozentwert durch 100 geteilt werden muss. Die Action lautet:

action: pyscript.rct_ha_call
metadata: {}
data:
  value: >-
    {{ (float(states('sensor.calculated_rct_battery_soc_maximum')) / 100) |
    round(2) }}


Home Assistant Automation SOC max setzen

Partymodus der Wärmepumpe nutzen

Die Wärmepumpe bietet mit dem sogenannten Partymodus die Möglichkeit eine alternative Raumtemperatur vorzugeben. Da ich Fußbodenheizung habe und der Estrich der größte Wärmespeicher im Haus ist, bietet es sich an, bei PV-Überschuss diesen zu aktivieren, damit Reserven für die Nacht geschaffen werden. Der Modus muss natürlich auch deaktiviert werden, sobald der restliche Ertrag einen Schwellwert unterschreitet.

Die Regeln für die Aktivierung lauten wie folgt:


Home Assistant Automation Wärmepumpe Partymodus aktivieren bei Stromüberschuss

Eine Deaktivierung wird durchgeführt, sobald:


Home Assistant Automation Wärmepumpe Partymodus deaktivieren bei Stromknappheit

Ein Problem ist noch die Einzelraumsteuerung von Uponor. Die weiß nichts vom Partymodus und schließt die Ventile, sobald die eingestellte Wunschtemperatur erreicht wurde. Bisher habe ich nur Projekte gefunden, die die Werte der Thermostate auslesen können, aber noch keine, die sie setzen. Mal schauen, was ich da noch erreichen kann.

Warmwasseraufbereitung bei Stromüberschuss

Eigentlich sorgt die Zeitsteuerung für eine Aufbereitung um 12 Uhr auf die erhöhte Warmwasserstufe sorgen, sobald allerdings der Partymodus aktiv ist, wird nur bis zur normalen Warmwasserstufe erwärmt. Ich habe deshalb noch zwei Automationen angelegt, eine zur Aktivierung der einmaligen Warmwasseraufbereitung und eine zur Deaktivierung, sobald die Wunschtemperatur erreicht ist (ansonsten hört die WP zwar mit der Aufbereitung auf, aber die einmalige Aufbereitung bleibt aktiviert in den Einstellungen).

Die Regeln für die Aktivierung lauten wie folgt:


Home Assistant Automation Wärmepumpe einmal Warmwasseraufbereitung im Party Modus aktivieren

Eine Deaktivierung wird durchgeführt, sobald:


Home Assistant Automation Einmal Warmwasseraufbereitung beenden, wenn Zieltemperatur erreicht

Einspeiselimit der Wechselrichter setzen (vorbereitend für iMSys und Steuerbox)

Eine Abregelung des Wechselrichters per iMSys und Steuerbox erwartet uns künftig wohl alle mit PV. Dabei soll nach Möglichkeit zumindest ein Netzbezug vermieden werden und bei Steuersignal 0% nur die Einspeisung auf 0 geregelt werden.

Mein RCT Power Wechselrichter hat die nötigen Informationen und nutzt die auch, man kann den Prozentwert setzen und er versorgt weiter Haus und Batterie. Der SMA Wechselrichter hingegen ist blind und würde abschalten. Wenn aber vom Garagendach (an dem der RCT hängt) nicht genug kommt, wäre wieder Netzbezug die Folge.

Wie könnte das jetzt funktionieren?

Umsetzung, erst mal ein paar Helper anlegen:

Dazu zwei Automationsfunktionen, die die Werte bei Änderung der entsprechenden Werte zu den Wechselrichtern überträgt:

Ein kleines Dashboard zum testen erstellt und nun gilt es noch zu warten auf das iMSys und die Steuerbox, mal schauen, wie ich das Limit in Home Asisstant bekomme. Ich hab hier einfach nur die Nötigen Werte in eine Entitätenkarte gepackt, die YAML Datei kann hier heruntergeladen werden.


Home Assistant Dashboard mit 100% Einspeisung

Home Assistant Dashboard mit 0% Einspeisung und richtig hohem Eigenverbrauch, der trotzdem gedeckt wird