PV Überschuss Control für Home Assistant

Da ich bisher nichts vernünftiges finden konnte, plane und erstelle ich gerade ein neues Home Assistant Control für die Steuerung, was mit meinem PV-Überschuss passieren soll.

Zwar habe ich NULL Ahnung von den Home Assistant Internas oder von den dort verwendeten Programmiersprachen, aber nichts desto trotz kann ich gut 45 Jahre Programmiererfahrung vorweisen. Entsprechend kommt die Vision von mir, die Details von mir und die Umsetzung von der KI. Ob am Ende wirklich etwas brauchbares herauskommen wird, kann ich zwar nicht garantieren, aber bis jetzt bin ich noch optimistisch.

Zur Zeit plane ich mit drei Kernkomponenten:

  • ein Steuerelement, in welchem die Verteilung eingestellt werden kann
  • ein Steuerelement, in welchem die aktuelle Aufteilung live angezeigt wird
  • eine Engine, welche im Hintergrund die Verteilung vornimmt und an die Devices weiterleitet

Das erste Control hat nun einen guten Stand erreicht und ich möchte euch meine Idee dazu zeigen. Ich würde mich über Feedback freuen, wobei insbesondere folgende Fragen interessant sind:

  • Könnte das Control euch bei eurer Überschussregelung behilflich sein?
  • Gibt es etwas, dass ihr zwingend noch benötigen würdet, dass es für euch benutzbar wäre?
    (Bitte hier jetzt keine zusätzlichen Features auflisten, die angenehm, aber nicht zwingend sind. Weitere Features können kommen, wenn es soweit einmal stabil ist)
  • Übersehe ich in meinem Ansatz etwas essentielles, was es unbenutzbar machen könnte?

Ok ... hier einmal das erste Control:

Hier wird definiert, wie ein PV-Überschuss zu verteilen ist.
Der Überschuss "kommt oben rein" zur ersten Zeile (sagen wir mal 15kW). Hier wird er prozentual entsprechend der Anordnung (66%/34%) auf die beiden Energy Sharing Partner aufgeteilt.
Jedes Gerät kann an eine beliebige Stelle gezogen werden. Sind mehrere Geräte in einer Zeile, kann die Breite (die prozentuale Verteilung) durch Ziehen des Sliders dazwischen beliebig verteilt werden.

  • Als Beispiel gehen wir einmal von 15kW Überschuss aus,
    die Verteilung beginnt in der obersten Zeile
    • die 15kW werden prozentual entsprechend der Anordnung (75% = 11,25kW /25% = 3,75kW) auf die beiden Energy Sharing Partner aufgeteilt
    • Der erste Partner benötigt aktuell nur 1 kW, der zweite 4 kW
      • hier gibt es zwei Optionen:
        Wenn links in der Zeile der Schalter "flexibl aufteilen" aktiv ist, dann werden die von Partner 1 nicht genutzten 10,25kW noch dem zweiten Partner angeboten - der kann dann also 4kW bekommen.
        Ist "flexibel aufteilen" nicht aktiv, erhält der zweite Partner nur die prozentualen 3,75 kW, alles weitere geht in die nächste Zeile
  • Zweite Zeile:
    • der verfügbare Überschuss wird entsprechend Einstellung 50/50 auf Wallbox und Warmwasser aufgeteilt. Die beschriebene Sonderregel (bis 60%) erklärt sich weiter unten in der Konfiguration.
  • Die Verteilung wird Zeile für Zeile bis nach unten fortgesetzt. Was dann noch übrig bleibt, geht über den letzten Punkt in die Einspeisung
  • Über die Schalter bei den Geräten können einzelne Verbraucher bedarfsweise abgeschaltet werden.
  • Jede Einstellung kann oben als eine "Szene" unter beliebigem Namen abgespeichert oder auch wiederhergestellt werden. Szenen können natürlich auch wieder gelöscht werden.

Die Konfiguration:

  • Im Abschnitt Darstellung lassen sich Titel, Symbol und auch die Fähigkeiten der Karte ändern. Das ist im Kern weniger spannend

  • Der Gerätepool ermöglicht es, komplett unterschiedliche Verteilungspläne zu erstellen. So wäre z.B. ein Pool "PV Überschussverteilung" (mit Akku, Warmwasser, etc.), aber auch zusätzlich etwas ganz anderes (doofes Beispiel: Brunnenwasser auf Pflanze 1, Pflanze 2, etc.) denkbar. Oder auch zusätzliche, unabhängige PV-Anlagen in anderen Gebäudeteilen.
    Auch hier können wieder beliebige Namen verwendet werden.

  • Die Geräteliste erlaubt es, beliebige Verbraucher zu definieren und hinzu zu fügen. Durch Anklicken werden die Details angezeigt / einstellbar:

    • Als erstes kommt wieder der Anzeigename, Symbol und Farbe

    • Unter "Sollwert" wird festgelegt, wie der angedachte Sollwert an das jeweilige Gerät gemeldet werden soll. Dazu stehen folgende Optionen zur Auswahl:

      • Der Wert wird einfach in ein Zahlenfeld geschrieben:

      • Es wird ein Schalter ein-/ausgeschaltet, wenn ein bestimmter Überschuss für x Sekunden verfügbar oder nicht mehr verfügbar war. Ausschalten ist hier optional, es wäre somit also möglich, z.B. die Waschmaschine zu starten, sobald genügend Überschuss gegeben ist:

      • Ein Skript aufrufen und den verfügbaren Überschuss an einen Parameter übergeben. Damit ist jede Möglichkeit nach hinten offen. Meine Wallbox z.B. kann nur in Stufen gesteuert werden - mit Hilfe des Skripts kann ich den Sollwert dann in eine entsprechende Stufe übersetzen:

    • Im Abschnitt "Ist-Leistung" kann festgelegt werden, aus welcher Entität die aktuell verwendete Leistung ausgelesen werden kann. Das ist lediglich für die Live-Aufteilungsanzeige relevant.

    • Unter "Stufen und Bedingungen" wird es nochmal spannend:

      • für jedes Gerät können bis zu drei Stufen definiert werden.
        (Im Beispiel ganz oben hat die Warmwasser die Stufen "(Minimum / 60%)" und "(Reserve / 80°C)")

      • Zu jeder Stufe kann eine Bedingung definiert werden. Hierbei kann eine Entität oder auch ein Template verwendet werden.
        Überschuss wird dieser Stufe nur zugeordnet, wenn die Bedingung "wahr" / "erfüllt" / "1" ist.

        Mit Hilfe der Stufen können z.B. Dinge wie das Warmwasser oder der PV Akku zunächst nur auf das erforderliche gebracht werden und - wenn dann noch Überschuss da ist - auch darüber hinaus aufgeladen werden.

Natürlich ist klar, dass gerade beim Überschuss und auch beim Verbrauch durch Geräte sehr viel Dynamik vorhanden ist. Dennoch möchte ich einmal versuchen, die Überschussverteilung besser steuerbar und greifbar zu machen.

Ich bin gespannt, was ihr dazu sagt. :slight_smile:
(oder ob ihr vielleicht sogar ein Control kennt, dass das bereits macht und mir lediglich entgangen ist ^^)

Ich nutze die evcc Integration für das Überschussladen in Home Assistant und zusätzlich Shellys um weitere Geräte über Automationen zu steuern. Das funktioniert ganz prima. Letztlich ist es mir egal welches Gerät den Strom verbraucht, Hauptsache ich speise möglichst wenig ins Netz ein. So nutze ich über 90% meines erzeugen Stroms obwohl ich nur einen 2,5kWh Akku zum puffern hab.

1 „Gefällt mir“

Die Aufteilung in Bedienung, Anzeige und eine getrennte Engine finde ich sinnvoll. Für die Engine würde ich neben der Priorität unbedingt noch den Energiebedarf und die zeitlichen Grenzen jedes Verbrauchers berücksichtigen. Nur „Gerät A vor Gerät B“ reicht bei wechselndem Überschuss oft nicht aus.

Hilfreich wären aus meiner Sicht pro Verbraucher mindestens: minimale und maximale Leistung, Mindestlaufzeit, spätester Fertigstellungstermin, erlaubte Unterbrechungen und eine manuelle Übersteuerung. Dazu eine Hysterese, damit bei kleinen Schwankungen nicht ständig ein- und ausgeschaltet wird.

Die Regelgröße sollte möglichst der Saldo am Netzanschlusspunkt sein. Wenn zusätzlich ein Speicher, eine Wallbox oder ein Wechselrichter selbst regelt, braucht es klare Zuständigkeiten; sonst reagieren mehrere Regler aufeinander. Für Fehlerfälle würde ich einen einfachen Fallback vorsehen, bei dem alle Automationen in einen definierten sicheren Zustand gehen.

In der Anzeige wäre neben der aktuellen Leistung auch hilfreich, warum ein Gerät gerade wartet oder läuft. Das macht die Regelung nachvollziehbar und erleichtert das Testen erheblich.

1 „Gefällt mir“

Hey @StromVerstand

Danke fürs Draufschauen. :slight_smile:

Was genau meinst Du mit Energiebedarf und zeitliche Grenzen?
Wenn wir das gleich meinen, dann regelt sich der Energiebedarf sich letztlich von selbst, denn wenn genügend Überschuss gegeben ist, wird das Gerät irgendwann keine Leistung mehr aufnehmen. Damit geht der Überschuss dann zum nächsten Gerät über.
Zeitliche Einstellungen plane ich über die Szenen zu regeln: die könnten über eine Zeitsteuerung einfach bedarfsweise geändert werden.

Minimale und maximale Leistung habe ich bereits vorgesehen.
Mindestlaufzeit / Mindestruhezeit wäre noch eine ganz gute Option, um hier kein "Flattern" zu bekommen - ja. Wobei ich dann sinnvollerweise in der Mindestlaufzeit nur die Mindestleistung festlegen könnte, wenn der Überschuss fehlt. Alles darüber müsste ja dynamisch bleiben.
Eine manuelle Übersteuerung ist gegeben, indem das Gerät für die Steuerung abgeschaltet wird (Schalter jeweils beim Gerät). Ab dann obliegt es allein dem Bediener, ob er das Gerät ein oder ausschaltet - die Steuerung legt dann keine Hand mehr an.
Hysterese macht absolut Sinn, ja. Nehme ich mit auf.

Da unterliegst Du einem Denkfehler. :slight_smile:
Regelgröße muss PV Leistung und "Hausverbrauch abzüglich der Leistungsaufnahme der von der Steuerung geregelten Geräte" sein. Denn: sobald die Steuerung einem Gerät Leistung zuweist, wird selbige nicht mehr am Netzanschlusspunkt gemessen ... dann würde es übel werden: "Überschuss null, Gerät aus, Überschuss da, Gerät an, ...."

Eine Schwierigkeit gibt's da sowieso noch zu bedenken: wenn die PV abgeregelt wird, weil der Akku voll ist und alle Verbraucher bedient sind, dann wäre der mathematische Überschuss 0, obwohl da eigentlich sehr viel mehr zu holen wäre (soweit dann keine Einspeisung statt findet).
Jedenfalls:
Das ganze kann extrem komplex werden - gerade deshalb versuche ich es zunächst auf das Essentielle herunter zu dampfen und genau abzuwägen, welche Sonderlocke zwingend sein muss und welche auch extern klärbar wäre.

Macht Sinn, ist wahrscheinlich besser, das per Gerät zu betrachten. Mögliches Vorgehen:
Wenn ein Gerät nicht gelesen oder gesteuert werden kann, nehme ich es aus der Steuerung raus. Sollte es weiterhin Leistung ziehen, dann wird selbige ja noch über den Hausverbrauch berücksichtigt und es kommt nicht zur Überverteilung.
Fehlt der Eingangswert, wäre ein kompletter Fallback vermutlich der beste Weg. Allerdings auch wieder nicht einfach umzusetzen, da Fallback auch Modusumschaltungen oder ähnliches beinhalten könnte. Also bräuchte es dafür Skripte, die der Benutzer definieren können müsste.
Denke also, ich muss die Definition der Geräte noch etwas aufbohren und optionale Skripte für "Einschalten", "Ausschalten" und "Fallback" vorsehen oder entsprechende Events zur Verfügung stellen ... dann wäre da jede Freiheit gegeben.

Jepp.
Also z.B. "kein Überschuss", "Nachlaufzeit", "Außerhalb Hysterese", etc.

Ok, ich berücksichtige es. :slight_smile:

Danke für die ausführliche Rückmeldung. Beim Netzanschlusspunkt haben Sie recht: Sobald die Steuerung einem Gerät Leistung zuweist, sinkt dort der gemessene Überschuss. Für die nächste Zuteilung muss die bereits gebundene Leistung deshalb mitgerechnet werden. Den Netzsaldo würde ich zur Kontrolle von Bezug und Einspeisung nutzen, nicht allein als Grundlage für jede Zuteilung. Die abgeregelte PV bei vollem Akku ist ein eigener Sonderfall, den Sie für die erste Version zunächst ausklammern können.

Mit Energiebedarf meinte ich die noch fehlenden kWh bis zum Abschluss eines Vorgangs, nicht die momentane Leistung. Für Ihre erste Version mit Prioritäten brauchen Sie diesen Wert nicht: Wenn ein Gerät fertig ist und keine Leistung mehr aufnimmt, wird sie für andere frei. Erst wenn die Engine entscheiden soll, ob ein Vorgang bis zu einem bestimmten Zeitpunkt fertig wird, wären Restbedarf und Zeitfenster hilfreich. Wenn Ihre Szenen die Zeiten bereits abbilden, würde ich es dabei belassen.