SolarEdge HybridWechselrichter mit Batterie steuern

Wie steuerst Du die Wärmepumpe denn an, bzw. welches Modul nutzt Du?
Ich hab mal einen Link auf meine nextcloud erstellt: https://nextcloud.partec.org:8283/index.php/s/6S924TsN3HGggJc
ist bis zum 25.11. gültig.

Gruß,
Klinki

Hallo, vielen Dank erstmal fürs jar file. Hast du auch einen link zu deiner fork? die scheint verschwunden zu sein.

Mein Setup:
PV 12kWp + 16kWh BYD LVS Speicher. Wechselrichter SolarEdge SE10k mit Optimierer P505.
Wärmepumpe is von Lambda. Hat einen LAN Modbus, über den man den PV Überschuss der Wärmepumpe angeben kann. Dann noch eine Skoda Wallbox.

Also eigentlich ist nur die Wallbox bzw. die Wärmepumpe zu optimieren. Wallbox geht über EVCC (open source software) welche wunderbar mit Openems zusammenspielt.

Mein momentanes Openems setup ist ohne konfigurierter Batterie. Zwei Dinge möchte ich ändern.

  1. Einfach die Batterie im OpenEms UI sehen.
  2. (viel wichtiger) Intelligentere Wärmepumpensteuerung. Die Wärmepumpe an sich hat bereits eine sehr intelligente Regelung eingebaut. Sie kennt die Wettervorhersage über einen eigenen Dienst, die Aussentemperatur natürlich und übder den Modbus den PV Überschuss. Das hat letzten Winter als wir noch keien Batterie hatten mit OpenEms super funktioniert. Seit der Batterie ist es aber leider so, dass ja solange die Batterie läd, kein PV Überschuss da ist. D.h. die Wärmepumoe macht unter Tag nichts und nimmt dann in der Nacht aus der Batterie. Nachdem es aber eine Luft Wärmepumpe ist, wäre es besser unter Tags wenn es warm ist zu Buffern. Besserer COP Wert. Daher wäre meine Idee, wenn die Batterie mal im OpenEMs drinnen ist, der Wärmepumpe den Netzbezug + Batterielademenge mitzuteilen. D.h. je nach temperatur und Wetter würde dann die Wärmepumpe wenn Energie in die Batterie geht buffern anfangen. Das wäre so meine Idee hinter dem ganzen.
    lg
    Ralph

Ich will auch so eine schlaue Wärmepumpe…

Will auch jetzt keine große Diskussion anfangen, ob es Sinn macht zuerst E-Speicher oder Wasser-Speicher zu laden.
Nur als Hinweis: Ich verzögere das Laden des E-Speichers auf die Nachmittagsstunden wenn hoher Ertrag zu erwarten ist. So lädt der W-Speicher früher.
Wie dem auch sei: E-Speicher sollte man auf jeden Fall steuerbar haben. Ich warte schon gespannt auf die variablen Tarfife…

Anyway…hier der Link auf meinen Fork:
https://github.com/DerWahreKlinki/openemsForkKlinki

Gruß,
Klinki

Danke für den link :slight_smile:
ja die Wärmepumpe ist genial, kann ich jedem nur empfehlen !

Ich bin sowas von neugierig ob und wie es bei Dir funktioniert! Wenn ich helfen kann, melde Dich. Gerne können wir auch was per Telefon oder Video-Konfernz ausmachen.

Gruß,
Klinki

Hi Klinki, Thomas

Hab deine Fork heute heruntergeladen und werde die nächsten tage vesuchen die debug umgebung zum laufen zu bringen. Ich melde mich dann mit den ergebnissen oder eben wenn ich probleme hab :-). Vielen dank für deine hilfe!
Lg
Ralph

Hallo Thomas
hab alles aufgesetzt, leider fehlt mir das Grid Symbol mit dem Netzverbrauch. siehe screenshot. die Werte scheinen zu passen Verbrauch passt, 10% batteriestand stimmt auch, keine entleerung da leer und kein laden da Abend und dunkel.

konfiguriert habe ich
Meter Solaredge
PV Inverter Solaredge
Solaredge DC Charger
Solarendge Hybrid Inverter System

hast du eine Idee was ich falsch mache?
lg
Ralph

hm, nicht wirklich. Hast du das Grid-Meter aus meinem Fork genommen? Da waren, glaube ich, auch noch Anpassungen dabei. Müsste ich aber morgen noch mal schauen…

ich hab nur das Meter Solaredge konfiguriert, muss ich ein Grid Meter auch noch reinhauen?

muss ich alle 4 module konfigurieren oder eines weglassen
wenn ich den PV Inverter Solaredge dazufüge dann kommt eine fehlermeldung im log

2023-11-17T21:53:32,970 [tchQueue] ERROR [Events.Framework ] FrameworkEvent ERROR
org.osgi.framework.ServiceException: Service factory returned null. (Component: SolarEdge.PV-Inverter (87))
at org.apache.felix.framework.ServiceRegistrationImpl.getFactoryUnchecked(ServiceRegistrationImpl.java:385) ~[?:?]
at org.apache.felix.framework.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:249) ~[?:?]
at org.apache.felix.framework.ServiceRegistry.getService(ServiceRegistry.java:362) ~[?:?]
at org.apache.felix.framework.Felix.getService(Felix.java:3984) ~[?:?]
at org.apache.felix.framework.BundleContextImpl.getService(BundleContextImpl.java:450) ~[?:?]
at org.apache.felix.eventadmin.impl.handler.EventHandlerProxy.obtain(EventHandlerProxy.java:296) ~[?:?]
at org.apache.felix.eventadmin.impl.handler.EventHandlerProxy.sendEvent(EventHandlerProxy.java:424) ~[?:?]
at org.apache.felix.eventadmin.impl.tasks.HandlerTask.runWithoutDenylistTiming(HandlerTask.java:82) ~[?:?]
at org.apache.felix.eventadmin.impl.tasks.SyncDeliverTasks.execute(SyncDeliverTasks.java:107) ~[?:?]
at org.apache.felix.eventadmin.impl.handler.EventAdminImpl.sendEvent(EventAdminImpl.java:155) ~[?:?]
at org.apache.felix.eventadmin.impl.security.EventAdminSecurityDecorator.sendEvent(EventAdminSecurityDecorator.java:96) ~[?:?]
at io.openems.common.event.EventBuilder.send(EventBuilder.java:68) ~[?:?]
at io.openems.edge.core.cycle.CycleWorker.forever(CycleWorker.java:159) ~[?:?]
at io.openems.common.worker.AbstractWorker$1.run(AbstractWorker.java:154) ~[?:?]
2023-11-17T21:53:37,587 [thread-1] INFO [hared.influxdb.InfluxConnector] [InfluxDB] [monitor] influx0 Pool: 5/5, Pending: 0, Completed:

Konfiguriert werden muss:

  • Meter SolarEdge
    Implements the SolarEdge Meter.
  • SolarEdge Hybrid Inverter
    SolarEdge Hybrid Inverter System - ESS
  • SolarEdge DC Charger (PV-Erzeugung)

Der PV-Inverter passt im Verbund DC-Charger und ESS nicht mehr.

Ich hatte das hier https://community.openems.io/t/fehler-in-sumimpl/1939/4 schon mal versucht aufzudröseln. Stefan hatte den Energiefluss auch mal sehr gut beschrieben. Ich finde den Thread aber grad mal nicht :roll_eyes:

EDIT: Das ist der Thread

Versuch mal Dein Glück - ansonsten können wir auch gerne mal Video-konferieren :slightly_smiling_face:

Hab den fehler gefunden. War am alten blauen UI. Am neuen braunen geht es!

Freut mich! Läuft denn alles?
Ich hab die Controller
Controller Ess Balancing und Controller Ess Emergency Capacity Reserve aktiv laufen. Bei einer Cyle-Time von 250ms.

Hallo klinki

Ja jetzt läuft alles, auch die Wärmepumpe wird angesteuert und ich fage jetzt auch bei der Wärmepumpe den Verbrauch ab. Funktioniert super, im screenshot läuft sie gerade nicht.
Du warum hast du eigentlich Controller Ess Emergency Capacity Reserve konfiguriert? sollte da nicht eh der Wechselrichter das begrenzen. bei mir hat er es zumindest getan bevor ich das openems mit Hybrid aufgesetzt hab.

Moin Ralph,

Lt. meinem Elektriker ist es kein Problem den SolarEdge-Speicher bis auf 0% zu entladen. Ich bin da vielleicht etwas old school was den Umgang mit Akkus angeht…
Die max. Lade/Entlade-Leistung geht auch gegen Ende kaum runter. Ich traue der Sache nicht so wirklich.

Das Thema Lambda-WP hab ich mir auch mal angelesen. Interessante Geräte! Schade, dass ich letztes Jahr erst Wolf verbaut hatte.
Wie steuerst Du die WP denn genau an?

Gruß,
Klinki

also 0% wäre mir auch zu tief. BYD zumindest rät davon ab und was der Hersteller vorgibt daran halte ich mich :slight_smile:

die Wärmepumpe würd über LAN mit dem MODBUS protokoll angesteuert.
Befehle findest du hier: Modbus-Protokoll-und-Beschreibung.pdf (lambda-wp.at)

Ich hab mir die Beschreibung und die Modbus-Doku mal durchgelesen. Mein Neid ist nicht gerade geringer geworden :sleepy:

Anyway. Ich komme nach wie vor nicht so recht mit dem PID-Regler der Power-Komponente klar. Deshalb hatte ich im ESS-Controller auch diese floating-average Hilfs-Klasse verbaut.

Gerade eben gab es wieder eine Anforderung an die applyPower-Methode, die ich mir nicht erklären kann:


Nov 23 15:10:02 fhemNEU java[1938940]: 2023-11-23T15:10:02,435 [_cycle  ] INFO  [ebuglog.ControllerDebugLogImpl] [ctrlDebugLog0] ess0[SolarEdge Home Battery 9.2|SoC:45 %|L:647 W|ChargeEnergy:0|DisChargeEnergy:29834346;|ControlMode 4|ChargePolicy 1|DefaultMode 7|RemoteControlMode 4|ChargePowerWantedAvg 210|ChargePowerWantedOriginal 24|ChargePowerWanted 24 W|ChargePower 0|DischargePower 24|CommandTimeout 60|On-Grid|Feed-In:]
Nov 23 15:10:02 fhemNEU java[1938940]: 2023-11-23T15:10:02,685 [_cycle  ] INFO  [ebuglog.ControllerDebugLogImpl] [ctrlDebugLog0] ess0[SolarEdge Home Battery 9.2|SoC:45 %|L:647 W|ChargeEnergy:0|DisChargeEnergy:29834346;|ControlMode 4|ChargePolicy 1|DefaultMode 7|RemoteControlMode 4|ChargePowerWantedAvg 210|ChargePowerWantedOriginal 25|ChargePowerWanted 25 W|ChargePower 0|DischargePower 24|CommandTimeout 60|On-Grid|Feed-In:]
Nov 23 15:10:02 fhemNEU java[1938940]: 2023-11-23T15:10:02,936 [_cycle  ] INFO  [ebuglog.ControllerDebugLogImpl] [ctrlDebugLog0] ess0[SolarEdge Home Battery 9.2|SoC:45 %|L:329 W|ChargeEnergy:0|DisChargeEnergy:29834346;|ControlMode 4|ChargePolicy 1|DefaultMode 7|RemoteControlMode 4|ChargePowerWantedAvg 190|ChargePowerWantedOriginal -76|ChargePowerWanted -76 W|ChargePower 0|DischargePower 24|CommandTimeout 60|On-Grid|Feed-In:]
Nov 23 15:10:03 fhemNEU java[1938940]: 2023-11-23T15:10:03,188 [_cycle  ] INFO  [ebuglog.ControllerDebugLogImpl] [ctrlDebugLog0] ess0[SolarEdge Home Battery 9.2|SoC:45 %|L:329 W|ChargeEnergy:0|DisChargeEnergy:29834346;|ControlMode 4|ChargePolicy 1|DefaultMode 7|RemoteControlMode 4|ChargePowerWantedAvg 118|ChargePowerWantedOriginal -28|ChargePowerWanted -28 W|ChargePower 0|DischargePower 24|CommandTimeout 60|On-Grid|Feed-In:]
Nov 23 15:10:03 fhemNEU java[1938940]: 2023-11-23T15:10:03,437 [_cycle  ] INFO  [ebuglog.ControllerDebugLogImpl] [ctrlDebugLog0] ess0[SolarEdge Home Battery 9.2|SoC:45 %|L:329 W|ChargeEnergy:0|DisChargeEnergy:29834346;|ControlMode 4|ChargePolicy 1|DefaultMode 7|RemoteControlMode 4|ChargePowerWantedAvg 54|ChargePowerWantedOriginal 329|ChargePowerWanted 329 W|ChargePower 0|DischargePower 24|CommandTimeout 60|On-Grid|Feed-In:]
Nov 23 15:10:03 fhemNEU java[1938940]: 2023-11-23T15:10:03,677 [_cycle  ] INFO  [ebuglog.ControllerDebugLogImpl] [ctrlDebugLog0] ess0[SolarEdge Home Battery 9.2|SoC:45 %|L:329 W|ChargeEnergy:0|DisChargeEnergy:29834346;|ControlMode 4|ChargePolicy 1|DefaultMode 7|RemoteControlMode 4|ChargePowerWantedAvg 115|ChargePowerWantedOriginal 329|ChargePowerWanted 329 W|ChargePower 0|DischargePower 24|CommandTimeout 60|On-Grid|Feed-In:]
Nov 23 15:10:03 fhemNEU java[1938940]: 2023-11-23T15:10:03,936 [_cycle  ] INFO  [ebuglog.ControllerDebugLogImpl] [ctrlDebugLog0] ess0[SolarEdge Home Battery 9.2|SoC:45 %|L:329 W|ChargeEnergy:0|DisChargeEnergy:29834346;|ControlMode 4|ChargePolicy 1|DefaultMode 7|RemoteControlMode 4|ChargePowerWantedAvg 106|ChargePowerWantedOriginal -22|ChargePowerWanted -22 W|ChargePower 0|DischargePower 24|CommandTimeout 60|On-Grid|Feed-In:]
Nov 23 15:10:04 fhemNEU java[1938940]: 2023-11-23T15:10:04,188 [_cycle  ] INFO  [ebuglog.ControllerDebugLogImpl] [ctrlDebugLog0] ess0[SolarEdge Home Battery 9.2|SoC:45 %|L:275 W|ChargeEnergy:0|DisChargeEnergy:29834346;|ControlMode 4|ChargePolicy 1|DefaultMode 7|RemoteControlMode 4|ChargePowerWantedAvg 117|ChargePowerWantedOriginal -20|ChargePowerWanted -20 W|ChargePower 0|DischargePower 24|CommandTimeout 60|On-Grid|Feed-In:]
Nov 23 15:10:04 fhemNEU java[1938940]: 2023-11-23T15:10:04,438 [_cycle  ] INFO  [ebuglog.ControllerDebugLogImpl] [ctrlDebugLog0] ess0[SolarEdge Home Battery 9.2|SoC:45 %|L:275 W|ChargeEnergy:0|DisChargeEnergy:29834346;|ControlMode 4|ChargePolicy 1|DefaultMode 7|RemoteControlMode 3|ChargePowerWantedAvg 118|ChargePowerWantedOriginal -22|ChargePowerWanted -22 W|ChargePower 20|DischargePower 0|CommandTimeout 60|On-Grid|Feed-In:]
Nov 23 15:10:04 fhemNEU java[1938940]: 2023-11-23T15:10:04,681 [_cycle  ] INFO  [ebuglog.ControllerDebugLogImpl] [ctrlDebugLog0] ess0[SolarEdge Home Battery 9.2|SoC:45 %|L:275 W|ChargeEnergy:0|DisChargeEnergy:29834346;|ControlMode 4|ChargePolicy 1|DefaultMode 7|RemoteControlMode 3|ChargePowerWantedAvg 49|ChargePowerWantedOriginal -17|ChargePowerWanted -17 W|ChargePower 20|DischargePower 0|CommandTimeout 60|On-Grid|Feed-In:]
Nov 23 15:10:04 fhemNEU java[1938940]: 2023-11-23T15:10:04,925 [_cycle  ] INFO  [ebuglog.ControllerDebugLogImpl] [ctrlDebugLog0] ess0[SolarEdge Home Battery 9.2|SoC:45 %|L:275 W|ChargeEnergy:0|DisChargeEnergy:29834346;|ControlMode 4|ChargePolicy 1|DefaultMode 7|RemoteControlMode 3|ChargePowerWantedAvg -19|ChargePowerWantedOriginal -14|ChargePowerWanted -14 W|ChargePower 20|DischargePower 0|CommandTimeout 60|On-Grid|Feed-In:]

Zur Erklärung:
ChargePowerWanted: Die Lade/Entlade-Leistung welche an das ESS geschickt wird
ChargePowerWantedAvg: Der aktuell aus den letzten 5 Werten berechnete Durchschnittswert. Dieser wird als ChargePowerWanted gesetzt wenn der Sprung zwischen dem letzten ChargePowerWantedOriginal und dem Mittelwert > 300W ist
ChargePowerWantedOriginal: Die Lade/Entlade-Leistung welche an die applyPower-Methode von der Power-Komponente geschickt wird

Somit soll die Batterie etwas “ent-stresst” werden.
Der PID-Regler ist mit 0,3/0,15/0 schon relativ moderat eingestellt. Diesen Sprung von -28 auf 329W kann ich mir nicht erklären. Die Lasten haben sich nicht geändert, PV-Ertrag ebenfalls nicht und nach 2 Zyklen springt der Wert wieder in´s Negative.

Hallo Klinki
ich hffe mal ich hab das halbwegs verstanden was du da vor hast.
In deinem Logfile hast du ja einen Lastabfall von 647W auf 329W wenn ich das richtig sehe und due willst da dann so zusagen einen lagsamen Übergang zur neuen Lastanforderung bei der Batterie haben? Du hast da ein array von 5 Werten die gemittelt werden. Und ja, die Werte im Log spiegeln eigentlich niocht das wieder was da gemacht werden sollte.

Moin Ralph,

So ist es. Hab am Wochenende ziemlich viel mit dem PID-Regler gespielt und bin zu keinem zufriedenstellenden Ergebnis gekommen.
Es hat sich aber auch gezeigt, dass das Problem mit den Skalierungseffekten bei der DcCharger-Komponente bei bestimmten PV Werten noch vorhanden ist. Das Ding ist halt, dass der Power-Wert immer von einem Skalierungs-Faktor begleitet wird. Beide werden nacheinander abgefragt. Ändert sich einer der beiden und passt nicht zum Wert welcher vorher vom WR gelesen wurde, springt der PV-Ertrag im kW-Bereich. Damit kommt die gesamte Berechnung durcheinander. Auch hier arbeitet meine Hilfs-Klasse mit dem moving average. Wenn der reale Ertrag um die 300W liegt (gestern schön zu beobachten), in der Skalierung hin- und herspringt, reicht die Mittelwertbildung anscheinend nicht aus.
Gefällt mir nicht. Ich werde mal versuchen die Skalierungs-Faktoren zwischenzuspeichern.
Das Problem besteht quasi schon seit der originalen SunSpec-Umsetzung des SolarEdge-WRs von vor zwei Jahren.
Die SolarEdge-App zeigt übrigens das gleiche Verhalten in etwas abgeschwächter Form: Wenn PV bei ca. 500W und OpenEMS deaktiviert, springt der Netzbezug dauernd zwischen Positiv und Negativ hin und her.

Gruß
Klinki

Nachtrag: Es scheint so zu sein, als ob SolarEdge tatsächlich um die 300W gerne den Skalierungsfaktor ändert. Ich habe die Charger-Komponente jetzt so geändert, dass ein Wert nur als valide betrachtet wird wenn der letzte Skalierungsfaktor gleich dem aktuellen ist. Bisher sieht es gut aus.
Ist in meinem Fork…

ja das macht Sinn, dann fängt man zumindest den switch zwischen den skalierungsfaktoren ab. ich mach die nächsten tage dann mal ein update bei mir.