Skip to content

Conversation

@cr0i
Copy link
Contributor

@cr0i cr0i commented Mar 13, 2025

Umsetzung der Speichersteuerung (power_limit) für SolarEdge:
Bei SolarEdge gibt es aktuell ein Problem, das mehrfache Auslesen oder Schreiben von Modbus Registern aus set_power_limit heraus führt zu vollständigen Verbindungsproblemen mit dem SolarEdge Wechselrichter, auch Zähler etc.
Daher habe ich hier einen eigenen PR erstellt, der den Speicher während der Ladung komplett sperrt und dann keine weiteren Lese- oder Schreibvorgänge vornimmt.

Ich erstelle noch einen weiteren PR als Entwurf mit den normalen Abfragen, die benötigt würden.

@cr0i
Copy link
Contributor Author

cr0i commented Mar 13, 2025

Hallo @LKuemmel ,

Du hast in dem anderen PR zur Sungrow Speichersteuerung (#2231) geschrieben, dass die lokale Variable last_mode am Anfang verloren geht. Ich konnte bei meinen Test keinen Fehler feststellen, sie funktioniert lokal so wie ich sie benötige.

Ich habe bei SolarEdge jedoch ein großes Problem beim mehrfachen Auslesen oder Schreiben der Modbus Register.
Ich vermute, dass die Modbus Abfragen, die aus set_power_limit heraus aufgerufen werden in der openWB zu einer 2. Modbus Verbindung führen, die parallel zu den sonstigen Abfragen der Zählerstände etc. laufen.
SolarEdge ist hier ja besonders empfindlich, daher kann ich das momentan nicht sinnvoll umsetzen.
Wenn ich das Regelintervall auf Sehr langsam stelle, funktionieren alle 5 Minuten 2-3 Abfragen, dann bricht es wieder ab.
Welche Logs würden hier für eine Fehleranalyse benötigt?

Soll das lieber hier in Github oder im Forum diskutiert werden?
https://forum.openwb.de/viewtopic.php?p=125089#p125089

@cr0i cr0i marked this pull request as draft March 13, 2025 18:22
@cr0i cr0i marked this pull request as ready for review March 13, 2025 19:45
@cr0i cr0i closed this Mar 14, 2025
@cr0i cr0i deleted the speichersteuerung-solaredge branch March 14, 2025 21:53
@cr0i cr0i restored the speichersteuerung-solaredge branch March 14, 2025 21:57
@cr0i cr0i reopened this Mar 14, 2025
@cr0i cr0i marked this pull request as draft March 17, 2025 13:21
@cr0i
Copy link
Contributor Author

cr0i commented Mar 17, 2025

Ich habe noch eine Optimierung für evtl. vorhandene andere Steuerungen fast fertig.
Dafür brauche ich zusätzlich den power_limit_mode, baue ich heute Abend ein.

@cr0i
Copy link
Contributor Author

cr0i commented Mar 17, 2025

Um andere Steuerungen nicht zu beeinflussen, benötigen wir den power_limit_mode.
Den habe ich über from control import data verfügbar gemacht.
Funktioniert auf jeden Fall gut, passt das so?

@cr0i cr0i marked this pull request as ready for review March 17, 2025 19:08
@seaspotter
Copy link
Contributor

@cr0i der power_limit_mode ist nur die Auswahl im UI für die 3 entsprechenden Auswahlfelder "Immer", "Stop" und "mit Hausverbrauch" entladen, und auf Basis dieser Auswahl im UI wird eben der power_limit_mode gesetzt und das bestimmt wie das "power_limit" gesteuert wird, eben ob None, "0" oder ein Wert zum Entladen übergeben werden muss.
Du hast das also falsch verstanden was der power_limit_mode eigentlich macht, der ist nicht für andere Steuerungen gedacht, nachzulesen auch im entsprechenden Bat Steuerzyklus:
https://github.com/openWB/core/blob/master/packages/control/bat_all.py

@cr0i
Copy link
Contributor Author

cr0i commented Mar 17, 2025

@cr0i der power_limit_mode ist nur die Auswahl im UI für die 3 entsprechenden Auswahlfelder "Immer", "Stop" und "mit Hausverbrauch" entladen, und auf Basis dieser Auswahl im UI wird eben der power_limit_mode gesetzt und das bestimmt wie das "power_limit" gesteuert wird, eben ob None, "0" oder ein Wert zum Entladen übergeben werden muss. Du hast das also falsch verstanden was der power_limit_mode eigentlich macht, der ist nicht für andere Steuerungen gedacht, nachzulesen auch im entsprechenden Bat Steuerzyklus: https://github.com/openWB/core/blob/master/packages/control/bat_all.py

Nein, habe ich nicht falsch verstanden, genau diese Einstellung benötige ich. Das Konzept sieht so aus:
Beim Start der openWB muss der ControlMode einmalig abgeschaltet werden, falls bei einem vorherigen Absturz oder Fehler im Ablauf die falsche Einstellung hinterlassen wurde. Sonst erfolgt z.B. bei Unterschreitung des Mindest-SoC keine Zwangsladung des Speichers mehr, was den Speicher schädigen könnte.
Dies darf jedoch nicht erfolgen, wenn ein anderes Gerät diesen Modus ebenfalls steuert, da dies sonst deren Regelmodus durcheinander bringt.
Nur allein am power_limit kann man das nicht fest machen, da dieser Wert auch übergeben wird, wenn gerade keine Ladung ansteht.
Auch sonst hat man keine Möglichkeit zu erkennen, ob ein anderes Gerät den Wechselrichter auch steuert.
Wenn jemand jedoch eine externe Steuerung hat, wird er den Modus auf "Immer" belassen, da er ja eine eigene Steuerung hat.
Also muss ich zusätzlich auslesen, ob der Modus "Immer" gesetzt ist, dann darf der ControlMode nicht geändert werden.

@cr0i
Copy link
Contributor Author

cr0i commented Mar 19, 2025

Das Problem mit dem Auslesen der Register scheint behoben zu sein, setze den PR daher erstmal auf Draft und schließe ihn dann ggf.

@cr0i cr0i marked this pull request as draft March 19, 2025 21:13
@cr0i cr0i closed this Mar 20, 2025
@cr0i cr0i deleted the speichersteuerung-solaredge branch July 9, 2025 18:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants