Regelung zur Nulleinspeisung Nullbezug - surfer1264/Zendure-Stuff GitHub Wiki
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.
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.
-
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.
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.
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 |
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
- Alternativ kann der Shelly 3EM im Übrigen auch lokal abgefragt werden (ohne ihn aus der Cloud zu nehmen):
- 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 |
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. |
- Helfervariablen anlegen (wie oben angegeben), Achtet auf die Namensgebung, bitte exakt (könnt Ihr später ändern).
- Verwendete (notwendige) Sensoren prüfen, Namen der Sensoren aufschreiben
- Verwendete (hilfreiche) Sensoren prüfen, Anlegen, Namen der Sensoren aufschreiben
- Dashboard einrichten (nach Vorgabe), Sensornamen, wenn nötig, ändern.
- Testen, das Dashboard sollte aussehen , wie auf dem Bild, (keine Fehler, keine fehlenden, ungültigen Sensoren sichtbar)
- Erst jetzt dem Node-Red-Code widmen
- Alle Entwicklerhinweise zu Anpassungen lesen und umsetzen.
- Testen, Testen, Testen
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)
Ich benutze übrigens das
iOS Themes - Dark Mode and Light Mode -
im HACS als Paket zum Download
spezifische Hinweise zur Installation/Konfiguration
VIEL SPASS
Wenn ihr den HA Regler in Betrieb nehmt…
Versetzt Euren Hub in den Basismodus, kein Energiemodus ist aktiv und der Hub ist voll aufgedreht!!!