Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sunspec: scale factors ignored when writing #16008

Closed
Loony2392 opened this issue Sep 9, 2024 · 26 comments · Fixed by #16209
Closed

Sunspec: scale factors ignored when writing #16008

Loony2392 opened this issue Sep 9, 2024 · 26 comments · Fixed by #16209
Assignees
Labels
bug Something isn't working devices Specific device support

Comments

@Loony2392
Copy link

Hallo zusammen,

wie bereits in #15994 erwähnt, ist die Netzladeleistung des Fronius Gen24 aktuell auf lediglich 100-200 W begrenzt. Es wäre hilfreich, im Reiter "Netzladen" eine zusätzliche Option hinzuzufügen, bei der man die gewünschte Ladeleistung festlegen kann, um den Fronius entsprechend effizienter beim Netzladen der Batterie zu steuern.

man könnte dies z.b auch in den Prozentschritten machen (in Abhängigkeit der WR Leistung)

image

Möglicher Weise wäre diese Funktion auch für andere Wechselrichter interessant.

1683535878986-9958f969-6c1c-444e-a777-6d1959234873-gen24_primo_symo_inverter_register_map_int-amp-sf_storage.xlsx

@andig
Copy link
Member

andig commented Sep 10, 2024

Warum ist hier etwas einzustellen? Hier scheint eher laden mit Maximalleistung relevant um den günstigsten Slot nutzen zu können?

Welches Register ist für maximale Leistung notwendig? Konntest du das lokal testen?

@andig andig added enhancement New feature or request devices Specific device support labels Sep 10, 2024
@TomF79

This comment was marked as abuse.

@Loony2392
Copy link
Author

Moin,

ich finde, dass diese Lösung besonders für diejenigen mit kleineren Speichern sinnvoll ist, um die Batterie nicht unnötig mit hohen Ladeströmen zu belasten. Insbesondere, weil die Zeitfenster (zumindest bei mir) recht großzügig bemessen sind und es somit nicht notwendig ist, stets mit der maximalen Ladeleistung zu arbeiten.

Ich kann das gerne einmal lokal testen.

Register Prüfe ich.

@andig
Copy link
Member

andig commented Sep 10, 2024

Standardmässig mit 200W ist sinnfrei.

Check. Wir möchten das nicht für alle konfigurierbar machen (wer das braucht kann es extern umsetzen). Ein sinnvoller Defaultwert wäre aber notwendig.

Register Prüfe ich.

Prima- schau bitte auch mal, ob es reicht, das 1x zu setzen oder ob wirklich evcc das tun muss...

@TomF79

This comment was marked as abuse.

@panzenpeda
Copy link

panzenpeda commented Sep 10, 2024

ich würde auch maximale Leistung bevorzugen, um die (ohnehin schon weniger werdenden) günstigen stunden zu nutzen.
spitze wäre aber natürlich eine einstellmöglichkeit. so wie oben im Screenshot wärs genial

@WolfImBusch
Copy link

Hallo,
super interessant, zumal ich die identischen Komponenten verwende und ab dem 1.1.2025 zu Tibber wechsle ... 😄

Auf GitHub gibt es ein Projekt mit Namen "Batcontrol" als separate Lösung. Ich bin leider kein besonders guter Programmierer aber vielleicht kann jemand anhand des Codes dort ableiten, welches Register und wie oft dieses zu setzen ist ableiten...
Viele Grüße
Alex

@JauntyJosef
Copy link

JauntyJosef commented Sep 12, 2024

Zum erzwungenen Netzladen schreibe ich in das Modbusregister 40355_OutWRte einem negativen Wert. Wenn ich zB -3000 (% mal 100) hineinschreibe, wird der Akku mit mindestens 30% von dem Wert, der in dem Register 40345_WChaMAx steht, geladen. Was an PV Leistung fehlt, kommt vom Netz.
Ein positiver Wert in dem 40355 Register, gibt die maximale Entladeleistung an. Ein negativer Wert die minimale erzwungene Ladeleistung.
In dem Register 40348_StorCtl_Mod habe ich 3 stehen.

Edit: Zu den angegebenen Registern muss man 1 dazu zählen. Siehe Beitrag unten.

@Loony2392
Copy link
Author

Loony2392 commented Sep 12, 2024

40355 kann aber eigentlich nicht sein, nach der Doku von Fronius ist das für den Status

image

Wenn dann müsste es das register 40357 sein

image

@JauntyJosef
Copy link

Mein Fehler: du musst meine angegebenen Register um 1 erhöhen, damit diese zu denen in der Doku passen (ich hab diese nur schnell aus dem Modbus Adapter im ioBroker entnommen … da muss man com Register 1 abziehen).
OutWRte negativ schreiben passt aber.

Wenn du in InWRte einen negativen Wert schreibst, dann erzwingst du, wenn ich mich recht erinnere, eine Entladung des Speichers. Müsste ich aber in der Modbus Doku noch einmal nachsehen.

@JauntyJosef
Copy link

Auszug aus der Fronius Modus Doku Seite 34/35:

Beispiel 5: Laden im Bereich von 50% bis 75% der nominalen Leistung

Dieses Verhalten kann durch Limitierung der maximalen Ladeleistung auf 75% und Limitierung der maximalen Entladeleistung auf -50% erreicht werden => resultiert in Fenster [1650 W, 2475 W]

  • InWRte = 75% (setze Ladelimit auf 75% von WchaMax)
  • OutWRte = -50% (setze Entladelimit auf -50% von WchaMax)
  • StorCtl_Mod = 3 (schalte beide Grenzwerte aktiv, Bit-Muster: 11)
  • Der Batteriestatus in Fronius Solar.web wechselt zu „Erzwungene Nachladung“

Beispiel 6: Entladen mit 50% der nominalen Leistung

Dieses Verhalten kann durch Limitierung der maximalen Ladeleistung auf -50% und Limitierung der maximalen Entladeleistung auf 50% erreicht werden => resultiert in Fenster [-1650 W, -1650 W]

  • InWRte = -50% (setze Ladelimit auf -50% von WchaMax)
  • OutWRte = 50% (setze Entladelimit auf 50% von WchaMax)
  • StorCtl_Mod = 3 (schalte beide Grenzwerte aktiv, Bit-Muster: 11)

Beispiel 7: Laden mit 50% bis 100% der nominalen Leistung
Dieses Verhalten kann durch Limitierung der maximalen Entladeleistung auf -50% erreicht werden => resultiert in Fenster [1650 W, 3300 W]

  • OutWRte = -50% (setze Entladelimit auf -50% von WchaMax)
  • StorCtl_Mod = 2 (schaltet Entladegrenzwert aktiv, Bit-Muster: 10)
  • InWRte ist in diesem Fall nicht relevant
  • Der Batteriestatus in Fronius Solar.web wechselt zu „Erzwungene Nachladung“

@andig
Copy link
Member

andig commented Sep 14, 2024

Zum erzwungenen Netzladen schreibe ich in das Modbusregister 40355_OutWRte einem negativen Wert. Wenn ich zB -3000 (% mal 100) hineinschreibe, wird der Akku mit mindestens 30% von dem Wert, der in dem Register 40345_WChaMAx steht, geladen. Was an PV Leistung fehlt, kommt vom Netz.

Laut Template wird OutWRte bereits mit -100% geschrieben. Die Frage ist also, warum das nicht zu maximaler Ladeleistung führt? Kann es sein, dass WChaMAx hier auf einem falschen Wert steht? Warum ist dieser falsch gesetzt?

Aus Sicht evcc scheint hier nichts falsch zu sein, daher erstmal tentatively geschlossen. Eine konfigurierbare Ladeleistung ist nicht geplant.

@andig andig closed this as completed Sep 14, 2024
@panzenpeda

This comment was marked as abuse.

@andig
Copy link
Member

andig commented Sep 14, 2024

Da es Probleme zu geben scheint, ein Update zu lesen und verstehen oder einen inhaltlichen Beitrag zu liefern Kommentar versteckt.

@JauntyJosef
Copy link

JauntyJosef commented Sep 16, 2024

Zum erzwungenen Netzladen schreibe ich in das Modbusregister 40355_OutWRte einem negativen Wert. Wenn ich zB
Laut Template wird OutWRte bereits mit -100% geschrieben. Die Frage ist also, warum das nicht zu maximaler Ladeleistung führt? Kann es sein, dass WChaMAx hier auf einem falschen Wert steht? Warum ist dieser falsch gesetzt?

Aus Sicht evcc scheint hier nichts falsch zu sein, daher erstmal tentatively geschlossen. Eine konfigurierbare Ladeleistung ist nicht geplant.

@andig
Darin könnte aber das Problem liegen. Kannst du das überprüfen, ob hier tatsächlich -100% geschrieben werden. Ich denke es wird "-100" in OutWRte geschrieben, aber das sind eben nur 1% und nicht 100%. Dazu müsste in das register "-10000" geschrieben werden. Wenn ich über evcc das Netzladen starten, steht dann jedenfalls -100 in dem Register ... und das sind eben 1%.
Der Scale Faktor steht in InOutWRte_SF und ist -2.

Edit: Und beim Ausschalten des Netzladens, wird glaube ich "100" geschrieben ... sollte "10000" sein. Da aber evcc beim Deaktivieren der Netzladung StorCTLMod mit 0 schreibt, hat das keine Auswirkung.

@Loony2392
Copy link
Author

Zum erzwungenen Netzladen schreibe ich in das Modbusregister 40355_OutWRte einem negativen Wert. Wenn ich zB
Laut Template wird OutWRte bereits mit -100% geschrieben. Die Frage ist also, warum das nicht zu maximaler Ladeleistung führt? Kann es sein, dass WChaMAx hier auf einem falschen Wert steht? Warum ist dieser falsch gesetzt?

Aus Sicht evcc scheint hier nichts falsch zu sein, daher erstmal tentatively geschlossen. Eine konfigurierbare Ladeleistung ist nicht geplant.

@andig Darin könnte aber das Problem liegen. Kannst du das überprüfen, ob hier tatsächlich -100% geschrieben werden. Ich denke es wird "-100" in OutWRte geschrieben, aber das sind eben nur 1% und nicht 100%. Dazu müsste in das register "-10000" geschrieben werden. Wenn ich über evcc das Netzladen starten, steht dann jedenfalls -100 in dem Register ... und das sind eben 1%. Der Scale Faktor steht in InOutWRte_SF und ist -2.

Edit: Und beim Ausschalten des Netzladens, wird glaube ich "100" geschrieben ... sollte "10000" sein. Da aber evcc beim Deaktivieren der Netzladung StorCTLMod mit 0 schreibt, hat das keine Auswirkung.

Das könnte daran liegen.

Wenn ich das laden der Batterie mal durch hochsetzen der Kosten erzwinge sagt HA das OutWRte steht auf -1% steht wenn ich das ganze Stoppe (Batterie gesperrt laut EVCC) steht der wert auf 0. #

image

image

@andig
Copy link
Member

andig commented Sep 16, 2024

Sowas steht im Logfile- da könnten wir einfach schauen!

@Loony2392
Copy link
Author

Sowas steht im Logfile- da könnten wir einfach schauen!

Anbei das Modbus / SunSpec log

evcc-20240916-120452-trace.log

@andig
Copy link
Member

andig commented Sep 16, 2024

Ohje, ich sehe gerade das Todo im Code bei den Schreibbefehlen:

// TODO scale factors

Ich hab kein Sunspecgerät. Wer mir Remote Zugang über VPN/SSH geben könnte bitte bei info@evcc.io melden. Vielen Dank!

@JauntyJosef
Copy link

Was würdet du denn genau benötigen?

@WolfImBusch
Copy link

WolfImBusch commented Sep 17, 2024

@JauntyJosef Ich habe gestern für @andig einen VPN Zugang eingerichtet. Ich glaube er war noch nicht "hier" - aber das kommt bestimmt noch .. :-) Bin nur unschlüssig, ob ich evcc beenden muss, damit er debuggen kann

Zur Info: ich habe die Komponenten Fronius Smartmeter TS 65A-3, Fronius Wechselrichter Fronius Symo Gen24 Plus sowie BYD Battery-Box Premium HVS.

Steuerung erfolgt über Modbus und nicht über das Solar-API von Fronius - ich glaube, das war die Voraussetzung, dass das Laden der Hausbatterie über das Netz überhaupt klappt. Im Fronius habe ich "Batterieladung aus dem öffentlichen Netz zulassen" aktiviert sowie natürlich die Modbus-Steuerung.

evcc hat gestern kurz angefangen zu laden (mit ca. 50W) - aber das Laden kurz danach beendet. Mal sehen, was andig rausfindet ...

Viele Grüße!

@JauntyJosef
Copy link

Sehr gut, danke für die Info. Da bin ich gespannt.

@andig andig reopened this Sep 17, 2024
@andig andig added bug Something isn't working and removed enhancement New feature or request labels Sep 17, 2024
@andig andig self-assigned this Sep 17, 2024
@andig andig changed the title Fronius Gen24 Ladeleistung variabel einstellen Modbus: scale factors ignored when writing Sep 18, 2024
@andig andig changed the title Modbus: scale factors ignored when writing Sunspec: scale factors ignored when writing Sep 18, 2024
@WolfImBusch
Copy link

WolfImBusch commented Sep 19, 2024

Hallo @JauntyJosef,
Du hast es sicher schon gesehen - @andig hat im letzten Nightly eine Änderung im Code durchgeführt. Diese führt bei mir nun dazu, dass die Batterie nicht mehr mit 50W, sondern mit 4.7kW geladen wird. Das ist schonmal super!!!!!

Leider ist es so, dass der Ladevorgang nach ca. 30s abbricht. Das war bei mir auch leider schon vor der Änderung im Code mit dem Scale Factor so - also bei Laden der Hausbatterie mit 50W. Ich gehe davon aus, dass das bei Dir nicht so ist, Du bislang mit einer niedrigen Leistung Deine Hausbatterie laden konntest und es deshalb irgendwie an meinen Einstellungen/Setup liegen wird.

Kannst Du mir bitte mitteilen, was Du genau im Wechselrichter eingestellt hast? Vielleicht habe ich eine Einstellung übersehen. Ich dachte wichtig sind

  • Konfiguration der Komponenten in der evcc.yaml über Modus, also "template: fronius-gen24" und NICHT über das Solar-API
  • Im Fronius unter "Energiemanagement -> Batteriemanagement": Batterieladung aus dem öffentlichen Netz zulassen
  • Im Fronius unter "Kommunikation -> Modus: "Wechselrichter Steuerung über Modbus"

Gibt es noch andere wichtige Einstellungen?

Edit: Ich habe das Gefühl (und ich weiß, ich sollte hier nicht von Gefühlen reden), dass hier etwas "dagegen regelt" und somit das Laden der Hausbatterie nach den o.g. 30s abbricht. Ich haben beim Fronius die "Eigenverbrauchsoptimierung" (unter Energiemanagent --> Eigenverbrauchs-Optimierung) in Verdacht, die bei mir auf "Automatisch" steht.
@JauntyJosef und @Loony2392 Was hat ihr da bei euch eingestellt? Steht da "manuell"? Falls ja, welche Zielwerte am Einspeisepunkt habt ihr da eingestellt? Werden die Zielwerte ggf. sogar von evcc selbst gesetzt?

Ich danke euch und viele Grüße

@JauntyJosef
Copy link

@WolfImBusch

  • Ich benutze für Wechselrichter und Speicher die fronius-gen24 Templates.
  • Energieverbrauchsoptimierung steht bei auch auf Automatisch.
  • "Batterieladung aus dem öffentlichen Netz zulassen" ist ein, allerdings ist das bei mit unter "Gerätekonfiguration" - "Komponenten"
  • "Wechselrichter Steuerung über Modbus" ist ein. "Sunspec Model Type" ist "int + SF"

Hast du sonst vielleicht ein Skript laufen, dass den Akku steuert, wie zB prognosenbasiertes Laden?

@WolfImBusch
Copy link

Einen schönen guten Morgen @JauntyJosef,

vielen Dank für Deine Antwort. Bei mir funktioniert es jetzt!!! D.h. das Laden der Hausbatterie beendet sich nicht mehr nach ca. 30s. @andig (nochmal vielen Dank!!) war so nett und hat sich das bei mir nochmal virtuell "vor Ort" angeschaut.

Ursache war, dass das Register "InOutWRte_RvrtTms" ("Timeout period for charge/discharge rate") von meinem Wechselrichter (warum auch immer) auf "33.00" gesetzt worden war - also die von mir beobachteten 30s. andig hat dies bereits im Code geändert (siehe #16241 ) und die Änderung ist auch bereits im aktuellen Nightly enthalten.

Ich habe es heute morgen kurz getestet und - wie oben beschrieben - sieht es jetzt bei mir sehr gut aus.

Möchtest Du und @Loony2392 das bei euch auch mal testen? Sonst funktioniert es nur bei bei und bei euch nicht ... :-)

Viele Grüße!!

@Loony2392
Copy link
Author

Einen schönen guten Morgen @JauntyJosef,

vielen Dank für Deine Antwort. Bei mir funktioniert es jetzt!!! D.h. das Laden der Hausbatterie beendet sich nicht mehr nach ca. 30s. @andig (nochmal vielen Dank!!) war so nett und hat sich das bei mir nochmal virtuell "vor Ort" angeschaut.

Ursache war, dass das Register "InOutWRte_RvrtTms" ("Timeout period for charge/discharge rate") von meinem Wechselrichter (warum auch immer) auf "33.00" gesetzt worden war - also die von mir beobachteten 30s. andig hat dies bereits im Code geändert (siehe #16241 ) und die Änderung ist auch bereits im aktuellen Nightly enthalten.

Ich habe es heute morgen kurz getestet und - wie oben beschrieben - sieht es jetzt bei mir sehr gut aus.

Möchtest Du und @Loony2392 das bei euch auch mal testen? Sonst funktioniert es nur bei bei und bei euch nicht ... :-)

Viele Grüße!!

Hallöchen,

leider erst jetzt dazugekommen, Bis jetzt klappt das Netzladen Wunderbar mit der 0.130.12 :) Vielen dank @andig <3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working devices Specific device support
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants