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
- Ihr könnt das Debugging nutzen,
- ein SmartMeter ist verfügbar im HA,
- ein Wechselrichter ist verfügbar im HA
- unbedingt zu empfehlen und einzusetzen: Zendure-HA, liefert alle Entitäten der Solarflows und Zendure-Akkus und mit dem Zendure Manager auch eine Smarte Leistungssteuerung.
Dies ist Voraussetzung für die Einrichtung. Dennoch versuche ich die Schritte der Einrichtung sehr detailliert wieder zu geben. Grundverständnis von NodeRed-Konzepten ist vorausgesetzt.
Wichtig!: Es gibt bei den Wechselrichtern die Diskussion rund um die Haltbarkeit der EEPROMs, wenn man im Sekundentakt Steuerungsbefehle an den WR schickt. Die Anzahl der Schreibvorgänge ist je nach Implementierung der Zugriffe durch die Hersteller ggf. begrenzt. Die Hersteller handhaben das unterschiedlich. Ich will hier nur auf das Thema aufmerksam machen. Ich habe keinen Marktüberblick.
Für alle, die einen APSystem EZ1-M häufiger als einmal alle 300 Sekunden beschreiben wollen: Bitte verwendet dafür nur EZ1-M-Wechselrichter, deren Seriennummer mit „Ex701” beginnt. Laut Hersteller halten die Flash-Speicher der neueren EZ1-M das besser aus, wenn sie häufiger als alle 300 Sekunden beschrieben werden. Kann man auch hier nachlesen.
Ich stelle bereit:
- Code zum Anlegen der Helfervariablen
- Code zum Einrichten eines Dashboards
- Den Node Red Code
- eine vertiefende Einrichtungsdokumentation
- Release 2.0.0
Ansonsten gilt: Selbst ist der Mann oder die Frau 😀
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...35W, Hiermit entsteht ein Regelbereich |
Geschwindigkeit | Hub1200/Hub2000 sehr langsam, 200W pro Minute | sofort, die Hubs bestimmen auch hier das Zeitverhalten, kleine Änderungen sofort , große Änderungen dauern auch mehrere 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 Pro, als Smartmeter, Shelly-Produkte sind gut in HomeAssistent integriert. Der Shelly 3EM (Pro) kann auch lokal über HTTP-Requests ausgelesen werden, ohne ihn von der Cloud zu trennen.
- Zendure Hub SF1200: Zendure-zMaster42-Integration oder Zendure (FireSon)-Integration (dringend empfohlen, ist nicht unbedingt erforderlich für den Regler, ich nutze allerdings den SoC-Level)
- ein Shelly Plus1PM dient als Einspeisepunkt für das BKW.
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. Müsst Ihr halt machen :-)
Frage: Können alle Phasen überwacht werden?
Antwort: Im Prinzip Ja, das hängt von Eurem Smartmeter ab. Der Shelly 3EM(Pro) liefert für jede Phase einen Sensor, aber auch einen Sensor für Total
. Im Zweifel baut man sich die Saldierung in einer function-Node
selber nach 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 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 1000 mal am Tag passiert, dann sind das 160 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, mein Projekt setzt das weder voraus, noch greift es in die Zendure-Logik ein.
Frage: Erfolgt die Regelung über das Internet?
Antwort: Nein, die Regelung erfolgt lokal. Der Smartmeter wird lokal über HA 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 für die WR gibt. Die zur Verfügung gestellten Routinen/Sensoren sind dann ggf. anzupassen. Mittlerweile ist APSystemEZ1 und HMS8002T direkt integriert (Sensornamen konfigurieren und im Dashboard auswählbar)

-
Die gesamte Home Assistent Implementieurung kann aktiviert/deaktiviert werden. (Hier wird lediglich die Ansteuerung an den WR deaktiviert, Die Zendure Prozesse können wieder übernehmen), die vorliegende Implementierung ist wirkungslos
-
Der Regelalgorithmus selbst kann aktiviert/deaktiviert werden. Ist der Regelalgorithmus deaktiviert, gilt die Einspeisegrenze als fixer Wert (quasi Akkuprio).
-
Der Regelausgang kann nach oben begrenzt (Einspeisegrenze) werden. Anforderungen oberhalb des Grenzwertes werden beschnitten, unterhalb des Grenzwertes exakt nach Bedarf ausgeregelt.
- Beispiel Einspeisegrenze 270W. Es werden nie mehr als 270W vom Hub in das Hausnetz abgegeben. Werden aber nur 85W gebraucht, dann werden exakt nur diese bereit gestellt. Die Grenze wirkt wie eine Akkupriorität. Alle PV Leistungen oberhalb der 270W gehen in den Akku.
-
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)!
- zusammen mit einer Hysterese wird ein Regelbereich definiert. 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 )
-
Der Wechselrichter selbst kann deaktiviert werden (absolute Akkupriorisierung), Der Wechselrichter wird softwareseitig ausgeschaltet!
-
Im Header zeigt das Dashboard
- einen Schalter für die Auswahl des Ausgangs (EZ1, HMS, Z-HA-Integration)
- einen zentralen AUS-Schalter, wie oben bereits erwähnt ( a) für Testzwecke, b) wenn die Zendure-App die Kontrolle übernehmen soll), dieser zentrale Schalter blockiert den Ausgang zum Wechselrichter und ist daher gut zum Testen geeignet.
- den Status des Bypass (1:AN; 0:Aus) (Entität der Z-HA-Integration)
- den Status des Hub (0:Standby; 1:Laden; 2:Entladen)
- einen Zähler für die Anzahl der Regeleingriffe (24h, von 08:00 bis 08:00)
- die aktuell gesetzte Einspeisegrenze (max. Regelausgang, als Kontrollwert)
- Das Ausgangslimit des Solarflow-Hubs (Entität der Z-HA-Integration)
- den aktiven Termin an (Date1, Date2, Date3, als Kontrollwert)
- den Gesamtstatus der Akkus (electriclevel)
- eine Initialisierungstaste (zur manuellen Initalisierung aller internen Regelparameter)
Die vorliegende Implementierung unterstützt verschiedene Aktoren zur Leistungsregelung.
Folgende Ansteuerungen stehen zur Auswahl:
- 1: absolute Einspeisung: EZ1: z.B. APSystemEZ1 (Typ1)
- 2: relative Einspeisung: HMS: z.B. Hoymiles HMS8002T (ohne "W") (Typ2)
- 3: absolute Einspeisung: OUT: Zendure (FireSon)-Integration :
outputlimit
des Hubs direkt ansprechen (Typ3) - 4: absolute Einspeisung: MAN: Zendure (FireSon)-Integration :
Manuelle Leistungsregelung
(Typ 4) - 5: SMT: Aktivierung der Zendure (FireSon)-Integration :
Smarte Leistungsregelung
, damit wird meine HA Regelung deaktiviert und die Z-HA Regelung aktiviert
Der Ausgang lässt sich im Dashboard auswählen!
- In der aktuellen Implementierung wird der Regelalgorithmus deaktiviert, wenn der Zendure-Hub in den Bypass (meint hier: die Akkus auf 100% gehen) springt. Der Wechselrichter wird komplett geöffnet. Der Regelalgorithmus wird wieder aktiviert, wenn der Hub den Bypass verlässt.
- konkret bedeutet das: der Zendure Hub geht in den Bypass, weil Akku voll, der HA-Regler erkennt: Akku voll, der HA Regler öffnet den WR vollständig und deaktiviert den Regelalgorithmus
- Aktuell kann der Bypass ebenfalls begrenzt werden durch einen entsprechenden Schieberegler (dies gilt nur für die Ansteuerungen EZ1, HMS, OUT, da nur hier der Regel-Algorithmus die volle Kontrolle über den jeweiligen Ausgang hat.)
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)
Habt Ihr eine Zendure-Integration am Start für Euren Hub: Zendure-zMaster42-Integration oder Zendure (FireSon)-Integration (Ich empfehle letztere)?
Wenn Ihr alles mit JA beantwortet, dann weitermachen.
Diese Hilfssensoren müssen angelegt werden.
HA => Einstellungen => Geräte und Dienste => Helfer
- entweder manuell über die UI
- oder durch Eintrag/Übernahme der Helfer-Definitionen in der
configuration.yaml
. Kopiert Euch die Definitionen aus dieser Datei: Helfervariablen.
Nennt die Entitäten bitte auch genau so, dann lässt sich das Dashboard fast 1:1 übernehmen.
Sensorname | Entität | Sensortyp |
---|---|---|
Regler Init | input_button.regler_init | Taste, Dient der Re-Initialisierung der Reglerparameter von der Oberfläche/Dashboard aus |
Regler Total Aus | input_boolean.regler_aus | Boolsche Eingabe, Schalter, Deaktivierung der Implementierung! |
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: 35, 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 Inkrement, zählt Regleraktivitäten | input_number.regler_inkrement | 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 |
IgnoreBypass | input_boolean.ignorebypass | Boolsche Eingabe, Schalter; Soll der Bypass des Hubs ignoriert werden? |
Regler Bypass | input_number.regler_bypass | Einspeisebegrenzung, Zahlenwert-Eingabe, min:0, max:800, Schrittweite 25 |
Regler Ausgang | input_select.regler_ausgang | Auswahl möglicher Aktoren für die Regelung, EZ1, HMS, OUT, MAN, SMT |
Regler Typ | input_select.regler_typ | Reglertyp: P, PI, PID auswählbar |
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 Pro aktuell:
sensor.shellypro3em_power_actual_total
Dieser Sensor bildet den realen Bezug des Haushalts ab (alle drei Phasen).- Alternativ kann der Shelly 3EM Pro lokal abgefragt werden mit:
http://<IP-Adresse>/rpc/EM.GetStatus?id=0
- Alternativ kann auch der Shelly 3EM lokal abgefragt werden mit:
http://<IP-Adresse>/emeter/0
- Alternativ kann der Shelly 3EM Pro lokal abgefragt werden mit:
- einen Wechselrichter, dessen Ausgangssignal man mit HA beeinflussen kann. Ich nutze einen APSystem EZ1-WR: Sensor:
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.
Sucht schon mal Eure Sensornamen aus dem HA raus, gemäß folgender Liste....das braucht ihr noch zur Konfiguration.
Art | mein Sensorname | Euer adäquater Sensorname | Bemerkung |
---|---|---|---|
Einspeisesensor hinterm WR | sensor.solarhub_power | mein ShellyPlus1PM | |
WR-Sensor für absolute Einspeisung | number.solar_maximale_leistung | mein APSystemEZ1 | |
WR Sensor für relative Enspeisung | number.dtu_leistungsbegrenzung | mein HMS8002T | |
Sensor Outputlimit des Hubs (FireSon) | number.solar_output_limit | schaut in der Zendure Integration nach | |
Sensor Manuelle Leistungssteuerung (FirSon) | number.zendure_manager_manual_power | schaut in der Zendure Integration nach |
Folgende Sensoren sind hilfreich, aber nicht unbedingt erforderlich.
Alle Sensoren werden im Dashboard zur Anzeige benutzt.
Für die Bypass-Erkennung nutze ich aktuell electriclevel
in den Node-Red-Flows. Im Kapitel zur Installation der 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 | Nein | 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 | SoC | Ja | 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 |
zwei Device Tracker | Device Tracker der Fritz!Box-Tool-Integration | hilfreich zur Überwachung der Shelly-Geräte, aber nicht notwendig für die Regelung selbst | Ja | Nein |
- Helfervariablen anlegen (wie oben angegeben)
- 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
Zum Testen und Werte beobachten:
- Benutzt den "Regler Total Aus" (links oben in der Badge-Reihe"). Dieser Schalter blockiert lediglich die Weitergabe der Steuerbefehle an den Wechselrichter. Alle anderen Aktivitäten bleiben aktiv.
Nutzt den Debugmodus (im Node Red, siehe Hilfsflows) und schaut Euch die Werte an.
Bevor Ihr den Schalter "Regler Total Aus" wieder aktiviert, also die Regelung in Betrieb nehmt....
- Versetzt den Solarflow-Hub in den Basismodus, bedeutet kein Energiemodus, kein CT-Modus, kein IAM ist aktiv.
- Definiert eine Ausgangsleistung im Hub für den Start (muss ja nicht gleich volle Pulle sein)
und Los Gehts!
am Besten in einem neuen Tab öffnen: RAW