NEWS
IOBroker Anbindung an einen Kostal Plenticore
-
@Diginix Hast du Double 32 bit auch ausprobiert? "Double" nennt man manchmal auch "Real", würde zu R passen.
-
@StrathCole Ja, aber gerade noch mal wobei es nur Double Little und Big Endian gibt, kein Double 32.
Bei big kommt 0 % MinSoc und bei little -1.2250171709666063e+40. -
@Diginix Also laut Doku nutzt Kostal nur Big Endian. Ich muss wohl mal anfragen.
-
@StrathCole Bei Double Big springt die Länge zwingend auf 4, lt. Spec ist es aber 2.
Beim MaxSOC kommt dann auch nur 0.
Und bei "1078 Maximum discharge power limit" auch nur 0. Das sind alles R32 Werte, bei denen ich mit keinem Format im Modbus Adapter plausible Werte erhalte.
Gehören die evtl. nicht in die Holding Register? Gibt ja noch Ein- und Ausgangsregister im Adapter. -
@Diginix Ich muss auf Rückruf warten. Bisher leider noch nicht erfolgt.
-
Immer noch kein Rückruf erfolgt …
-
@Diginix Hab es rausgefunden. Es ist Float Big Endian Word Swap.
Außerdem kann man die externe Steuerung auch als Endnutzer aktivieren mit einem "Trick"
-
Also, zum Aktivieren der externen Steuerung:
- Login via Browser (z. B. Firefox)
- Navigation zu Servicemenü -> Batterieeinstellungen
- Rechtsklick auf die inaktive Auswahlbox, in der "Intern" steht
- Developer Konsole öffnen durch Klick auf "Element untersuchen" (oder vergleichbar in anderem Browser)
- Attribut "Disabled" bei der Selectbox entfernen (Doppelklick auf "Disabled" und löschen, dann Enter)
- Das Auswahlfeld ist nun benutzbar und man kann die Einstellung auch effektiv speichern
- Anschließend sind die Felder wie MinSoC, max. Ladestrom usw. im ModBus auch beschreibbar
-
@StrathCole Ich dachte, Du wolltest erstmal 1-2 Wochen mit der Installation der neuen Firmware warten? War die Neugier dann doch zu groß
Spaß beiseite. Besten Dank für die Informationen! -
@ak1 So ist es. Neugier war zu groß, welcher Datentyp das nun sein soll – und da Kostal mir nicht geantwortet hat, musste ich es selbst rausfinden.
-
Ich habe die Steuerung auch einmal testweise aktiviert. Es funktioniert tatsächlich. Ich hatte noch 40% Ladung in der Batterie und eine Entladung von 700W. Habe dann die externe Steuerung aktiviert und via Modbus das Register 1040 auf 50W gesetzt. Wenige Sekunden später sank die Batterieentladung auf 48W und der Rest wurde aus dem Netz bezogen.
Ich habe dann mit dem o.g. Trick wieder auf interne Steuerung gestellt und schon hat der Kostal den Registerwert wieder auf ~4750W gesetzt.
Wichtig ist wohl: Auch wenn man die Steuerung aktiviert und den Wert setzt, schwankt dieser etwas. Habe im Test auf 100W gesetzt und der ModBus Wert schwankte anschließend um ein paar W nach oben und unten.
-
Was ich noch nicht rausgefunden habe ist, was der Timeout-Wert bedeutet und bewirkt. Ich vermute einfach mal, dass er automatisch die interne Steuerung nutzt, wenn nicht via ModBus etwas ausgelesen oder geschrieben wird (vielleicht sogar nur geschrieben):
-
Interessant ist auch Register 1064. Das enthält nämlich jetzt die insgesamt bisher ins Netz eingespeiste Strommenge in Wh (bei mir etwa 6000000.0).
-
@StrathCole sagte in IOBroker Anbindung an einen Kostal Plenticore:
- Attribut "Disabled" bei der Selectbox entfernen (Doppelklick auf "Disabled" und löschen, dann Enter)
Boar wie billig umgesetzt. An so eine einfache Umgehung hab ich nicht mal gedacht, obwohl ich beruflich genau mit sowas zu tun hab.
Aber gut für uns.
Hab nun auch mal paar 1000er Register mit plausiblen Werten im Modbus Adapter mit Float.
Komisch, dass andere WR Werte schon immer Float sind, dann aber auch in der Spec als "Float". Also entw ist R32 das selbe oder die haben ihre Spec falsch.
Würdest du es denn schaffen über deinen Adapter die Umschaltung zw "interner Steuerung" (quasi automatisch) und temp. Steuerung mittels Modbus per http request umzusetzen?
Dann könnte man in einem Skript mit deinem Adapter umstellen und den Rest über den Modbus Adapter setzen.
Und später einfach wieder auf "intern" stellen und alle Werte werden ja demnach auf Standard resettet. -
@Diginix sagte in IOBroker Anbindung an einen Kostal Plenticore:
Boar wie billig umgesetzt. An so eine einfache Umgehung hab ich nicht mal gedacht, obwohl ich beruflich genau mit sowas zu tun hab.
Hätte ich auch nicht erwartet. Aber ich wollte es ausprobieren, da es ja nur ein "disabled" Feld war in einem Bereich, den man sonst als Enduser normal nutzen kann.
@Diginix sagte in IOBroker Anbindung an einen Kostal Plenticore:
Aber gut für uns.
Hab nun auch mal paar 1000er Register mit plausiblen Werten im Modbus Adapter mit Float.
Komisch, dass andere WR Werte schon immer Float sind, dann aber auch in der Spec als "Float". Also entw ist R32 das selbe oder die haben ihre Spec falsch.Ich vermute mal, dass sie "Float" nicht mehr nutzen wollen, sondern die Bezeichnungen vereinheitlichen, was dann bei Float "Real 32 Bit" (R32) sein müsste. Sie haben aber die alten Spec nicht bearbeitet und auch die "Legende" am Anfang nicht.
@Diginix sagte in IOBroker Anbindung an einen Kostal Plenticore:
Würdest du es denn schaffen über deinen Adapter die Umschaltung zw "interner Steuerung" (quasi automatisch) und temp. Steuerung mittels Modbus per http request umzusetzen?
Dann könnte man in einem Skript mit deinem Adapter umstellen und den Rest über den Modbus Adapter setzen.
Und später einfach wieder auf "intern" stellen und alle Werte werden ja demnach auf Standard resettet.Das sollte "problemlos" gehen, weil ich ja nicht das Formular absende, sondern die Werte direkt an die interne Api. Muss nur schauen, wie der Wert heißt, dann müsste das möglich sein.
-
@StrathCole sagte in IOBroker Anbindung an einen Kostal Plenticore:
Das sollte "problemlos" gehen, weil ich ja nicht das Formular absende, sondern die Werte direkt an die interne Api. Muss nur schauen, wie der Wert heißt, dann müsste das möglich sein.
Dann hätte sich das Firmware Update ja tatsächlich gelohnt, weil wir nahezu vollen Einfluss auf Ladung/Entladung nehmen können. Wenn man den max SOC auf den aktuellen SOC setz, dürfte er ja auch nicht mehr weiter laden oder?
-
@Diginix sagte in IOBroker Anbindung an einen Kostal Plenticore:
@StrathCole sagte in IOBroker Anbindung an einen Kostal Plenticore:
Das sollte "problemlos" gehen, weil ich ja nicht das Formular absende, sondern die Werte direkt an die interne Api. Muss nur schauen, wie der Wert heißt, dann müsste das möglich sein.
Dann hätte sich das Firmware Update ja tatsächlich gelohnt, weil wir nahezu vollen Einfluss auf Ladung/Entladung nehmen können. Wenn man den max SOC auf den aktuellen SOC setz, dürfte er ja auch nicht mehr weiter laden oder?
Davon gehe ich aus.
Bezüglich der Steuerung (soeben hinzugefügt in git Version r226):
-
Da ich keine Zeit hätte, jetzt im Adapter noch Modbus einzubauen, wäre meine Idee, dass ich neue Datenpunkte einfüge wie
devices.local.battery.suggested_charge_max
oder so, in den ich dann anhand der Prognosedaten Werte schreibe (z. B. 1000W oder 0W). Dann kann man auf den Datenpunkt mit einem Skript lauschen und ggf. Modbus über den anderen Adapter ansteuern. Entweder via MaxSoC oder eben mit dem max(dis)charge. -
@StrathCole sagte in IOBroker Anbindung an einen Kostal Plenticore:
Da ich keine Zeit hätte, jetzt im Adapter noch Modbus einzubauen, wäre meine Idee, dass ich neue Datenpunkte einfüge wie
devices.local.battery.suggested_charge_max
oder so, in den ich dann anhand der Prognosedaten Werte schreibe (z. B. 1000W oder 0W). Dann kann man auf den Datenpunkt mit einem Skript lauschen und ggf. Modbus über den anderen Adapter ansteuern. Entweder via MaxSoC oder eben mit dem max(dis)charge.Gerade gesehen, dass ich das gar nicht brauche. Jeder kennt ja die Kapazität seiner Batterie und es gibt bereits den Datenpunkt
forecast.day1.power.remaining
. Damit sollte man die Steuerung eigentlich gut erledigen können oder zumindest das Abschalten der Ladung erzwingen. Entweder über Register1038
(max. Ladepower) oder via Register1044
(Max SoC). -
Übrigens ein interessanter Fact:
Ich habe eine Batteriekapazität von etwa 8.960W. Laut Datenblatt von BYD heißt es:
Max. Ausgangsleistung: 8,96 kW
Peak Ausgangsleistung, 5 min: 17,92 kWMeine Beobachtung war allerdings, dass Kostal den Wert auf 50% der Kapazität also 4,9kW gedrosselt hat. Auch die Inhalte von Register
1040
sprechen dafür (bei mir 4.750W).Aber: Im Modbus Register
1076
steht: 7.896W (Wert für max. Eingangsleistung) und in Register1078
steht 18.244W (Wert für max. Ausgangsleistung) – das entspricht etwa dem Datenblatt von BYD. Für mich bedeutet das, dass ich bisher bei Kostal unnötigerweise im Sommer bei Verbrauchspeaks aus dem Netz bezogen habe (war auch meine Beobachtung), da unsere Heizung ab und zu mal 10kW zieht, wenn Warmwasser und Heizung gleichzeitig laufen.Mir erschließt sich nicht ganz, warum die Entladung auf 50% der möglichen Dauerleistung begrenzt wird, denn es handelt sich ja nur um die maximale Leistung, die im Regelbetrieb sowieso selten erreicht wird.