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
  • 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:

Ansonsten gilt: Selbst ist der Mann oder die Frau 😀

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...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 Untitled - Frame 1

  • 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)

Benutzung/Funktion

image
  • 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)

image

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.)

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)

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.

Hilfs-Sensoren anlegen

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

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 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
  • 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

Verwendete (hilfreiche) Sensoren

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

Installation

  1. Helfervariablen anlegen (wie oben angegeben)
  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

TESTEN

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!

Schamtische Darstellung

am Besten in einem neuen Tab öffnen: RAW

Schema HA Regelung

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