Programmatischer Lesender - UND Schreibender Zugriff auf Kostal Plenticore - z.B. MinSoC Parameter verändern um Batterieladung zu optimieren

  • ... Das wird ja fast inflationär - und das Abends um 10:40 :)

    Mal schauen vielleicht nehm ich Euch beim Wort :saint:

  • Der Dachbeleger lag fast richtig, hier die offizielle Aussage:
    PLENTICORE-plus_BA_DE_201903.pdf, Kapitel 7.1 Die Logdaten

    Iso R Isolationswiderstand in kOhm bei Aufschalten auf AC-Netz

    Weitergehende Vermutungen:

    - LimitEVUAbs käme bei 9,8kWp mit 70% hin - Du gibst allerdings 9,4 an - ist aber vielleicht auch nur Zufall

    - ResidualCDc_I könnte auseinandergezogen Residual Current Dc als Strom (I) sein und könnte demzufolge mit Differenzströmen oder Fehlerströmen zu tun haben - das müsste jetzt aber jemand kommentieren, der vom Fach ist.


    Milch, Zucker, Sahne zum Kaffee und Kuchen - Du musst nur Bescheid geben. Diese nicht sehr vertrauenswürdige "intelligente Batteriesteuerung" nervt - ein schreibbarer Parameter "maximaler Ladestrom" und jeder könnte seine für ihn optimale Ladesteuerung programmieren...

    Danke für Deine Arbeit, kruki. :thumbup:

    PV seit 9/2019: 4,08kWp, 12*LG 340, Kostal Plenticore Plus 4.2 mit EM300, BYD HV5.1

  • Hi AndreasGM vielen Dank für die weiteren Erklärungen. Ich hab da jetzt mal weitergemacht und versucht das Ganze in ne Form zu bringen, damit man auch ein bischen mehr anfangen kann....

    Anbei das aktualisierte Skript.

    Es bietet folgende Möglichkeiten:

    1) Lesender Zugriff auf DC, AC, Powermeter, Batterie, Events und Statistikdaten

    2) Auslesen der Events im Fehlerfall

    3) Schreiben einiger Batteriewerte

    4) Exemplarische Ausgabe - und Summenbildung analog zu dem was die Weboberfläche des Kostal WR bietet


    Mit diesem Skript ist eigentlich das Skript über die Modbus Abfrage obsolete, da der Zugriff über die Rest API schneller geht (bei mir Faktor 2) - und auch mehr Möglichkeiten bietet: Zugriff auf Events, Statistikdaten... - sowie der schreibende Zugriff


    Hab´s bei mir auf nem Windows - bzw Raspberry getestet

    windows: python webapi_kostal5.txt

    raspberry: python3 webapi_kostal5.txt


    Unten steht was ich z.B. bei mir als Output bekomme

    Was mich interessieren würde:

    1) Ich hab nur den Plenticore - bieten andere Modelle auch Zugriff auf die Rest API ?

    2) Da sind viele selbsterklärenden Werte gelistet - aber auch einige, die Raum für Interpretation bieten. Würde mir helfen hier Licht ins Dunkel zu bringen.

    Was ich nicht verstehe sind Werte wie "Q" und "S" z.B. aus /processdata/devices:local - was ich als MyLiveData bezeichnet habe... S= Scheinleistung ?

    Weitere erklärungsbedürftige Werte :

    LimitEvuAbs (hier hab ich gesehen, dass dieser Wert dynamisch ist - und bei meiner 9.4KwP Anlage auch mal fast auf 11000 gehen kann - aber genauso unter 6000 fällt) - siehe auch weiter oben.


    Weiterer Feedback gerne willkommen...




    ----------------------------------------------------------

    start log on sequence

    Authentication successful

    ----------------------------------------------------------

    Actively changing Battery Charge Parameters :

    dict_items([('Battery:BackupMode:Enable', ''), ('Battery:DynamicSoc:Enable', ''), ('Battery:MinHomeComsumption', ''), ('Battery:MinSoc', ''), ('Battery:SmartBatteryControl:Enable', ''), ('Battery:Strategy', '')])

    Successfully changed Parameter : Battery:DynamicSoc:Enable to value 0

    Successfully changed Parameter : Battery:MinHomeComsumption to value 50

    Successfully changed Parameter : Battery:MinSoc to value 5

    dict_items([('Battery:BackupMode:Enable', ''), ('Battery:DynamicSoc:Enable', 0), ('Battery:MinHomeComsumption', 50), ('Battery:MinSoc', 5), ('Battery:SmartBatteryControl:Enable', ''), ('Battery:Strategy', '')])

    ----------------------------------------------------------

    Start accessing the event log information

    I am reading events...

    Everything is all right - no active error events from Inverter

    -----------------------------------------

    Here are all the Values from MyLiveData :

    { 'Dc_P': 868.7901611328,

    'DigitalIn': 0.0,

    'EM_State': 0.0,

    'Grid_L1_I': 1.1430000067,

    'Grid_L1_P': -226.5,

    'Grid_L2_I': 0.9960000515,

    'Grid_L2_P': -117.2000045776,

    'Grid_L3_I': 1.060000062,

    'Grid_L3_P': -236.3000030518,

    'Grid_P': -580.0,

    'Grid_Q': -284.3000183105,

    'Grid_S': -644.4000244141,

    'HomeBat_P': 0.0,

    'HomeGrid_P': 0.0,

    'HomeOwn_P': 249.0,

    'HomePv_P': 249.0,

    'Home_P': 255.0,

    'Inverter:State': 6.0,

    'Iso_R': 7065000.0,

    'LimitEvuAbs': 6815.28125,

    'LimitEvuRel': 100.0,

    'WorkTime': 36128083.0}

    -----------------------------------------

    Here are all the Values from MyACLiveData :

    { 'CosPhi': 1.0,

    'Frequency': 50.0274658203,

    'InvIn_P': 0.0,

    'InvOut_P': 827.0,

    'L1_I': 1.2644449472,

    'L1_P': 275.0029602051,

    'L1_U': 227.3244018555,

    'L2_I': 1.2583414316,

    'L2_P': 271.8367919922,

    'L2_U': 229.7562408447,

    'L3_I': 1.3254801035,

    'L3_P': 280.2727966309,

    'L3_U': 226.584274292,

    'P': 827.0,

    'Q': 277.1085205078,

    'ResidualCDc_I': 0.0019176587,

    'S': 872.2982788086}

    -----------------------------------------

    Here are all the Values from MyBatteryLiveData :

    { 'BatManufacturer': 16985.0,

    'BatModel': 0.0,

    'BatSerialNo': XXXXXXXX.0,

    'BatVersionFW': 6338.0,

    'Cycles': 321.0,

    'FullChargeCap_E': 25.0,

    'I': 0.0019122536,

    'P': 0.0,

    'SoC': 13.0,

    'U': 256.2938232422,

    'WorkCapacity': 6455.0247192383}

    -----------------------------------------

    Here are all the Values from MyPowerMeterLiveData :

    { 'CosPhi': -0.8920000196,

    'Frequency': 50.0030021667,

    'L1_I': 1.1430000067,

    'L1_P': -226.5,

    'L1_Q': -108.5,

    'L1_S': -250.3000030518,

    'L1_U': 227.7590179443,

    'L2_I': 0.9960000515,

    'L2_P': -117.2000045776,

    'L2_Q': -175.4000091553,

    'L2_S': -208.3000030518,

    'L2_U': 228.4570159912,

    'L3_I': 1.060000062,

    'L3_P': -236.3000030518,

    'L3_Q': 3.9000000954,

    'L3_S': -236.3000030518,

    'L3_U': 228.8360137939,

    'P': -573.5,

    'Q': -290.8999938965,

    'S': -642.299987793}

    -----------------------------------------

    Here are all the Values from MyStatisticsLiveData :

    { 'Statistic:Autarky:Day': 98.5900993145,

    'Statistic:Autarky:Month': 87.3283303249,

    'Statistic:Autarky:Total': 45.398342935,

    'Statistic:Autarky:Year': 49.6469438592,

    'Statistic:CO2Saving:Day': 1728.6633459018,

    'Statistic:CO2Saving:Month': 556837.8334878989,

    'Statistic:CO2Saving:Total': 11180526.022971688,

    'Statistic:CO2Saving:Year': 3242679.6390136275,

    'Statistic:EnergyHome:Day': 2013.0605300366,

    'Statistic:EnergyHome:Month': 288639.4948500217,

    'Statistic:EnergyHome:Total': 10573777.767653473,

    'Statistic:EnergyHome:Year': 3323006.4277239316,

    'Statistic:EnergyHomeBat:Day': 1567.95175759,

    'Statistic:EnergyHomeBat:Month': 89381.4719432973,

    'Statistic:EnergyHomeBat:Total': 1929896.294039048,

    'Statistic:EnergyHomeBat:Year': 611346.3817720197,

    'Statistic:EnergyHomeGrid:Day': 28.0876111065,

    'Statistic:EnergyHomeGrid:Month': 36569.5553428744,

    'Statistic:EnergyHomeGrid:Total': 5804032.454645069,

    'Statistic:EnergyHomeGrid:Year': 1675697.2022902004,

    'Statistic:EnergyHomePv:Day': 416.7017644672,

    'Statistic:EnergyHomePv:Month': 162681.3778924817,

    'Statistic:EnergyHomePv:Total': 2870408.7858016994,

    'Statistic:EnergyHomePv:Year': 1038426.3091732801,

    'Statistic:OwnConsumptionRate:Day': 80.3669995301,

    'Statistic:OwnConsumptionRate:Month': 31.6869338695,

    'Statistic:OwnConsumptionRate:Total': 30.054256102,

    'Statistic:OwnConsumptionRate:Year': 35.6137492287,

    'Statistic:Yield:Day': 2469.519065574,

    'Statistic:Yield:Month': 795482.6192684271,

    'Statistic:Yield:Total': 15972180.032816699,

    'Statistic:Yield:Year': 4632399.4843051825}

    -----------------------------------------

    Here are all the Values from MyString1LiveData and MyString2LiveData :

    {'I': 0.9462096095, 'P': 441.099029541, 'U': 465.736907959}

    {'I': 0.8767553568, 'P': 427.9211425781, 'U': 486.5438232422}

    ----------------------------------------------------------

    DC Power Generation (from String Values) : 869.0

    A single value from MyLiveData - Home Battery Generation : 0.0

    A single value from MyLiveData - Home Power Consumption from Battery : 0.0

    A single value from MyLiveData - Home Grid consumption : 0.0

    A single value from MyLiveData - PV Power Consumption : 249.0

    A single value from MyPowerMeterLiveData - PV Power to /from Grid : -574 0

    A single value from MyBatteryLiveData -Cycle Counts : 321.0

    A single value from MyBatteryLiveData -'WorkCapacity' : 6455.0

    A single value from MyStatisticsLiveData - Yearly Yield : 4632399.0

    ----------------------------------------------------------

    My elapsed time was 0.9 seconds - I ran the loop for 1 time(s)

  • Ich hab mir mal dein Skript runtergeladen und hab ein kleines Problem

    es stoppt immer mit folgendem Fehler


    Traceback (most recent call last):

    File "D:\Programmierung Python\webapi_kostal5.py", line 65, in <module>

    from Crypto.Cipher import AES #windows

    ModuleNotFoundError: No module named 'Crypto'


    Das Modul konnte ich im Windows auf c:/ finden aber ich weis nicht wo das Skript danach sucht um das Modul in den Passenden Ordner zu kopieren

  • Hmmm

    ich hab bei mir auf meiner Windows Büchse

    pycryptodome==3.9.4

    installiert.

    Wenn Du nen

    pip freeze

    machst - kommt da was von pycryptodome - bzw hast Du pycryptodome installiert ?

    BTW - ich hab python 3.6.2 auf dem Rechner

  • Ich hab vom Programmieren nicht wirklich Ahnung hab gerade erst angefangen

    meine Python 3.8.1 auf win 10 pro

  • ok - gib mal bitte

    pip freeze

    auf der windows Kommandozeile ein.

    Dann sollte ne Liste installierter python module kommen. Und wir brauchen pycryptodome.

    Ich denke Du hast das modul garnicht installiert.

    Wenn meine Vermutung richtig ist, dann bitte :

    pip install pycryptodome

    auf der Kommandozeile eingeben um das Modull zu installieren


    Bei mir sieht das dann so aus:

    pip install pycryptodome

    Collecting pycryptodome

    Downloading pycryptodome-3.9.7-cp36-cp36m-win_amd64.whl (14.1 MB)

    |████████████████████████████████| 14.1 MB 6.4 MB/s

    Installing collected packages: pycryptodome

    Successfully installed pycryptodome-3.9.7

    Danach sollte es tickern...

    Ich hab das Modul gerade probehalber bei mir deinstalliert und kam auf genau die Fehlermeldung von Dir weiter oben ...