Kostal neue Firmware aus 11/2020

Welche Geräte sollen noch implementiert werden?
Was sollte man ändern / verbessern / ergänzen an der Solaranzeige? Hier kann Jeder seine Ideen einbringen.
Außerdem steht hier, woran gerade gerbeitet wird.

Moderator: Ulrich

Forumsregeln
Wenn neue Geräte implementiert werden sollen ist die Protokollbeschreibung der Schnittstelle vom Hersteller Voraussetzung.

Bitte nur konkrete Ideen hier eintragen und in jedem Beitrag bitte nur eine Erweiterung / Änderung, damit das Ganze noch überschaubar bleibt. Ein ganzes Sammelsorium von Ideen in einem Thread ist zu unübersichtlich. Nicht alles kann und wird auch verwirklicht werden.
tueftler17
Beiträge: 5
Registriert: Mo 27. Jul 2020, 19:48

Kostal neue Firmware aus 11/2020

Beitrag von tueftler17 »

Hallo!

Hat jemand von Euch schon eine Anpassung an die neue Firmware durchgeführt?

Im Sommer würde ich gerne eine intelligentere Batteriesteuerung als jetzt haben und mit den neuen auch schreibbaren Registern wäre einiges möglich. Ich würde mich freuen wenn sich jemand schon damit beschäftigt hat und sein Wissen teilen würde.

Viele Grüße
Tueftler17

Bogeyof
Beiträge: 629
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 8 Mal
Danksagung erhalten: 62 Mal

Re: Kostal neue Firmware aus 11/2020

Beitrag von Bogeyof »

Ich habe schon ein paar Dinge getestet. Hierzu ist es allerdings nötig zuerst mit dem Installateurs-Zugang die externe Steuerung freizuschalten. Nur dann ist ein Schreiben möglich. Ich habe mir ein paar Python-Skripte gemacht, welche ich z.B. auch mit einem Link aus dem Dashboard aufrufen kann, um so z.B. MAXSOC und MINSOC zu setzen. Auch kann ich die neue "zeitgesteuerte Batterienutzung" per Python-Skript ein-/ausschalten (dort kann man ja wieder sehr komfortabel hinterlegen, wie die Batterie z.B. Tag / Nacht genutzt werden soll). Mit diesem 3 Möglichkeiten, gekoppelt mit aktuellem Werten von SOC, Zeit und Prognosedaten kann man eigentlich schon sehr viel machen. Wie die Nutzungsszenarien dann aussehen sollen muss glaube ich jeder für sich selbst vorgeben.
Die Pythonskripte nutzen die REST-Api und nicht die ebenfalls neu ModBus-Schnittstelle. Effekt ist derselbe...

Yoda68
Beiträge: 65
Registriert: Mi 3. Mär 2021, 16:53
Wohnort: Gera
Hat sich bedankt: 4 Mal
Danksagung erhalten: 2 Mal

Re: Kostal neue Firmware aus 11/2020

Beitrag von Yoda68 »

Hallo Bogeyof,

Nachdem die Prognosen laufen habe ich mich hier mal im Forum auf die Suche gemacht und bin hier fündig geworden. Im Prinzip habe ich die gleiche Anlage wie du.
Ost West Ausrichtung Plenti 7 mit Byd-HVS 7.7, Abregelung wird nie erreicht, freigeschalteter externer Steuerung.
Automatisieren wollte ich - Wetter-Prognose abhängig:

Umschaltung „intelligente Batteriesteuerung“ an/aus bzw.
Umschalten auf voreingestellter „zeitgesteuert Batterienutzung“ an/aus,
Einstellen des MinSoc und des MaxSoc eventuell setzen auf Dyn.Soc ,
Setzten bzw. Begrenzen der maximalen Batterie Ladeleistung,

Ich glaube du hattest sogar die min und max Cellspannungen der Byd mit eingebunden und die Ladung auf 100% ab 95% verringert / unterbrochen.(Pv-Forum)

Ich bin ja auch der Meinung keine neue Steuerung erfinden zu müssen, aber ein- um- ausschalten und ändern der Soc wäre toll.
Du hast ja da schon eine Menge davon - schön umgesetzt - sicherlich in riesiger Fleißarbeit. Meine Kenntnisse auf dem Gebiet sind da eher Rudimentär.

Ich vermute mal das du zum schalten Python Skripts nimmst und eine eigene Art Steuerung.php geschrieben hast welche die Skripts ansteuert.

Ich Frage jetzt einfach mal ganz unverfroren, ob du das mir zu Verfügung stellen kannst. Ich finde hier nur einzelne Fragmente im Forum.
Ich weiß das machst du nur ungern, habe ich bereits gelesen, aber wenn du eine Ausnahme machen könntest, würde du mir riesig damit helfen.
Wenn du bitte so freundlich wärest, gern auch per PN oder Mail.

Sonnige Grüße Yoda

Bogeyof
Beiträge: 629
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 8 Mal
Danksagung erhalten: 62 Mal

Re: Kostal neue Firmware aus 11/2020

Beitrag von Bogeyof »

@Yoda68
Alles von Dir beschriebene habe ich schon umgesetzt. Soweit die "gute" Nachricht. Die schlechte Nachricht, ich habe das an unterschiedlichsten Stellen in den Original Solaranzeige Skripts eingebaut, ich nutze dafür Python-Skripte aus dem Photovoltaikforum (welche zusätzliche Libs brauchen, die nachinstalliert werden müssen), ein Perl-Skript für die BYD-Abfrage, setze eine Route zum BYD voraus, so dass dieser vom PC via LAN erreicht werden kann, habe dazu viele weitere Werte in die Datenbank aufgenommen (teilweise in die Standardmeasurements, teilweise in eigene neue Measurements) und vieles mehr. Die ganze "Steuerung" setzt vieles als vorhanden voraus, was in der Original Solaranzeige noch nicht enthalten ist.
Abgesehen davon, dass in meiner Implementierung der Update der Solaranzeige sehr schwierig wird (eigener Abgleich der betroffenen Skripte), habe ich es (leider) nicht als zentrale Zusatzsteuerung aufgebaut sondern an vielen Stellen verteilt eingegriffen. Das jetzt Aufzubereiten und zur Verfügung zu stellen erscheint sehr schwierig.
Was ich machen kann ist die wesentlichen Skripte zu sammeln, evtl. eine neue byd-steuerung.php zu kreieren und einige der Funktionen darin abbilden. Es wird sich vermutlich nicht alles darin wiederfinden, aber es wäre ein Grundstock zum Weiterentwickeln.
Wie viel Aufwand das bedeutet und wie schnell ich es zur Verfügung stellen kann, muss ich sehen. Es ist halt nur etwas speziell für die Kombination "Kostal Plenticore + BYD Speicher" und damit nur für wenige interessant...

Yoda68
Beiträge: 65
Registriert: Mi 3. Mär 2021, 16:53
Wohnort: Gera
Hat sich bedankt: 4 Mal
Danksagung erhalten: 2 Mal

Re: Kostal neue Firmware aus 11/2020

Beitrag von Yoda68 »

@Bogeyof
okay ich verstehe, es ist halt in der Tat nur für die Nutzer der "Kostal Plenticore + BYD Speicher" interessant.
Ich lass jetzt mal meinen Gedanken freien Lauf so wie ich es verstehe:

Die Python-Skripte setzen doch die Werte und jedes einzelne für sich kann doch separat gestartet werden.
Damit sollte sich doch: Umschaltung „intelligente Batteriesteuerung“ an/aus bzw.
Umschalten auf voreingestellter „zeitgesteuert Batterienutzung“ an/aus,
Einstellen des MinSoc und des MaxSoc eventuell setzen auf Dyn.Soc ,
"manuell" realisieren lassen.

Das ist das was ich jeden Tag jetzt schon per Hand mache :lol:

Eine "einfache Steuerung.php" basierend auf den Daten die das Standardmeasurements (mit Prognose) liefert, würde ja schon reichen.
z.B. wenn der zu erwartende Prognose Ertrag >< z.B. 16 kW, dann starte Skript "sowieso" usw..
Diese "einfache Steuerung.php" in der crontab laufen lassen.
Somit sollten Update der Solaranzeige auch weiter möglich sein.
Ich finde das die Kombination "Kostal Plenticore + BYD Speicher" ganz gut funktioniert und in die hauseigene Regelung wollte ich nicht unbedingt eingreifen.

Deswegen ist das "Perl-Skript für die BYD-Abfrage" zur Ladungsregelung der Batterie zu speziell und wäre somit zwar Toll, aber vielleicht ein Thema für einem späteren Zeitpunkt, falls nötig.

Dein Angebot "die wesentlichen Skripte zu sammeln", evtl. eine neue SIMPLE-Kostal-Steuerung.php zu kreieren wäre MEGA. :D Vielen Dank !!!!
Den ein oder anderen Kostal Besitzer hier im Forum würde es bestimmt auch nutzen.

Bogeyof
Beiträge: 629
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 8 Mal
Danksagung erhalten: 62 Mal

Re: Kostal neue Firmware aus 11/2020

Beitrag von Bogeyof »

Fangen wir mal mit den Basics an. Im Anhang eine Sammlung von Skripten. Diese entpacken und auf den PI übertragen.
Ich starte sie im Verzeichnis /solaranzeige, geht aber genauso gut z.B. in /var/www/html. Sicherheitshalber ausführbar machen mit "chmod +x meinscript.x". Je nach Verzeichnis musst Du dann später im BYD-Skript die Aufrufe evtl. auf Deinen Pfad anpassen. Ich gehe erst mal vom Pfad /solaranzeige aus.
Ich denke es ist Python3 vorinstalliert (im Standard-Image von Solaranzeige enthalten), bei PERL bin ich mir nicht mehr ganz sicher, falls nicht nachinstallieren mit Anleitung, z.B. https://anwass.de/perl-auf-dem-raspberr ... tallieren/

Für Python3 braucht es auf jeden Fall noch mindestens 1 Library, und zwar für die Verschlüsselung der Anmeldung am Kostal. Dazu hier lesen und installieren: https://pypi.org/project/pycryptodome/
Falls die Library unter Python3 nicht gefunden wird, anstatt "pip install ..." pip3 verwenden.
Ehrlich gesagt weiß ich nicht mehr, ob noch weitere Libs nachinstalliert werden müssen. Fehlermeldungen beim Aufruf werden es dann zeigen.

In jedem Skript sind im oberen Bereich die IP-Adresse (entweder des Wechselrichters bei Python3, oder die BYD-IP im LAN) und bei Python auch das Passwort für den Benutzer "Anlagenbetreiber" des Kostal Plenticore einzutragen.

Im Zip sind unter anderem die folgenden Skripte:

readBYD.pl Perl Skript für BYD, Aufruf: "perl readBYD.pl", Ausgabe diverse Parameter des BYD

Kostal_BatMaxChargePower.py Aufruf: "python3 Kostal_BatMaxChargePower.py -s 2000", setzt die Maximale Ladestärke in Watt
Kostal_BatMaxDischargePower.py Aufruf: "python3 Kostal_BatMaxDischargePower.py -s 2000", setzt die Maximale Entladestärke in Watt
Kostal_BatI.py Aufruf: "python3 Kostal_BatI.py", schaltet TimeControl aus und intelligente Batteriesteuerung ein
Kostal_BatN.py Aufruf: "python3 Kostal_BatN.py", schaltet intelligente Batteriesteuerung aus
Kostal_BatMaxSOC.py Aufruf: "python3 Kostal_BatMaxSOC.py -s 90", setzt MaxSOC auf x %
Kostal_BatMinSOC.py Aufruf: "python3 Kostal_BatMinSOC.py -s 10", setzt MinSOC auf x %
Kostal_BatTC0.py Aufruf: "python3 Kostal_BatTC0.py", setzt TimeControl auf aus
Kostal_BatTC1.py Aufruf: "python3 Kostal_BatTC1.py", setzt TimeControl auf ein
Kostal_Bat50.py Aufruf: "python3 Kostal_Bat50.py", setzt Wert "Batterieentladung ab Netzbezug"
Kostal_Bat15000.py Aufruf: "python3 Kostal_Bat15000.py", setzt Wert "Batterieentladung ab Netzbezug"

Kostal_SM0.py Aufruf: "python3 Kostal_SM0.py", setzt Schattenmanagement auf aus
Kostal_SM1.py Aufruf: "python3 Kostal_SM1.py", setzt Schattenmanagement für String 1 auf an
Kostal_SM2.py Aufruf: "python3 Kostal_SM2.py", setzt Schattenmanagement für String 2 auf an
Kostal_SM3.py Aufruf: "python3 Kostal_SM3.py", setzt Schattenmanagement für beide Strings an

Kostal_BatSTQ.py Aufruf: "python3 Kostal_BatSTQ.py", Abfrage Status Batteriezustand, Normal, Ruhe 1, Ruhe 2 usw.
Kostal_BatTCQ.py Aufruf: "python3 Kostal_BatTCQ.py", Abfrage Status TimeControl
Kostal_BatNEQ.py Aufruf: "python3 Kostal_BatNEQ.py", Abfrage Wert "Batterieentladung ab Netzbezug"
Kostal_BatSMQ.py Aufruf: "python3 Kostal_BatSMQ.py", Abfrage Status Schattenmanagement

Wenn Du das mit Aufrufen per Hand zum Laufen gebracht hast, dann machen wir mit dem Skript für das Schreiben der neuen Werte in die Datenbank und erste rudimentäre Steuerungen weiter, OK?
Dateianhänge
Kostal_BatTC1.py.txt
(7.72 KiB) 77-mal heruntergeladen
Kostal_BatTC0.py.txt
(8.07 KiB) 72-mal heruntergeladen
Kostal_BatSTQ.py.txt
(6.21 KiB) 78-mal heruntergeladen
Kostal_BatN.py.txt
(7.8 KiB) 80-mal heruntergeladen
Kostal_BatMinSOC.py.txt
(7.77 KiB) 74-mal heruntergeladen
Kostal_BatMaxSOC.py.txt
(7.79 KiB) 80-mal heruntergeladen
Kostal_BatMaxDischargePower.py.txt
(7.8 KiB) 74-mal heruntergeladen
Kostal_BatMaxChargePower.py.txt
(7.79 KiB) 72-mal heruntergeladen
Kostal_Bat15000.py.txt
(7.58 KiB) 79-mal heruntergeladen
Kostal_Bat50.py.txt
(7.58 KiB) 90-mal heruntergeladen

Bogeyof
Beiträge: 629
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 8 Mal
Danksagung erhalten: 62 Mal

Re: Kostal neue Firmware aus 11/2020

Beitrag von Bogeyof »

Die restlichen Skripte...
Dateianhänge
readBYD.pl.txt
(4.29 KiB) 86-mal heruntergeladen
Kostal_SMQ.py.txt
(7.67 KiB) 81-mal heruntergeladen
Kostal_SM3.py.txt
(7.58 KiB) 75-mal heruntergeladen
Kostal_SM2.py.txt
(7.58 KiB) 79-mal heruntergeladen
Kostal_SM1.py.txt
(7.58 KiB) 76-mal heruntergeladen
Kostal_SM0.py.txt
(7.58 KiB) 67-mal heruntergeladen
Kostal_NEQ.py.txt
(7.67 KiB) 70-mal heruntergeladen

Yoda68
Beiträge: 65
Registriert: Mi 3. Mär 2021, 16:53
Wohnort: Gera
Hat sich bedankt: 4 Mal
Danksagung erhalten: 2 Mal

Re: Kostal neue Firmware aus 11/2020

Beitrag von Yoda68 »

ups so schnell hatte ich das nicht erwartet.
Danke Dir schonmal.
Ich kämpf mich dann mal durch. :D

Bogeyof
Beiträge: 629
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 8 Mal
Danksagung erhalten: 62 Mal

Re: Kostal neue Firmware aus 11/2020

Beitrag von Bogeyof »

Na dann machen wir mal "schnell" weiter 8-)

Die angehängte byd_steuerung.php sollte rudimentär alle neuen batterieabhängigen Daten in die Datenbank schreiben, teilweise werden sie aus dem BYD gelesen (Perl Skript), teilweise direkt aus dem Wechselrichter (Register des Kostal lesen). Dazu müssen das Perl- und die Python-Skripte natürlich aufrufbar, also verwendbar sein.
Danach werden diese Daten ausgewertet und einige Dinge gesteuert, die sich natürlich anpassen lassen:
- Die Ladung wird bei einem Höchststand von 100% SOC oder CellVoltageHigh > 3600mV beendet weil der MaxSOC dann auf 90% gesetzt wird. Dieser Wert wird solange wiederholt, bis der SOC wieder unter 80% gesunken ist, danach springt MaxSOC wieder auf 100%
- Die Ladeleistung wird bei 93% und 97% auf zuerst 3000 W, dann 2000 W reduziert
- Die Entladung wird bei einer CellVoltageLow von < 3000 mV gestoppt, hierzu wird der Parameter "Batterieentladung ab Netzbezug" auf 15000 W gesetzt
- Die intelligente Steuerung wird abhängig von Prognose, Sonnenstunden und SOC ein- oder ausgeschaltet
- Die Batterienutzung wird abhängig von SOC und Prognose (und Jahreszeit Winter oder nicht) ein- oder ausgeschaltet.

Ich wünsche viel Spaß bei der Einarbeitung, da werden einige Fragezeichen auf Dich zukommen. Ich habe es bei mir getestet (in eine Testdatenbank), schien soweit zu funktionieren. Es wäre allerdings ein Wunder, ein Skript mit 500 Zeilen von Anfang an fehlerfrei zu machen, das man nicht einmal selbst benutzt und damit austesten kann.

Voraussetzung ist auch, dass die externe Steuerung der Batterie im Kostal-Webinterface aktiviert ist, sonst reagiert vieles an der Steuerung nicht (Auslesen geht trotzdem). Voraussetzung für das Perl-Skript ist, dass der BYD vom PC/Raspi aus im normalen Netz erreichbar ist, also z.B. das Be Connect Plus PC Tool funktioniert...

Die byd_steuerung.php sollte nach dem Testen in die Crontab als minütlicher Aufruf eingefügt werden. Ich habe einen Sleep 20 eingebaut, damit das eigentliche Auslesen des WR durch Solaranzeige normalerweise schon beendet ist.

Code: Alles auswählen

*     *  *  *  *    /var/www/html/byd_steuerung.php             >/dev/null
Ebenfalls in die Crontab könnte man direkt die Skripte für das Schattenmanagement einfügen. Bei mir ist z.B. gegen 10:00 bis 10:30 ein Schatten des Kamins auf der Westseite, ab 14:00 dann der Schatten dieses Kamins auf der Ostseite. Hier kann dann zeitgesteuert gezielt das Schattenmanagement für eine gewisse Zeit ein und wieder ausschalten. Eintrag sehe z.B. so aus:

Code: Alles auswählen

#00  10   *  *  *    python3 /solaranzeige/Kostal_SM2.py         >/dev/null
#30  10   *  *  *    python3 /solaranzeige/Kostal_SM0.py         >/dev/null
Dateianhänge
byd_steuerung.php
(19.99 KiB) 72-mal heruntergeladen

Yoda68
Beiträge: 65
Registriert: Mi 3. Mär 2021, 16:53
Wohnort: Gera
Hat sich bedankt: 4 Mal
Danksagung erhalten: 2 Mal

Re: Kostal neue Firmware aus 11/2020

Beitrag von Yoda68 »

Zu meiner ersten Arbeitsaufgabe: :lol:

Soweit scheint es mit den *.py Skrips zu laufen.
Nicht testen konnte ich die BatMax ChargePower und die BatMaxDischargePower weil mir die default Werte fehlten.
Da alles andere geht denke ich mal das die beiden auch gehen.

Es fehlen in deinem Anhang die Skripte Kostal_BatI.py und Kostal_BatTCQ.py - die sicherlich auch gehen werden.

Probleme habe ich mit dem Perl Skript. Diese Version ist installiert

Code: Alles auswählen

root@solaranzeige:~# perl -v
This is perl 5, version 28, subversion 1 (v5.28.1) built for arm-linux-gnueabihf-thread-multi-64int
(with 61 registered patches, see perl -V for more detail)
nach dem Starten kommt folgender Fehler:

Code: Alles auswählen

root@solaranzeige:/solaranzeige# perl readBYD.pl
Can't locate Digest/CRC.pm in @INC (you may need to install the Digest::CRC module) (@INC contains: /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.28.1 /usr/local/share/perl/5.28.1 /usr/lib/arm-linux-gnueabihf/perl5/5.28 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.28 /usr/share/perl/5.28 /usr/local/lib/site_perl /usr/lib/arm-linux-gnueabihf/perl-base) at readBYD.pl line 15.
BEGIN failed--compilation aborted at readBYD.pl line 15.
Ich mach dann mal weiter mit Teil Zwei :lol: muß aber vorher zur Spätschicht melde mich morgen nochmal.
Mal sehen ob ich es hinbekomme.

Antworten