Regelung zur Nulleinspeisung Nullbezug - surfer1264/Zendure-Stuff GitHub Wiki

Disclaimer

Work Done

Folgende Implementierung zeigt eine Reglerimplementierung, die sehr genau und zeitnah einen gewünschten Energiebedarf bereitstellt. Je nach Konfiguration ist diese als Nulleinspeisung oder Nullbezug einsetzbar.

Die Implementierung hat keinen Produktstatus. Insofern sind keine kontinuierlichen Anpassungen zu erwarten. Versteht es als einen sehr reifen Prototypen, den Ihr an Eure Bedürfnisse anpassen könnt. 80% der Basisarbeit ist gemacht.

Use at your own risk!

Die folgende Beschreibung richtet sich an Kenner und Nutzer vom HomeAssistent. Es handelt sich hier um keine Integration, die man mit einem Klick installiert.

  • Ihr könnt Helfer im HA anlegen,
  • Ihr könnt Entitäten umbenennen im Code,
  • Ihr könnt Node-Red-Knoten anpassen,
  • Ihr könnt Integration im HA installieren, verwalten
  • ein SmartMeter ist verfügbar im HA
  • ein Wechselrichter ist verfügbar im HA
  • idealerweise habt Ihr auch die Entitiäten der Zendure-Integration verfügbar. Sie sind hilfreich, aber für die Regelung selbst nicht notwendig!

Dies ist Voraussetzung für die Einrichtung. Dennoch versuche ich die Schritte der Einrichtung sehr detailliert wieder zu geben.

Funktion des Reglers

Die Implementierung ist im Kern

  • eine intelligente Regelung mit frei wählbarem Sollwert (und Hysterese) mit
  • einer frei konfigurierbaren Einspeisebegrenzung (quasi Akkupriorität)
  • mit terminierbarer Umschaltung der Einspeisebegrenzung (quasi Terminmodus included)

Ein 3-1 Regler, weil Smart-CT-Modus, Terminmodus und Akkupriomodus integriert funktionieren und nicht als ENTWEDER/ODER fungieren. Das ganze wird über EINE Oberfläche im HA gesteuert. Die ganze Regelung läuft lokal in Eurem WLAN.

Vergleich mit den Zendurefunktionen

Funktion Zendure mein HA Regler
Grundeinspeisung einstellbar entspricht Basismodus, Grundeinstellung, Ja
frei wählbarer Sollwert für Regelung Nein Ja, -20W..+20W
Nulleinspeisung entspricht SmartCT, bleibt allerdings immmer 20..30W unter dem Nullwert Ja, durch Einstellung des Sollwertes auf 0..bis +25W
Regelung auf Null Nein Ja mit Hysterese
Nullbezug Nein Ja, durch Einstellung des Sollwertes auf -20W..bis 0W, für alle Anforderungen unterhalb der WR-Leistung
Hysterese einstellbar Nein Ja, 5...20W, Hiermit entsteht ein Regelbereich
Geschwindigkeit Hub1200/Hub2000 sehr langsam sofort, <3..5 Sekunden, je nach Taktung
Überschusspriorisierung vergleichbar Akkuprioritätsmodus, allerdings nur mit festem Einspeisewert (100W) Ja, Einspeisegrenze beliebig wählbar, der Regler arbeitet unterhalb dieser Grenze weiter auf den Sollwert
flexibler Terminmodus Terminmodus mit festen Einspeisewerten, beliebig viele Termine Terminmodus mit definierten Einspeisegrenzen, unterhalb der Grenzen wird auf Sollwert ausgeregelt, aktuell nur 3 Termine (leicht ausbaubar), zusätzlicher Vorteil: auch im aktiven Termin kann die Einspeisgrenze verändert werden!

Meine Konfiguration

  • Wechselrichter APSystem EZ1: Dieser Wechselrichter verfügt über
    • eine lokale API, ist also lokal an den HA angebunden
    • eine HomeAssistent-Integration, die über den HA-Store geladen werden kann
  • Shelly 3EM, als Smartmeter, Shelly-Produkte sind gut in HomeAssistent integriert. Der Shelly 3EM (ohne PRO) kann auch lokal über HTTP-Requests ausgelesen werden, ohne ihn von der Cloud zu trennen.
  • Zendure Hub SF1200: Zendure-Integration (ist nicht unbedingt erforderlich für den Regler)

FAQ / Fragen

Frage: Kann die Implementierung auf mehrere Wechselrichter aufgeteilt werden?

Antwort: JA, das errechnete Korrektursignal kann in der Reglerfunktion auf zwei oder mehr WR aufgeteilt werden. Zwei Zeilen Code, einfach.

Frage: Aktuell wird nur Phase A des Shelly 3EM gelesen. Kann das ausgebaut werden?

Antwort: JA, der Einspeisewert kann natürlich saldiert werden in der Reglerfunktion durch Abfragen der drei Eingänge.

Frage: Wie oft fragt der Regler den Istwert ab?

Antwort: Konfigurierbar ab 1 Sekunde (im Flow) aufwärts, Ich arbeite mit einem 4 bzw. 5 Sekunden-Takt. (Genau genug!) Kürzere Zyklen machen kaum einen Unterschied. Beispiel: die verzögerte Regelung auf eine Anforderung von 600W macht pro Sekunde einen “Verlust” oder “Gewinn” von 0,16 Wh aus. Auch wenn das 100 mal am Tag passiert, dann sind das 16 Wh am Tag. Selbst wenn der HA das alles schnell kann, die Umschaltträgheit von Hub und WR liegen über einer Sekunde.

Frage: Wird der Zendure Hub von der Cloud entkoppelt?

Antwort: Nein, der Zugang über die App bleibt erhalten

Frage: Erfolgt die Regelung über das Internet?

Antwort: Nein, die Regelung erfolgt lokal. Der Smartmeter wird lokal ausgelesen, der Wechselrichter wird lokal angesteuert.

Frage: Wird eine Zendure API genutzt?

Antwort: Nein, der Hub arbeitet im Basimodus, ist maximal geöffnet in Richtung WR Ausgang. Lediglich der WR wird angesteuert.

Frage: Können andere Smartmeter und Wechselrichter genutzt werden?

Antwort: Ja, wenn es eine relevante HA Integration gibt. Die zur Verfügung gestellten Flows sind dann ggf. anzupassen.

Benutzung/Funktion

IMG_0782

  • Der Regelalgorithmus kann aktiviert/deaktiviert werden. Ist der Regler deaktiviert gilt die Einspeisegrenze als fixer Wert (quasi Akkuprio).

  • Der Regelausgang kann nach oben begrenzt werden. Anforderungen oberhalb des Grenzwertes werden beschnitten, unterhalb des Grenzwertes exakt nach Bedarf ausgeregelt.

  • Sollwert, definiert den anzustrebenden Sollwert

    • +20W, strebt eine Nulleinspeisung an, keine Einspeisung ins Netz!
    • 0W !
    • -20W, strebt einen Nullbezug an (kein Bezug aus dem Netz, für alle Anforderungen unterhalb der WR-Leistung)!
    • eine Hysterese definiert einen Regelbereich. Beispiel: Eine 10W-Hysterese bei Sollwert von 5W definiert einen Regelbereich von -5W bis +15W. Der Regelalgorithmus bringt den Istwert in diesen Regelbereich.
  • Der Terminmodus bietet drei Uhrzeiten, zu denen die Einspeisebegrenzung täglich angepasst wird. Das Regelverhalten bleibt erhalten:

    • Unterhalb der Grenze wird auf den Sollwert geregelt, nach oben wird entsprechend begrenzt.
    • Goodie: Die Einspeisegrenze kann "on the fly" angepasst werden, es ist kein neuer Termin nötig, daher reichen die drei Schaltzeiten auch völlig ( meiner Meinung nach )
  • Im Header zeigt das Dashboard

    • einen zentralen AUS-Schalter ( a) für Testzwecke, b) wenn die Zendure-App die Kontrolle übernehmen soll)
    • den Status des Bypass (1:AN; 0:Aus)
    • den Status des Hub (0:Standby; 1:Laden; 2:Entladen)
    • einen Zähler für die Zahl der Regeleingriffe (24h, von 08:00 bis 08:00)
    • die aktuelle Einspeisegrenze (max. Regelausgang)
    • den aktiven Termin an (Date1, Date2, Date3)
  • Vier Analoganzeiger geben den Zustand wieder: den Istwert (Regelgröße vom Smartmeter), den Einspeisewert der Solaranlage (bei mir Shelly Plus1PM), den Lade-/Entladewert des Akkusystems, und den Ladezustand des Akkusystems.

  • In der aktuellen Implementierung wird der Regelalgorithmus deaktiviert, wenn der Zendure-Hub in den Bypass springt. Der Wechselrichter wird komplett geöffnet. Der Regelalgorithmus wird wieder aktiviert, wenn der Hub den Bypass verlässt.

Installation

Vorbereitung

Habt Ihr einen Sensor verfügbar, der Euch Euren Hausverbrauch zur Verfügung stellt? (z.B. Shelly3EM)

Habt Ihr eine Möglichkeit, Euren Wechselrichterausgang mit HA-Mitteln zu beeinflussen? (z.B: WR APSystem EZ1)

Wenn Ihr beides mit JA beantwortet, dann weitermachen.

Hilfs-Sensoren anlegen

Diese Hilfssensoren müssen angelegt werden. Nennt sie bitte auch genau so, dann lässt sich das Dashboard fast 1:1 übernehmen.

Sensorname Entität Sensortyp
Regler Total Aus, legt die komplette Implementierung lahm input_boolean.regler_aus Boolsche Eingabe, Schalter, KOMPLETT Aus!
Regel-Algorithmus aktiv input_boolean.regler_aktiv Boolsche Eingabe, Schalter, Hier wird nur die Reglerfunktion selbst deaktiviert, die verbleibenden HA-Energiemodi bleiben aktiv
Regler WR Aus input_boolean.regler_wr_aus Boolsche Eingabe, Schalter, Wechselrichter EIN/AUS
Regler Hysterese input_number.regler_hysterese Zahlenwert-Eingabe, min:5, max: 25, Schrittweite 5
Regler maximale Einspeisung input_number.regler_maximale_einspeisung Zahlenwert-Eingabe, min:0, max: 800, Schrittweite 10
Regler Sollwert input_number.regler_sollwert Zahlenwert-Eingabe, min:-20, max:20, Schrittweite 5
Regler Zähler, zählt Regleraktivitäten counter.regler_zahler Zählervariable (nur Info), wird in den Node-Red Flows erzeugt
Regler Terminmodus input_boolean.regler_terminmodus Boolsche Eingabe, Schalter, Terminmodus aktivieren/deaktivieren
Regler Timer Auswahl, (aktiver Termin) input_text.regler_timer_auswahl Hier wird der jeweils aktive Terminmodus zwischengespeichert Date1, Date2, Date3
Regler Wert1 Termin1 input_number.regler_wert1_termin1 Einspeisebegrenzung, Zahlenwert-Eingabe, min:0, max:800, Schrittweite 10
Regler Wert2 Termin2 input_number.regler_wert2_termin2 Einspeisebegrenzung, Zahlenwert-Eingabe, min:0, max:800, Schrittweite 10
Regler Wert3 Termin3 input_number.regler_wert3_termin3 Einspeisebegrenzung, Zahlenwert-Eingabe, min:0, max:800, Schrittweite 10
Regler1 input_datetime.regler1 Zeitpunkt Eingabe, nur Uhrzeit
Regler2 input_datetime.regler2 Zeitpunkt Eingabe, nur Uhrzeit
Regler3 input_datetime.regler3 Zeitpunkt Eingabe, nur Uhrzeit

Verwendete (notwendige) Sensoren

Folgende Sensoren sind nötig und ggf. schon vorhanden:

  • einen Shelly 3EM oder anderen Smartmeter, der das Verbrauchssignal im HA zur Verfügung stellt. Ich nutze den Shelly 3EM: sensor.wohnung_channel_a_power Dieser Sensor bildet den realen Bezug des Haushalts ab.
    • Alternativ kann der Shelly 3EM im Übrigen auch lokal abgefragt werden (ohne ihn aus der Cloud zu nehmen): http://<IP-Adresse>/emeter/0
  • einen Wechselrichter, dessen Ausgangssignal man mit HA beeinflussen kann. Ich nutze einen APSystem EZ1-WR: number.solar_maximale_leistung

Diese beiden Sensoren sind auch essentiell für das Funktionieren des Reglers und müssen ggf. von Euch durch adäquate Sensoren ersetzt werden. Wenn Ihr HA schon eine Weile benutzt, dann sind diese Sensoren (unter anderem Namen) bereits Teil Eurer Konfiguration.

Nicht alle Wechselrichter-Hersteller bieten eine Integration für den HomeAssistent an und ihr müsst prüfen, ob es die Möglichkeit gibt die Ausgangsleistung steuern zu können. Hier hilft Euch nur Google und die HomeAssistent Community.

Achtung: Sowohl im Dashboard-Code, als auch im Node-Red-FLow-Code, sind die Sensornamen entsprechend Eurer Namensgebung anzupassen (Das geht ganz gut mit Suchen/Ersetzen)

Gerät Entität Nutzen Pflicht Alternative
Shelly3EM lokal, Bezug IP-Adresse des Shelly für HTTP-Request Verbrauch des Haushaltes, Bezug Ja Der Shelly3EM (ohne Pro) kann lokal abgefragt werden mit http://<IP-ADRESSE>/emeter/0, 0 steht für Phase1
Shelly3EM, HA-Sensor, Bezug sensor.wohnung_channel_a_power Verbrauch des Haushaltes, Bezug Optional als Alternative Ecotracker oder andere Geräte, die sich in HomeAssistent integrieren können
Wechselrichter: APSystem EZ1 number.solar_maximale_leistung Sterung des WR-Ausgangs Ja jeder WR, dessen Ausgangssignal sich über eine HA-Integration steuern lässt

Verwendete (hilfreiche) Sensoren

Folgende Sensoren sind hilfreich, aber nicht unbedingt erforderlich. Alle Sensoren werden im Dashboard zur Anzeige benutzt. Zwei Sensoren werden im Node-Red-Flow abgefragt. Insbesondere bezüglich der Berücksichtigung des Bypass-Zustandes muss man den Flow entsprechend anpassen, wenn man dem Bypass-Sensorn nicht anlegen will (oder kann). Im Kapitel zur Installation des Flows gebe ich hier noch einmal Hinweise.🕵️

Gerät Entität Nutzen im Flow benutzt zur Anzeige Alternative
Status des Bypass sensor.sf_bypass Meldet, ob der Solarflow-Hub im Bypass steckt im Flow benutzt Ja Bypass Sensor anlegen, Hierfür braucht man die Zendure-Integration
Status des Hub sensor.solarflow_pack_state Zeigt den Hubstatus an Nein Ja Ist Teil der Zendure Integration
Ladezustand des Akkusystems sensor.solarflow_electric_level Nein Ja Ist Teil der Zendure Integration
Laden/Entladen sensor.batterie_out_in Meldet einen positiven oder negativen Powerwert Nein Ja Bypass Sensor anlegen, Hierfür braucht man die Zendure Integration
Einspeisesensor, Shelly Plus1PM sensor.solarhub_power Der 1PM ist direkt hinter dem WR installiert und meldet den exakten Einspeisewert der Anlage im Flow benutzt Ja Alternativ kann hier auch der Sensor für die Ausgangsleistung des WR verwendet werden, wenn die WR-Integration das anbietet.

Installation

  1. Helfervariablen anlegen (wie oben angegeben), Achtet auf die Namensgebung, bitte exakt (könnt Ihr später ändern).
  2. Verwendete (notwendige) Sensoren prüfen, Namen der Sensoren aufschreiben
  3. Verwendete (hilfreiche) Sensoren prüfen, Anlegen, Namen der Sensoren aufschreiben
  4. Dashboard einrichten (nach Vorgabe), Sensornamen, wenn nötig, ändern.
  5. Testen, das Dashboard sollte aussehen , wie auf dem Bild, (keine Fehler, keine fehlenden, ungültigen Sensoren sichtbar)
  6. Erst jetzt dem Node-Red-Code widmen
  7. Alle Entwicklerhinweise zu Anpassungen lesen und umsetzen.
  8. Testen, Testen, Testen

Dashboard einrichten

Dashboard laden und einfügen Den Code könnt Ihr über die Edit-Ansicht im HA (siehe Bild) einfügen. Legt dafür bitte ein nagelneues Dashboard an.

Bevor Ihr den Code in Euer Dashboard einfügt, ersetzt ggf. sensor.wohnung_channel_a_power mit Eurem Verbrauchssensor, sowie sensor.solarhub_power, sensor.solarflow_electric_level, sensor.batterie_out_in mit den passenden Sensornamen. (Suchen/Ersetzen im Quellcode geht super)

image

Ich benutze übrigens das

iOS Themes - Dark Mode and Light Mode -

im HACS als Paket zum Download

NodeRed-Flows einrichten

Download der Node-Red-Flows

spezifische Hinweise zur Installation/Konfiguration

VIEL SPASS

Dont Forget

Wenn ihr den HA Regler in Betrieb nehmt…

Versetzt Euren Hub in den Basismodus, kein Energiemodus ist aktiv und der Hub ist voll aufgedreht!!!

⚠️ **GitHub.com Fallback** ⚠️