Jump to content

Recommended Posts

Geschrieben

Hallo,

ich versuche gerade, die Batteriesteuerung in meiner Warp3smart einzurichten. Gesteuert werden soll eine BYD HVS 10.2 über einen Kostal Plentocore+10.

Gemäß der "Kostal Interface description MODBUS", Seite 24 (siehe Anhang), ist das Register 1042 für den Min SoC zuständig. 

Meine Konfig sieht momentan so aus:

image.thumb.png.3c6c333b1228b5cc652706ff3ac43210.png

Da die Register für MinSoC und MaxSoC bei Kostal float sind, habe ich die Register erst mal per GModbus ausgelesen, um die Codierung der float-Werte in dezimal zu kennen:

image.png.763df0be22c0fa261f79fbef7d6156aa.png

Fürs "entladen verbieten" will ich also die Werte aus dem Register MaxSoC (1044) in das Register MinSoC (1042) schreiben, den diese Dezimal-Werte (17096, 0) entsprechen 100%.
Für "Verbot entladen zurücknehmen" schreibe ich wieder die ursprünglichen Dezimalwerte (16544, 0) in das Register 1042. 

Klick auf Ausführen bei "entladen verbieten" zeigt kurz "warten" an, dann "fertig".

Wenn ich die Register nun wieder per GModbus auslese, zeigt es keine Veränderung an (außer time-stamp), scheint also nicht zu funktionieren.

Irgendeine Idee woran das liegen kann?

Ich habe nirgendwo gelesen, dass ich den Plenticore Modbus erst in einen "write" Modus setzen muss. Kann es die "händische " Umrechung in float sein? Ich traue mich nicht so recht, einfach 100 auf das Register 1042 zu schreiben...

Bin etwas ratlos und freue mich über Hinweise und Ideen

Beste Grüße

VinciSC

 

BA_KOSTAL-Interface-description-MODBUS-TCP_SunSpec_Hybrid.pdf

Geschrieben

Laut der PDF gibt es das Register 1080 "Battery management mode" mit den möglichen Werten (Note 4 auf der nächsten Seite):

4 Battery management modes
0x00 No external battery management
0x01 External battery management via digital I/O
0x02 External battery management via MODBUS protocol

Das Register ist read-only, also muss es irgendeinen anderen Weg als Modbus geben, wie du das aktivieren kannst. Du kannst aber z.B. mit GModbus das Register lesen. Wenn das schon auf 2 steht, hast du ein anderes Problem.

Geschrieben

Wäre es nicht besser dies über "1040 / Battery max. discharge power limit, absolute Erlaubte entladeleistung" zu regeln anstatt über den MinSOC ?

Habe mal irgendwo gelesen das der Wert alle xx Sekunden neu gesendet werden muss.

Infos z.b. im iobroker Forum findet man zu dem Thema einiges.

Neuste Firmware auf dem Plenticore ist auch ratsam.

Bei Sungrow z.b. kann der MinSOC nur im Bereich 5-49 genutzt werden und verfälscht dann den angezeigten Ladestand.

Ich selbst nutze bei Sungrow daher auch Max Discharge Power um die Batterieentladung zu verhindern.

Geschrieben

Moin,

ausgelesen, da steht 0 drin, also "No external battery management"

Dazu passend die Batterieeinstellungen im Plenticore, das "Intern" kann ich aber auf diesem Weg (angemeldet als Anlagenbetreiber) nicht ändern:

image.png.cec98f34b16cd3cbb30e150368167425.png

Allerdings will ich ja auch gar nicht vollständig auf externe Steuerung umstellen (macht bzw. will die Warp ja gemäß https://docs.warp-charger.com/docs/compatible_devices/batteries/ auch nicht). 

Somit erklärt das Register 1080 warum es so nicht funktioniert, aber eine Umgehungslösung sehe ich momentan nicht.

Laut der Interface description, Abschnitt 3.5 gibt es für Plenticore G3 die Register am 1280 zur Beeinflussung der battery power, meiner ist aber kein G3.

Auslesen des Registers 1280 mit GModbus zeigt keine Klartext-Werte an, im log zeigt sich folgendes:

image.png.644a537906fe8bd131dbe9e18ce12c1f.png

 

Geschrieben
Am 31.7.2025 um 10:12 schrieb Ben77:

Wäre es nicht besser dies über "1040 / Battery max. discharge power limit, absolute Erlaubte entladeleistung" zu regeln anstatt über den MinSOC ?

Habe mal irgendwo gelesen das der Wert alle xx Sekunden neu gesendet werden muss.

Infos z.b. im iobroker Forum findet man zu dem Thema einiges.

Neuste Firmware auf dem Plenticore ist auch ratsam.

Bei Sungrow z.b. kann der MinSOC nur im Bereich 5-49 genutzt werden und verfälscht dann den angezeigten Ladestand.

Ich selbst nutze bei Sungrow daher auch Max Discharge Power um die Batterieentladung zu verhindern.

Moin,

die 1040 werde ich mal probieren, danke für die Anregung.
Habe aber leise Zweifel ob das hilft, mir scheint das der (mein) Plenti sich gar nicht von außen bzgl. Batteriesteuerung beeinflussen lassen will.
Das mit dem "alle xx Sekunden neu senden" würde zu Abschnitt 3.5 der Interface description passen, siehe meine AW auf rtrbt...

iobroker Forum kenne ich noch nicht, schaue mal rein was ich da finde ...

Der Plenti macht automatische Updates.

Danke und Grüße

VinciSC71

Geschrieben
Am 31.7.2025 um 10:36 schrieb VinciSC71:

die 1040 werde ich mal probieren, danke für die Anregung.
Habe aber leise Zweifel ob das hilft, mir scheint das der (mein) Plenti sich gar nicht von außen bzgl. Batteriesteuerung beeinflussen lassen will.

Moin,

inzwischen Zugriff auf Register 1040 probiert, Zweifel haben sich bestätigt. Genauso keine Wirkung wie bei Zugriff auf die 1042.

Stöbern im iobroker Forum und Abgleich mit der Kostal Doku führt für mich zu 2 Erkenntnissen:

  1. Der Plenticore muss auf externe Batteriesteuerung konfiguriert werden, damit er externe Schreibzugriffe auf die Register akzeptiert un dumsetzt. Das geht nur mit Installateur-Passwort. Anfrage an meinen Solateur bzgl. Bereitschaft und Preis ist raus, abwarten...
  2. Die externe Vorgabe von Werten muss zyklisch erfolgen, nach Ablauf eines Watchdog-Timers schaltet der Plenti wieder auf interne Steuerung bzw. interne Werte zurück. Der Watchdog kann lt. Doku vom Installateur im Bereich von 60 - 180s festgelegt werden.

Aus 2. ergibt sich die Frage an @MatzeTF, @rtrbt und @photron: Kann ein zyklisches Widerholen der Aktionen (separat aktivierbar, am besten mit einstellbarer Zykluszeit) für die Speichersteuerung umgesetzt werden? Wenn ja, in welchem groben Zeitrahmen?

Danke für Euren Support und viele Grüße

VinciSC71

Geschrieben
On 8/2/2025 at 12:37 AM, VinciSC71 said:

Aus 2. ergibt sich die Frage an @MatzeTF, @rtrbt und @photron: Kann ein zyklisches Widerholen der Aktionen (separat aktivierbar, am besten mit einstellbarer Zykluszeit) für die Speichersteuerung umgesetzt werden? Wenn ja, in welchem groben Zeitrahmen?

Die Funktion ist bereits enthalten. Standardmäßig werden die aktiven Aktionen alle 60 Sekunden wiederholt. Die Zykluszeit ist aktuell über eine undokumentierte Debug-API auf einen beliebigen Wert im Bereich 5 – 99999  Sekunden einstellbar. Ich überlege noch, 0 zuzulassen, um die Funktion deaktivieren zu können.

Geschrieben
Am 2.8.2025 um 11:42 schrieb MatzeTF:

Die Funktion ist bereits enthalten. Standardmäßig werden die aktiven Aktionen alle 60 Sekunden wiederholt.

DAS ist mal eine wertvolle Info (oder habe ich es vorher nur überlesen)! Dann könnte es mit dem SMA Hybriden mit einer (oder beiden) von mir oben beschriebenen Methode mglw. ja doch direkt klappen... Müßten ggf. noch die Register-Werte geprüft werden... (bin aber die nächsten 14 Tage noch im Urlaub).

Geschrieben (bearbeitet)

Hallo und

ein riesiges Danke an die Entwickler der neuen App zur Speichersteuerung. Ich habe Beta-FW installiert und das Deye-Preset für den Deye Sun 12kWp installiert. Am WARP EM 2.0 hängt noch keine Wallbox, also deaktiviert. Das PV-Überschussladen und Lastmanagement ist ebenfalls deaktiviert. Dyn. Strompreis ist angelegt und aktiviert. ECO-Modus ist aus. Kontrollierter Stromspeicher mit Preset angelegt. Gleiches gilt für "Regeln für Ladung Netzerlaubnis". Ist so angelegt, dass bei unter 90% SOC und Nettostrompreis unter 3 ct/kwh geladen werden soll. (90%SoC und 3ct/kwh funktioniert einwandfrei). Es werden so rund 0W in den Akku geladen. Sonst habe ich immer über "SA" rund 5kWh geladen. Ich denke eine höherer Wert ist von der Einstellung der Stromstärke abhängig. Nur wo ist dieser Wert hinterlegt? Habe schon eigentlich alles ausgetestet. Muss ich dies in einem Register festsetzen? In meinen Fall mit Daye Sun 12kW habe ich 108 wie beschrieben, verwendet. Kein Erfolg auch bei 50 A.

Bitte um Hilfestellung .

Danke.

Herbert

 

image.thumb.png.ff9efbcdea11722de4ecc420a1ea987f.png

 

bearbeitet von H.S.
anderes Bild
Geschrieben

Soweit ich weiß kannst du bei Deye alle Werte die wir schreiben auch im Display wiederfinden. Wir setzen nur per Modbus die Register, so dass dies analog zu dem wäre, als wenn du händisch dies in der Gui machst. Findest du dort irgendwelche Begrenzungen?

Geschrieben (bearbeitet)
Am 4.8.2025 um 11:19 schrieb batti:

Soweit ich weiß kannst du bei Deye alle Werte die wir schreiben auch im Display wiederfinden. Wir setzen nur per Modbus die Register, so dass dies analog zu dem wäre, als wenn du händisch dies in der Gui machst. Findest du dort irgendwelche Begrenzungen?

Hallo und danke.

Sind alle entsprechend eingestellt, so denke ich.  Vielleicht hast Du noch einen Tipp.

Danke.

Herbert

 

 

IMG_8503.jpeg

IMG_8504.jpeg

bearbeitet von H.S.
Geschrieben (bearbeitet)
Am 5.8.2025 um 09:56 schrieb batti:

Aktiviere bitte einmal "Grid Charge" im zweiten Screenshot.

Hallo,

habe für den  Deye Sun 12kv (Niederspannung) folgende Einstellungen gewählt:

-Speichersteuerung> Ladung von Netz erlaubt und Batterieladung nicht verboten

-keine Lastmanagement, auch nicht dyn. gleiches gilt für PV-Überschuss>Fremdsteuerung: aus.

-Speichersteuerung>kontrollierte Energiespeicher>"preset" für Deye verwendet, Ich habe mir die Register, gerade 108 und 109 angesehen, sollte eigentlich passen. Das Ding startet aber nicht die Ladung der Akkus vom Netz.

Auszug aus der Log, siehe unten!

Herbert

 

 

 

WARP ENERGY MANA.2.0.txt

bearbeitet von H.S.
Geschrieben
Am 2.8.2025 um 00:37 schrieb VinciSC71:

Moin,

inzwischen Zugriff auf Register 1040 probiert, Zweifel haben sich bestätigt. Genauso keine Wirkung wie bei Zugriff auf die 1042.

Stöbern im iobroker Forum und Abgleich mit der Kostal Doku führt für mich zu 2 Erkenntnissen:

  1. Der Plenticore muss auf externe Batteriesteuerung konfiguriert werden, damit er externe Schreibzugriffe auf die Register akzeptiert un dumsetzt. Das geht nur mit Installateur-Passwort. Anfrage an meinen Solateur bzgl. Bereitschaft und Preis ist raus, abwarten...
  2. Die externe Vorgabe von Werten muss zyklisch erfolgen, nach Ablauf eines Watchdog-Timers schaltet der Plenti wieder auf interne Steuerung bzw. interne Werte zurück. Der Watchdog kann lt. Doku vom Installateur im Bereich von 60 - 180s festgelegt werden.

Aus 2. ergibt sich die Frage an @MatzeTF, @rtrbt und @photron: Kann ein zyklisches Widerholen der Aktionen (separat aktivierbar, am besten mit einstellbarer Zykluszeit) für die Speichersteuerung umgesetzt werden? Wenn ja, in welchem groben Zeitrahmen?

Danke für Euren Support und viele Grüße

VinciSC71

Moin,

ich kann über Fortschritte und erste Erfolge berichten:

  • Der Solateur war heute da und hat mit seinem Installateurs-Passwort meinen Plenticore über das Web-Interface auf "External battery management via MODBUS protocol" umgestellt. Auslesen des Registers 1080 (siehe Post von rtrbt vom 31.7.) per GModbus liefert nun wie erwartet 0x2.
  • Mit der Aktionimage.png.bb4886d18c56cd938b949a6b3977b7c3.pngsetze ich beim Schnelladen 0,0W als Entladegrenze für die Batterie in Register 1040. Das scheint zu funktionieren, das Auto lädt damit aus dem Netz trotz voller Haus-Batterie.
  • Auch das zyklische Wiederholen der Steuerbefehle scheint zu funktionieren, ich habe das Auto testweise mehrere Minuten aus dem Netz laden lassen.
    Allerdings läßt der Plenticore als maximale Intervalllänge nur 60s zu, insofern wäre es "beruhigend" wenn man die Zykluszeit im WARP3 etwas darunter einstellen könnte. Für die Release Version wäre eine Möglichkeit zum Einstellen über die Oberfläche klasse.
    @MatzeTF: wie kann ich die oben von Dir erwähnte undokumentierte Debug-API aufrufen? 
  • Für "Verbot zum Entladen zu­rück­neh­men" habe ich zuächst eingetragen, dass Register 1040 auf 5000,0W gesetzt werden soll. Bei interner Batteriesteuerung stellt der Plenticore auf Werte um 5550,?W, allerdings werden die internen Werte dynamisch angepasst (Temepratur, SoC, ...?). Dieses "Nachregeln" findet bei der dieser Einstellung nicht statt, da die Aktion für "Verbot zum Entladen zu­rück­neh­men" auch zyklisch wiederholt wird. Damit bleibt die Entladegrenze fest auf dem von mir eingetragenen Wert stehen, unschön.
  • Hier ist das feste Widerholraster also hinderlich, deshalb habe ich die Aktion für "Verbot zum Entladen zu­rück­neh­men" wieder gelöscht. Der Plenti schaltet nun ca. 1 Minute nach Beenden des Schnelladens auf interne Regelung der Entladegrenze zurück.
  • Falls ihr da was für die Release Version in die Oberfläche einbaut, wäre neben einstellbarer Zykluszeit auch eine Auswahl "Aktion einmalig senden | Aktion zyklisch senden" klasse.

Soweit meine ersten Eindrücke und Erfahrungen mit dem Feature Batteriesteuerung mit einem Kostal Plenticore +10 (Version G1) und einem BYD HVS 10.2 Batterieblock. Werde die kommenden Tage testen und beobachten ...

Danke und Grüße

VinciSC71

Batteriespeicher-Konfiguration-Modbus-TCP-Kostal_Plenticore+10_ohne Rücksetzen_20250806.json

Geschrieben
On 8/6/2025 at 8:40 PM, VinciSC71 said:

 

  • Allerdings läßt der Plenticore als maximale Intervalllänge nur 60s zu, insofern wäre es "beruhigend" wenn man die Zykluszeit im WARP3 etwas darunter einstellen könnte. Für die Release Version wäre eine Möglichkeit zum Einstellen über die Oberfläche klasse.
    @MatzeTF: wie kann ich die oben von Dir erwähnte undokumentierte Debug-API aufrufen? 

Ich bin aktuell im Urlaub und kann das nicht testen, aber versuch mal das hier. Du kannst eigentlich nichts kaputt machen. Schlimmstenfalls funktioniert es nicht.

  • Geh auf http://warp3-abcd/battery_control/low_level_config und kopiere den Text, der da steht. Vielleicht musst du erst noch die Rohansicht aktivieren oder alternativ Strg+A und Strc+C nutzen, um den Text zu kopieren.
  • Geh auf http://warp3-abcd/recovery und nutze das Eingabefeld unter „API“. Da steht ein Beispiel drin, wie du die Eingabe formatieren musst. Du kannst die Eingabe auch erst in einem Texteditor zusammenbauen, damit du das Beispiel dabei noch sehen kannst. Die URL ist "/battery_control/low_level_config" und als Payload musst du den Text vom vorigen Schritt reinkopieren und die Zahl auf irgendwas unter 60 ändern. Achte darauf, dass die Anzahl der öffnenden und schließenden Klammern passt.
  • Drück „Call API“. Wenn im Feld darunter „200“ angezeigt wird, ist alles ok. Falls nicht „200“ drin steht, steht üblicherweise entweder dort oder im Ereignis-Log eine Fehlermeldung.

Falls du ein Linux-curl hast, kannst du die API auch mit curl -d aufrufen (ggf. mit -X PUT). Das möchtegern-curl der Windows PowerShell ist meist nicht zu gebrauchen.

Geschrieben
Am 7.8.2025 um 14:21 schrieb MatzeTF:

Ich bin aktuell im Urlaub und kann das nicht testen, aber versuch mal das hier. Du kannst eigentlich nichts kaputt machen. Schlimmstenfalls funktioniert es nicht.

  • Geh auf http://warp3-abcd/battery_control/low_level_config und kopiere den Text, der da steht. Vielleicht musst du erst noch die Rohansicht aktivieren oder alternativ Strg+A und Strc+C nutzen, um den Text zu kopieren.
  • Geh auf http://warp3-abcd/recovery und nutze das Eingabefeld unter „API“. Da steht ein Beispiel drin, wie du die Eingabe formatieren musst. Du kannst die Eingabe auch erst in einem Texteditor zusammenbauen, damit du das Beispiel dabei noch sehen kannst. Die URL ist "/battery_control/low_level_config" und als Payload musst du den Text vom vorigen Schritt reinkopieren und die Zahl auf irgendwas unter 60 ändern. Achte darauf, dass die Anzahl der öffnenden und schließenden Klammern passt.
  • Drück „Call API“. Wenn im Feld darunter „200“ angezeigt wird, ist alles ok. Falls nicht „200“ drin steht, steht üblicherweise entweder dort oder im Ereignis-Log eine Fehlermeldung.

Falls du ein Linux-curl hast, kannst du die API auch mit curl -d aufrufen (ggf. mit -X PUT). Das möchtegern-curl der Windows PowerShell ist meist nicht zu gebrauchen.

Moin,

Danke!  Habs erfolgreich auf 55 gesetzt. Ist die Einstellung persistent und überlebt einen Neustart? 

Bin jetzt ca. 3 Wochen im Urlaub, insofern geht das Testen bei mir erst im September weiter.
Vielleicht probiert es in der Zwischenzeit ja noch ein anderer Kostal Plenticore Besitzer.

Schönen Urlaub noch!

VinciSC71

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...