Seite 1 von 2

PV Wallbox laden mit "Solaredge" und "GoECharger"

Verfasst: 24. Jul 2022 09:51
von sonic
Guten Morgen zusammen,

ich habe jetzt einiges gelesen zum Thema PV Laden. Auch die Lösung von Rangerid.

Ich wollte es erstmal einfach halten und habe jetzt folgendes gemacht:

Zur Basis:
Solaredge Wechselrichter, angebunden an OpenHAB via ModbusTCP
GoECharger 11kw Wallbox, angebunden an OpenHAB via Binding

Items:
SolaredgeSE5KDcGeneralDcPower = Zeigt die aktuelle PV Leistung in W
M_GoEChargerFIX = Number Item, nutze ich zum rechnen
goecharger_lademodus = nur ein Switch mit dem ich den "automatik modus" aktiviere.
GoEChargerMaxCurrent = Maximal erlaubte A der Wallbox
GoEChargerAllowCharging = Wallbox an und aus


Meine Idee:
Manueller Modus: Wallbox bekommt die vollen 16A
Automatikmodus: Wallbox bekommt die A die vom Dach kommen, sind diese unter 6 (min Leistung der Wallbox) geht die Wallbox aus. Dies wird alle 10 Sekunden überprüft.

pv.rules

Code: Alles auswählen

val PV_Watt = SolaredgeSE5KDcGeneralDcPower.state as Number
rule "pv wallbox automatik"
when
	Time cron "*/10 * * ? * *"
then
	M_GoEChargerFIX.sendCommand(PV_Watt/230)
	if (goecharger_lademodus.state == ON) {
		if (M_GoEChargerFIX.state < 6) {
			GoEChargerAllowCharging.sendCommand(OFF)
		} else {
			GoEChargerAllowCharging.sendCommand(ON)
			GoEChargerMaxCurrent.sendCommand(M_GoEChargerFIX.state)
		}
    }
end

rule "pv wallbox manuell"
when
	Item goecharger_lademodus changed to OFF
then
	GoEChargerAllowCharging.sendCommand(ON)
	GoEChargerMaxCurrent.sendCommand(16)
end
Funktionieren tut es auch, die Frage die sich mir nur stellt, ist es so denn auch richtig? :-)

Re: PV Wallbox laden mit "Solaredge" und "GoECharger"

Verfasst: 24. Jul 2022 15:22
von udo1toni
Ach, richtig, falsch, das sind doch bürgerliche Kategorien...

Richtig falsch ist erst mal nur die Zuweisung zu PV_Watt, die nur einmal ausgeführt wird, und zwar, wenn die Datei eingelesen wird. (also bei Änderungen an der Datei und beim Systemstart)

Rest: Grundsätzlich kannst Du das auf jeden Fall so machen. Allerdings:

1. Warum nutzt Du ein Item zum Rechnen?
2. Wenn das Item nicht mit einem Channel verknüpft ist, ist es sinnlos, .sendCommand zu nutzen (es sei denn, Du möchtest damit gezielt eine andere Rule triggern, aber auch da gäbe es ja andere Möglichkeiten)
3. Wenn Du innerhalb einer Rule ein Item mit einem Wert beschreibst (hier auch noch indirekt) und direkt anschließend wieder ausliest, ist die Wahrscheinlichkeit relativ hoch, dass Du den alten Wert zu Gesicht bekommst. Besser also so:

Code: Alles auswählen

rule "pv wallbox automatik"
when
    Item SolaredgeSE5KDcGeneralDcPower changed                 // gelieferte Leistung geändert
then
    if (goecharger_lademodus.state != ON)                      // Automatik aus?
        return;                                                // dann Abbruch!

    var PV_Power = 0                                           // Variable definieren und vorbelegen
    if(newState instanceof Number)                             // falls gültige Zahl
        PV_Power = ((newState as Number)/230).intValue         // Strom berechnen

    if (PV_Power < 6) {                                        // Falls weniger als 6 Ampere
        if(GoEChargerAllowCharging.state != OFF)               // Falls Laden aktiv
            GoEChargerAllowCharging.sendCommand(OFF)           // Laden beenden
    } else {                                                   // sonst
        if(GoEChargerAllowCharging.state != ON)                // Falls Laden inaktiv
            GoEChargerAllowCharging.sendCommand(ON)            // Laden starten
        if((GoEChargerMaxCurrent.state as Number) != PV_Power) // Falls Maximalstrom abweicht
            GoEChargerMaxCurrent.sendCommand(PV_Power)         // und Maximalstrom setzen
    }
end

rule "pv wallbox manuell"
when
    Item goecharger_lademodus changed to OFF
then
    if(GoEChargerAllowCharging.state != ON)
        GoEChargerAllowCharging.sendCommand(ON)
    if((GoEChargerMaxCurrent.state as Number) != 16)
        GoEChargerMaxCurrent.sendCommand(16)
end
Der Trigger alle 10 Sekunden lohnt sich eigentlich nicht, denn die Rule kann ja nur dann etwas anderes herausbekommen, wenn sich der Eingangswert geändert hat.
Der erste Schritt ist, zu prüfen, ob die Rule überhaupt etwas tun sollte. Ist das nicht der Fall, wird die Rule direkt abgebrochen. Das spart Schachtelungstiefe.
Nun wird die aktuelle Leistung geholt. Die implizite Variable steht zur Verfügung, weil die Rule über changed getriggert wurde. Der Name ist kürzer als der Originalname ;)
Nachdem der Wert berechnet wurde, folgt wie gehabt die Entscheidung, was zu tun ist. Allerdings sendet die Rule nur solche Befehle, die auch tatsächlich gebraucht werden. Du möchtest nicht alle paar Sekunden zwei Befehle auf dem Bus haben, die etwas einschalten, was eh schon eingeschaltet ist. Gleiches gilt sinngemäß für die zweite Rule :)

GoEChargerMaxCurrent sollte am besten über mapDB persistiert werden, mit der Strategy everyChange,restoreOnStartup
So wird sichergestellt, dass GoEChargerMaxCurrent.state immer eine gültige Zahl liefert (wichtig, um NullPointerExceptions zu verhindern).

Re: PV Wallbox laden mit "Solaredge" und "GoECharger"

Verfasst: 24. Jul 2022 16:48
von sonic
Lieber Udo,

wieder einmal bleibt mir nur zu sagen. VIELEN VIELEN DANK.
So langsam sollte man dich mal für das Bundesverdienstkreuz vorschlagen :-)

Es funktioniert. Eine Klammer hat noch gefehlt beim Strom berechnen "(" , aber macht nix.

Und ich habe wieder etwas dazu gelernt :-)

Re: PV Wallbox laden mit "Solaredge" und "GoECharger"

Verfasst: 25. Jul 2022 06:44
von udo1toni
Kein Code ohne Flüchtigkeitsfehler :D

Re: PV Wallbox laden mit "Solaredge" und "GoECharger"

Verfasst: 25. Jul 2022 10:03
von MaxE.
Hallo zusammen,

entschuldigt, dass ich mich da mal kurz einklinke :-)

@sonic. Du hast den SE Inverter per Modbus TCP eingebunden. Kannst du mir kurz deine Einstellungen dazu verraten?

Bin gerade am gleichen Thema dran, hab dazu die Modbus TCP bridge installiert, zwei things modbus signle phase inverter und modbus meter angelegt. Wird auch schön als online angezeigt. nur bekomme ich keine Werte "serviert" Evtl. liegt es an der modbus Blocklänge?

Wie umgehst du das Problem mit dem SE Wechselrichter, dass er den Meter nicht im gleichen Rutsch wie die anderen Daten auslesen kann?

Arbeitest Du auch mit der Leistungssteuerung des Inverters über modbus?

Merci und LG

Max

Re: PV Wallbox laden mit "Solaredge" und "GoECharger"

Verfasst: 27. Jul 2022 08:22
von sonic
Guten Morgen Max,

sorry für die späte Antwort.

Gerne teile ich meine Konfiguration.

Am Wechselrichter mittel SetApp einfach ModbusTCP aktiviert und den Port auf 502 gestellt.

modbus.things

Code: Alles auswählen

Bridge modbus:tcp:modbusWechselrichter [ host="192.168.2.6", port=502, id=1, enableDiscovery=true ]
Thing modbus:inverter-three-phase:bridge:SEWechselrichter "Solaredge SE5K" (modbus:tcp:Wechselrichter_Modbus) [ address=40069, length=52, refresh=15 ]

modbus.items

Code: Alles auswählen

Number:Power               M_SE_WR_AC_Power_Value                          "Ac power value"                  {channel="modbus:inverter-three-phase:bridge:SEWechselrichter:acGeneral#ac-power"}



Number:Temperature         SolaredgeSE5KDeviceInformationHeatsinkTemperature      "Heat sink temperature"           {channel="modbus:inverter-three-phase:bridge:SEWechselrichter:deviceInformation#heatsink-temperature"}
Number:Temperature         SolaredgeSE5KDeviceInformationTransformerTemperature   "Transformer temperature"         {channel="modbus:inverter-three-phase:bridge:SEWechselrichter:deviceInformation#transformer-temperature"}
String                     SolaredgeSE5KDeviceInformationStatus                   "Status"                          {channel="modbus:inverter-three-phase:bridge:SEWechselrichter:deviceInformation#status"}
Number:ElectricCurrent     SolaredgeSE5KAcGeneralAcTotalCurrent                   "Ac total current value"          {channel="modbus:inverter-three-phase:bridge:SEWechselrichter:acGeneral#ac-total-current"}
Number:Power               SolaredgeSE5KAcGeneralAcPower                          "Ac power value"                  {channel="modbus:inverter-three-phase:bridge:SEWechselrichter:acGeneral#ac-power"}
Number:Frequency           SolaredgeSE5KAcGeneralAcFrequency                      "Ac frequency value"              {channel="modbus:inverter-three-phase:bridge:SEWechselrichter:acGeneral#ac-frequency"}
Number:Power               SolaredgeSE5KAcGeneralAcApparentPower                  "Ac apparent power value"         {channel="modbus:inverter-three-phase:bridge:SEWechselrichter:acGeneral#ac-apparent-power"}
Number:Power               SolaredgeSE5KAcGeneralAcReactivePower                  "Ac reactive power value"         {channel="modbus:inverter-three-phase:bridge:SEWechselrichter:acGeneral#ac-reactive-power"}
Number:Dimensionless       SolaredgeSE5KAcGeneralAcPowerFactor                    "Ac power factor"                 {channel="modbus:inverter-three-phase:bridge:SEWechselrichter:acGeneral#ac-power-factor"}
Number:Energy              SolaredgeSE5KAcGeneralAcLifetimeEnergy                 "Ac lifetime energy production"   {channel="modbus:inverter-three-phase:bridge:SEWechselrichter:acGeneral#ac-lifetime-energy"}
Number:ElectricCurrent     SolaredgeSE5KAcPhaseAAcPhaseCurrent                    "Ac phase current value"          {channel="modbus:inverter-three-phase:bridge:SEWechselrichter:acPhaseA#ac-phase-current"}
Number:ElectricPotential   SolaredgeSE5KAcPhaseAAcVoltageToNext                   "Ac voltage"                      {channel="modbus:inverter-three-phase:bridge:SEWechselrichter:acPhaseA#ac-voltage-to-next"}
Number:ElectricPotential   SolaredgeSE5KAcPhaseAAcVoltageToN                      "Ac voltage phase to n value"     {channel="modbus:inverter-three-phase:bridge:SEWechselrichter:acPhaseA#ac-voltage-to-n"}
Number:ElectricCurrent     SolaredgeSE5KAcPhaseBAcPhaseCurrent                    "Ac phase current value"          {channel="modbus:inverter-three-phase:bridge:SEWechselrichter:acPhaseB#ac-phase-current"}
Number:ElectricPotential   SolaredgeSE5KAcPhaseBAcVoltageToNext                   "Ac voltage"                      {channel="modbus:inverter-three-phase:bridge:SEWechselrichter:acPhaseB#ac-voltage-to-next"}
Number:ElectricPotential   SolaredgeSE5KAcPhaseBAcVoltageToN                      "Ac voltage phase to n value"     {channel="modbus:inverter-three-phase:bridge:SEWechselrichter:acPhaseB#ac-voltage-to-n"}
Number:ElectricCurrent     SolaredgeSE5KAcPhaseCAcPhaseCurrent                    "Ac phase current value"          {channel="modbus:inverter-three-phase:bridge:SEWechselrichter:acPhaseC#ac-phase-current"}
Number:ElectricPotential   SolaredgeSE5KAcPhaseCAcVoltageToNext                   "Ac voltage"                      {channel="modbus:inverter-three-phase:bridge:SEWechselrichter:acPhaseC#ac-voltage-to-next"}
Number:ElectricPotential   SolaredgeSE5KAcPhaseCAcVoltageToN                      "Ac voltage phase to n value"     {channel="modbus:inverter-three-phase:bridge:SEWechselrichter:acPhaseC#ac-voltage-to-n"}
Number:ElectricCurrent     SolaredgeSE5KDcGeneralDcCurrent                        "Dc current value"                {channel="modbus:inverter-three-phase:bridge:SEWechselrichter:dcGeneral#dc-current"}
Number:ElectricPotential   SolaredgeSE5KDcGeneralDcVoltage                        "Dc voltage value"                {channel="modbus:inverter-three-phase:bridge:SEWechselrichter:dcGeneral#dc-voltage"}
Number:Power               SolaredgeSE5KDcGeneralDcPower                          "Dc power value"                  {channel="modbus:inverter-three-phase:bridge:SEWechselrichter:dcGeneral#dc-power"}



Re: PV Wallbox laden mit "Solaredge" und "GoECharger"

Verfasst: 1. Aug 2022 07:52
von MaxE.
Hallo Sonic,

Herzlichen Dank dafür. Das hilft mir sicher :-)

LG Max

Re: PV Wallbox laden mit "Solaredge" und "GoECharger"

Verfasst: 5. Aug 2022 12:11
von MaxE.
Hallo Sonic,
eine kleine Frage hab ich noch. Bekommst du denn die "echten" Werte ausgelesen, die die Module bringen? Da hab ich noch ein Problem. Mein Inverter hat eine max. AC Leistung von 4,6kW. Wenn der am "anschlag" ist, lade ich den Batteriespeicher mit dem Überschuss auf. Nur habe ich trotz 6kW aufm "Dach" (laut SE Portal) nur knapp über den 4,6kW an DC Leistung. Wie hast du das gelöst?

Danke und LG

Max

Re: PV Wallbox laden mit "Solaredge" und "GoECharger"

Verfasst: 5. Aug 2022 14:40
von int5749
MaxE. hat geschrieben: 5. Aug 2022 12:11 Hallo Sonic,
eine kleine Frage hab ich noch. Bekommst du denn die "echten" Werte ausgelesen, die die Module bringen? Da hab ich noch ein Problem. Mein Inverter hat eine max. AC Leistung von 4,6kW. Wenn der am "anschlag" ist, lade ich den Batteriespeicher mit dem Überschuss auf. Nur habe ich trotz 6kW aufm "Dach" (laut SE Portal) nur knapp über den 4,6kW an DC Leistung. Wie hast du das gelöst?

Danke und LG

Max
Hola MAx,

verstehe ich gerade nicht. Wenn Du auf dem Dach mehr kw/p liegen hast, als der Inverter "wandeln" kann, ist dies durch den Interverter begrenzt.

z.B. habe ich auf dem Dach 4,7kW/p in Modulen, aber mein Inverter kann "nur" 4kw/p wandeln. Dies ist so gewollt, da ich durch eine etwas schlechtere Ausrichtung und teilsweise Verschattung der Module nur selten mehr als 4kW erzeuge. Da der WR aber somit einen besseren Wirkungsgrad hat, habe ich auf die Spitzen verzichtet. (Ist ja auch schon 11 Jahre als unsere Anlage)

Somit kannst Du nur das nutzen, was der WR liefert. Welchen WR hast Du dort dran?

Re: PV Wallbox laden mit "Solaredge" und "GoECharger"

Verfasst: 5. Aug 2022 19:37
von MaxE.
Hallo int5749,

ja genauso ist es bei mir auch. Der SE5000 kann 4,6kW AC Leistung ins Netz pumpen. Ich habe - wie es üblich ist - mehr Module auf dem Dach. Mit am DC-Strang des Inverters hängt ein Storedge Speichermanager und eine LG Resu 10H. Die 10H wird mit HV Gleichspannung betrieben. Geht der Inverter nun in seine Begrenzung, kann ich mit dem Überschuss an DC Leistung nun noch die Batterie laden. Das klappt auch und im Monitoring Portal sieht man z.B. dass auf dem Dach 6,5kW anliegen, 4,6kW in die AC Seite gehen und mit dem Rest der Speicher geladen wird. Ich kann nur diesen "Dach-DC-Wert" nicht über den Modbus lesen. Nachdem aber die Standardeinstellung "maximaler Eigenverbrauch" des SE Wechselrichters einfach grottig ist, muss ich über die Remote-Control Funktion nun das Speichermanagement / Ladeprofil selbst machen. Dazu ist es natürlich von Vorteil,wenn man weiß, wa auf dem Dach produziert wird.

VG Max