Skip to content

PV Überschussladen

steff393 edited this page Oct 18, 2024 · 45 revisions

PV-Laden mit Hilfe externer Systeme

PV-Überschussladen lässt sich einfach mit folgenden Systemen umsetzen:

wbec dient dann nur als WLAN-Schnittstelle für die Wallbox und bekommt von den o.g. Systemen den Sollstrom mitgeteilt.
Vorteil: Es ist möglich, mehrere Wallboxen an einem wbec zu steuern.

PV-Laden nur mit wbec

wbec hat auch eine primitive Regelung um eigenständig den richtigen Strom für das Überschussladen zu ermitteln. Dies ist jedoch nur für eine einzelne Wallbox möglich (Modbus-ID 1).
Dazu muss der Parameter cfgPvActive auf 1 gesetzt werden.

Funktionsprinzip

Die wesentliche Information für das PV-Überschussladen ist die aktuelle Einspeisung ins Stromnetz. Wenn diese hoch genug ist, dann sollte der Ladevorgang gestartet werden. Wenn sie zu niedrig ist (bzw. wenn sogar Strom aus dem Netz bezogen wird), dann soll das Laden unterbrochen (bzw. die Ladeleistung reduziert) werden.

Parameter

uint8_t  cfgPvActive;      // = 0   aktiviert (1) oder deaktiviert (0)
uint8_t  cfgPvCycleTime;   // =30   Regelinterval (in s)
uint8_t  cfgPvLimStart;    // =61   Sollstrom, ab dem das Laden gestartet wird (in 0.1A), z.B. 61=6.1A
uint8_t  cfgPvLimStop;     // =50   Sollstrom, unter dem das Laden gestoppt wird (in 0.1A)
uint8_t  cfgPvPhFactor;    // =69   Umrechnungsfaktor Strom zu Leistung z.B. 69: 1A = 690W (3-phasig), 23: 1A = 230W (1-phasig)
uint16_t cfgPvOffset;      // = 0   Offset für die Berechnung der verfügbaren Leistung (in W); kann genutzt werden, damit keine/weniger Strom aus dem Netz bezogen wird

Berechnung

Die "verfügbare Leistung" für das Laden errechnet sich aus "akt. Einspeisung" + "akt. Ladeleistung" - den Offset. Dieser Wert soll auf nahe Null geregelt werden. Im Code: availPower = -watt + power - cfgPvOffset;
Mittels cfgPvPhFactor wird daraus der Soll-Strom errechnet.

Zentrale Größe ist also die aktuelle Einspeisung/Bezug watt.
Wichtig: Positive Werte entsprechen einem Bezug aus dem Netz. Negative Werte entsprechen einer Einspeisung ins Netz.

Wenn kein Wert direkt vom (Haus-)Stromzähler zur Verfügung steht, dann kann hier z.B. auch die aktuell vom Wechselrichter erzeugte Leistung (- Offset) genutzt werden. Die folgenden Absätze beschreiben, wie der Wert für watt aus verschiedenen Geräten automatisch ausgelesen werden kann.

Weitere Berechnungsmodi:

// cfgPvCalcMode = 0: Standard
verf. Leistung = Bez./Einsp. + Ladeleistung - Offset
availPower     = -watt       + power        - cfgPvOffset

// cfgPvCalcMode = 1: wenn nur die erzeugte PV-Leistung berücksichtigt werden soll
verf. Leistung = PV-Leistung                - Offset
availPower     = -watt                      - cfgPvOffset

// cfgPvCalcMode = 2: Berücksichtigung der Batterie(ent)ladeleistung
verf. Leistung = Bez./Einsp. + Ladeleistung - Offset      + Batterieleistung (nur bei Entladung)
availPower     = -watt       + power        - cfgPvOffset + pvBatt

Lademodus

Es gibt 4 Lademodi:

  • Deaktiviert (0): PV-Funktion ist komplett deaktiviert
  • Aus (1): Aktuell nicht laden
  • PV-Laden (2): Nur Überschüsse aus PV laden
  • Min+PV-Laden (3): Überschüsse aus PV laden, aber immer mindestens den Minimalstrom (typ. 6A / 4,1kW), notfalls auch mit Netzbezug

Der Lademodus kann über verschiedene Wege eingestellt werden:

  • Web Interface http://wbec.local
    web3
  • API-Aufruf http://wbec.local/pv?pvMode=1 (Zahlenwert s. oben)
  • über einen Schalter am Pin D7 (Wechsel zwischen PV-Laden (2) und Aus (1)) (variantenabhängig!)

Überwachung

wbec erzeugt eine Datei pv.txt in der die relevanten Werte für die o.g. Berechnung abgelegt werden:
Zeitstempel; Bezug/Einspeisung (watt); akt. Ladeleistung (power); akt. Ladestrom; Soll-Ladestrom

Über die Seite http://wbec.local/pvChart.html kann der Inhalt dieser Datei grafisch dargestellt werden.
Hinweis: Die in wbec umgesetzte Regelung ist stark vereinfacht. Die o.g. darauf spezialisierten Systeme können das natürlich deutlich besser.

Anbindung an Wechselrichter und Stromzähler

Anbindung an SolarEdge Wechselrichter

Getestete Typen: SE7k, SE9k, SE16k
wbec kann den Wechselrichter über Modbus TCP auslesen. Die nötigen Parameter in der Datei cfg.json sind wie folgt:
"cfgPvActive":1, "cfgInverterIp":"192.168.xxx.yyy", "cfgInverterType":1

Modbus TCP muss vom SolarEdge Support auf Port 1502 freigeschalten werden. Info siehe hier: https://community.home-assistant.io/t/custom-component-solaredge-modbus-tcp/165625/28

Anbindung an Fronius Wechselrichter und Smartmeter

Getestete Typen: Fronius Symo 17.5 + Fronius Smartmeter
wbec kann den Wechselrichter über Modbus TCP auslesen. Die nötigen Parameter in der Datei cfg.json sind wie folgt:
"cfgPvActive":1, "cfgInverterIp":"192.168.xxx.yyy", "cfgInverterType":2

Nötige Einstellungen am Wechselrichter:
Fronius Konfiguration

Neuere Fronius Symo (Gen24) haben evtl. nicht 240 als Modbus-Adresse/ID, sondern 200. Dies kann über folgenden Parameter angepasst werden:
"cfgInverterAddr":200

Anbindung an Kostal Wechselrichter mit KSEM

Getestete Typen: KSEM wbec kann das KSEM (Kostal Smart Energy Meter) über Modbus TCP auslesen. Die nötigen Parameter in der Datei cfg.json sind wie folgt:
"cfgPvActive":1, "cfgInverterIp":"192.168.xxx.yyy", "cfgInverterType":3

Es muss die Adresse vom KSEM eingetragen werden, nicht die vom Wechselrichter. Der KSEM muss als "Modbus TCP Slave" eingestellt sein, in der Regel mit Port 502 und Modbus-ID 240 (im KSEM). Gegebenenfalls kann mittels cfgPvInvert noch das Vorzeichen invertiert werden.

Anbindung an Kostal Wechselrichter (ohne KSEM) (ab v1.4.9)

Getestete Typen: Kostal Plenticore Plus 10
wbec kann den Wechselrichter über Modbus TCP auslesen. Die nötigen Parameter in der Datei cfg.json sind wie folgt:
"cfgPvActive":1, "cfgInverterIp":"192.168.xxx.yyy", "cfgInverterType":8, "cfgPvCalcMode":1

Da der ausgelesene Wert nicht Bezug/Einspeisung am Hausübergabepunkt beinhaltet, sondern nur die aktuell erzeugte PV-Leistung, muss der Parameter cfgPvCalcMode von 0 (Default) auf 1 geändert werden. Zusätzlich kann es sinnvoll sein, den geschätzten Hausverbrauch mittels cfgPvOffset abzuziehen (s. Formel oben, nur positive Werte erlaubt!).

Anbindung an Huawai Wechselrichter mit angeschlossenem Smartmeter (ab v1.4.8)

Getestete Typen: Huawei Sun2000 Wechselrichter mit DTSU 666 Power Meter
wbec kann den Wechselrichter über Modbus TCP auslesen. Die nötigen Parameter in der Datei cfg.json sind wie folgt:
"cfgPvActive":1, "cfgInverterIp":"192.168.xxx.yyy", "cfgInverterType":4
Gegebenenfalls auch noch "cfgInvRegBattery":37765, "cfgPvCalcMode":2

Anbindung an SMA Wechselrichter mit angeschlossenem Smartmeter (ab v1.4.8)

Getestete Typen: Sunny Tripower STP8-10-3AV-40 aus 2021
wbec kann den Wechselrichter über Modbus TCP auslesen. Die nötigen Parameter in der Datei cfg.json sind wie folgt:
"cfgPvActive":1, "cfgInverterIp":"192.168.xxx.yyy", "cfgInverterType":5

Anbindung an SMA Sunny Home Manager 2.0 (ab v1.4.8)

Getestete Typen: SHM 2.0 zusammen mit einem Sunny Tripower 8.0 Smart Energy (Danke Lukas!)
wbec kann den SHM 2.0 über Modbus TCP auslesen. Die nötigen Parameter in der Datei cfg.json sind wie folgt:
"cfgPvActive":1, "cfgInverterIp":"192.168.xxx.yyy", "cfgInverterType":5, "cfgInverterAddr":3
cfgInverterIp = die IP-Adresse des Wechselrichters(!), nicht die des SHM (der WR erhält die Daten vom SHM)
cfgInverterAddr = Einstellung "Kommunikationsart -> Unit ID"
Gegebenenfalls auch noch "cfgInvRegBattery":31395, "cfgPvCalcMode":2

Ggf. muss außerdem das Register um 1 erhöht werden (evtl. abhängig von der Einstellung "Kommunikationsart -> Modbus SunSpec Profilversion"):
"cfgInvRegToGrid":30868, "cfgInvRegFromGrid":30866

Anbindung an Victron über Modbus TCP (ab v1.4.8)

Getestete Typen: Victron cerbo gx (inkl. Smartmeter Victron EM24 RS485, Wechselrichter Multiplus2 5000), Victron Easy Control GX
wbec kann den Wert für "com.victronenergy.system --> Grid Lx" über Modbus TCP auslesen. Die nötigen Parameter in der Datei cfg.json sind wie folgt:
"cfgPvActive":1, "cfgInverterIp":"192.168.xxx.yyy", "cfgInverterType":6

Anbindung an E3DC über Modbus TCP (ab v1.4.8)

Getestete Typen: TBD (Test noch nicht abgeschlossen)
wbec kann den Wert für "Leistung am Netzübergabepunkt" über Modbus TCP auslesen. Die nötigen Parameter in der Datei cfg.json sind wie folgt:
"cfgPvActive":1, "cfgInverterIp":"192.168.xxx.yyy", "cfgInverterType":7

Anbindung an SAX (ab v1.5.2)

Getestete Typen: SAX-Power Heimspeicher mit EnFluRi-Sensor wbec kann den Wert für "Leistung des Smartmeters" und "Leistung des Speichers" über Modbus TCP auslesen. Die nötigen Parameter in der Datei cfg.json sind wie folgt:
"cfgPvActive":1, "cfgInverterIp":"192.168.xxx.yyy", "cfgInverterType":10, "cfgPvCalcMode":2

Anbindung an GoodWe (ab v1.5.3)

Getestete Typen: GW10KN-ET
wbec kann den Wert für "MTTotalActivepower" und "Pbattery1" über Modbus TCP auslesen. Modbus-TCP muss im Wechselrichter aktiviert sein. Modbus-TCP ist nur mit dem WiFi/LAN-Kit v2 von GoodWe möglich. Die nötigen Parameter in der Datei cfg.json sind wie folgt:
"cfgPvActive":1, "cfgInverterIp":"192.168.xxx.yyy", "cfgInverterType":11, "cfgPvCalcMode":2

Anbindung an SunGrow(ab v1.5.3)

Getestete Typen:
wbec kann den Wert für "Export Power" über Modbus TCP auslesen. Modbus-TCP muss im Wechselrichter aktiviert sein. Die nötigen Parameter in der Datei cfg.json sind wie folgt:
"cfgPvActive":1, "cfgInverterIp":"192.168.xxx.yyy", "cfgInverterType":12

Anbindung an Shelly 3EM

Der Shelly 3EM ist ein Gerät, um den Strom am Hausanschluss zu messen und die gemessenen Werte über WLAN zur Verfügung zu stellen. wbec kann auf diesen Wert zugreifen und den Ladestrom entsprechend regeln.
Die nötigen Parameter in der Datei cfg.json sind wie folgt:
"cfgPvActive":1, "cfgShellyIp":"192.168.xxx.yyy"

Alternativ:
"cfgPvActive":1, "cfgPvHttpIp":"192.168.xxx.yyy", "cfgPvHttpPath":"/status", "cfgPvHttpJson":"total_power\":"

Anbindung an Shelly 3EM Pro (ab v1.4.9)

Der Shelly 3EM Pro ist ein Gerät, um den Strom am Hausanschluss zu messen und die gemessenen Werte über WLAN zur Verfügung zu stellen. wbec kann auf diesen Wert zugreifen und den Ladestrom entsprechend regeln. Siehe unten, "Anbindung eigener Systeme via HTTP".
Die nötigen Parameter in der Datei cfg.json sind wie folgt:
"cfgPvHttpIp":"192.168.xxx.yyy","cfgPvHttpPath":"/rpc/Shelly.GetStatus","cfgPvHttpJson":"total_act_power\":"

Anbindung an sonnenBatterie (ab v1.4.9)

Getestete Typen: sonnenBatterie Eco 8.0 (siehe https://github.com/steff393/wbec/issues/131, vielen Dank an @Gomercity)
Die nötigen Parameter in der Datei cfg.json sind wie folgt:

"cfgPvActive":1,
"cfgPvHttpIp":"192.168.xxx.xxx",     (eigene IP eintragen)
"cfgPvHttpPath":"/api/v1/status",
"cfgPvHttpJson":"GridFeedIn_W\":",   (wichtig, hier mit Anführungszeichen und Doppelpunkt)
"cfgPvHttpPort":8080,
"cfgPvInvert":1
  • Anmelden in der Weboberfläche als "USER", Passwort "sonnenUserXXXX" (s. Typenschild)
  • Unter "Software-Integration" die JSON API freischalten (in diesem Fall reicht Read API)
  • Der Pfad und die Abfragemöglichkeiten werden angezeigt: http://192.168.xxx.xxx:80/api/v2/latestdata
  • Mit wbec kann nur die API V1 genutzt werden, V2 ist nicht erforderlich

Anbindung an powerfox poweropti

Der powerfox poweropti wird an die optische Schnittstelle des Stromzählers angeschlossen und sendet den aktuellen Bezug/Einspeisung an die Cloud (eine lokale Lösung ist leider nicht möglich).

Nachteile

wbec kann die Daten aus der Cloud abrufen und für die PV-Überschussregelung verwenden. Dies erfordert allerdings viel RAM, so dass andere Funktionen (RFID, MQTT, etc.) nicht parallel genutzt werden sollten. Dennoch können sporadische Resets auftreten, die aber nicht per se kritisch sind, da wbec schnell wieder bootet. Eine künftige Änderung der API seitens powerOpti kann die Funktion beeinträchtigen.

Konfiguration

Die Zugangsdaten müssen in der Datei cfg.json hinterlegt werden, z.B.:
"cfgFoxUser":"[email protected]", "cfgFoxPass":"myPassword","cfgFoxDevId":"0123456789AB"
--> Bezug/Einspeisung werden nun alle 30s über die powerfox API abgerufen

Anbindung eigener Systeme via HTTP

Der o.g. Wert watt (Pos=Bezug, Neg=Einspeisung) kann auch von extern an wbec übergeben werden:
http://wbec.local/pv?pvWatt=3000 (=3kW Bezug)
http://wbec.local/pv?pvWatt=-1234 (=1,234kW Einspeisung)

Die Batterieleistung kann ähnlich übergeben werden:
http://wbec.local/pv?pvBatt=3000 (=3kW Ladeleistung)
http://wbec.local/pv?pvBatt=-1234 (=1,234kW Entladeleistung)

wbec bestimmt daraus dann den Sollstrom.

Anbindung eigener Systeme via HTTP, z.B. IR-Lesekopf (ab v1.4.9)

wbec kann typische IR-Leseköpfe auslesen, wenn diese eine http-Schnittstelle haben. Dies geht z.B. bei den typischen Tasmota-Leseköpfen. Die nötigen Parameter in der Datei cfg.json sind wie folgt:
cfgPvHttpIp: IP-Adresse des Lesekopfs
cfgPvHttpPath: Adresse (nach der IP), die aufgerufen werden soll, beginnend mit '/'
cfgPvHttpPort: optional, default: Port 80
cfgPvHttpJson: Ein Text, der dazu dient den gesuchten Wert in z.B. einem JSON-String zu finden (max. 29 Zeichen)

Im folgenden Beispiel würde wbec die Seite "http://192.168.178.100/cm?cmnd=status 10" aufrufen und dort die Zahl nach dem Text power_curr": suchen:
"cfgPvActive":1,"cfgPvHttpIp":"192.168.178.100","cfgPvHttpPath":"/cm?cmnd=status%2010","cfgPvHttpJson":"power_curr\":"

Anbindung eigener Systeme via MQTT

Eine Einbindung eigener Systeme, z.B. SMLReader, IR-Leseköpfe, Tasmota, o.ä. ist auch per MQTT möglich. Hierzu können folgende Parameter genutzt werden, s. auch Issue #54:
cfgMqttWattTopic: MQTT Topic, das den Wert für Bezug(+)/Einspeisung(-) enthält (max. 59 Zeichen)
cfgMqttWattJson: Ein Text, der dazu dient den gesuchten Wert in z.B. einem JSON-String zu finden (max. 29 Zeichen)

Hierfür wird ein MQTT-Broker benötigt. Weitere Parameter für MQTT sind in der Parameterübersicht im Wiki beschrieben.

Clone this wiki locally