Kostal Plenticore mit Batterie

Allgemeine Informationen zum Nachbau und zum Forum.
PV-Monitorung / PV Überwachung

Moderator: Ulrich

Bogeyof
Beiträge: 1116
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 23 Mal
Danksagung erhalten: 137 Mal

Re: Kostal Plenticore mit Batterie

Beitrag von Bogeyof »

Alle Daten die Du angegeben hast beziehen sich auf den ganzen Turm. Also die höchsten und niedrigsten Werte über alle Module.
Interessant wäre vermutlich noch der SOC mit Kommastelle. Dieser kommt als vorletzter Wert bei readBYD2.pl. Damit hat man halt einen noch genaueren Verlauf. Nach dem SOH kämen dann noch Turmspannungen (netto / brutto) und dann SOC mit Kommastelle und als letztes der Errorcode.

Hier mal mein Auslesen, vielleicht kannst Du es damit leichter nachvollziehen / bzw. nachbauen:

Code: Alles auswählen

/****************************************************************************
//  CvT Anpassungen Auslesen BYD, Voltage, Temperatur, SOH
 ****************************************************************************/

$shell_befehl = "perl /var/www/html/readBYD2.pl";
#print_r ($shell_befehl);
$temp = shell_exec($shell_befehl);
$Einzelwerte = preg_split("/[\s,\n ]+/", $temp);

$aktuelleDaten["XSOC"] = 0;
if ($Einzelwerte[0] == 0) {
    $aktuelleDaten["CellTempHigh"] = 20;
    $aktuelleDaten["CellTempLow"] = 20;
    $aktuelleDaten["CellVoltHigh"] = 3.30;
    $aktuelleDaten["CellVoltLow"] = 3.28;
    $aktuelleDaten["SOH"] = 100;
    $aktuelleDaten["XSOC"] = 0;
    $aktuelleDaten["Error"] = 0;
} else {
    $aktuelleDaten["CellTempHigh"] = $Einzelwerte[4];
    $aktuelleDaten["CellTempLow"] = $Einzelwerte[5];
    $aktuelleDaten["CellVoltHigh"] = $Einzelwerte[6];
    $aktuelleDaten["CellVoltLow"] = $Einzelwerte[7];
    $aktuelleDaten["SOH"] = $Einzelwerte[11];
    $aktuelleDaten["XSOC"] = $Einzelwerte[14];
    $aktuelleDaten["Error"] = $Einzelwerte[15];
}
if ($aktuelleDaten["XSOC"] == 0) {
    $aktuelleDaten["Query"] = "db=" . $InfluxDBLokal . "&q=" . urlencode("select last(XSOC) from Batterie");
    $rc = $funktionen->po_influxdb_lesen($aktuelleDaten);
    $aktuelleDaten["XSOC"] = $rc["results"][0]["series"][0]["values"][0][1];
}
$aktuelleDaten["ErrorStr"] = "";
if ($aktuelleDaten["Error"] & 1) {  //1. Bit gesetzt
    $aktuelleDaten["ErrorStr"] .= "High Temperature Charging (Cells); ";
}
if ($aktuelleDaten["Error"] & 2) {  //2. Bit gesetzt
    $aktuelleDaten["ErrorStr"] .= "Low Temperature Charging (Cells); ";
}
if ($aktuelleDaten["Error"] & 4) {  //3. Bit gesetzt
    $aktuelleDaten["ErrorStr"] .= "Over Current Discharging; ";
}
if ($aktuelleDaten["Error"] & 8) {  //4. Bit gesetzt
    $aktuelleDaten["ErrorStr"] .= "Over Current Charging; ";
}
if ($aktuelleDaten["Error"] & 16) {  //5. Bit gesetzt
    $aktuelleDaten["ErrorStr"] .= "Main circuit Failure; ";
}
if ($aktuelleDaten["Error"] & 32) {  //6. Bit gesetzt
    $aktuelleDaten["ErrorStr"] .= "Short Current Alarm; ";
}
if ($aktuelleDaten["Error"] & 64) {  //7. Bit gesetzt
    $aktuelleDaten["ErrorStr"] .= "Cells Imbalance; ";
}
if ($aktuelleDaten["Error"] & 128) {  //8. Bit gesetzt
    $aktuelleDaten["ErrorStr"] .= "Current Sensor Failure; ";
}
if ($aktuelleDaten["Error"] & 256) {  //9. Bit gesetzt
    $aktuelleDaten["ErrorStr"] .= "Battery Over Voltage; ";
}
if ($aktuelleDaten["Error"] & 512) {  //10. Bit gesetzt
    $aktuelleDaten["ErrorStr"] .= "Battery Under Voltage; ";
}
if ($aktuelleDaten["Error"] & 1024) {  //11. Bit gesetzt
    $aktuelleDaten["ErrorStr"] .= "Cell Over Voltage; ";
}
if ($aktuelleDaten["Error"] & 2048) {  //12. Bit gesetzt
    $aktuelleDaten["ErrorStr"] .= "Cell Under Voltage; ";
}
if ($aktuelleDaten["Error"] & 4096) {  //13. Bit gesetzt
    $aktuelleDaten["ErrorStr"] .= "Voltage Sensor Failure; ";
}
if ($aktuelleDaten["Error"] & 8192) {  //14. Bit gesetzt
    $aktuelleDaten["ErrorStr"] .= "Temperature Sensor Failure; ";
}
if ($aktuelleDaten["Error"] & 16384) {  //15. Bit gesetzt
    $aktuelleDaten["ErrorStr"] .= "High Temperature Discharging (Cells); ";
}
if ($aktuelleDaten["Error"] & 32768) {  //16. Bit gesetzt
    $aktuelleDaten["ErrorStr"] .= "Low Temperature Discharging (Cells); ";
}
if ($aktuelleDaten["ErrorStr"] == "") {
    $aktuelleDaten["ErrorStr"] = "no Errors";
}
Bei mir gibt es also neben SOC noch das Datenfeld XSOC (= SOC mit Kommastelle)

dreamerpit
Beiträge: 36
Registriert: Mi 16. Aug 2023, 15:10

Re: Kostal Plenticore mit Batterie

Beitrag von dreamerpit »

ah ok, ich dachte zuerst, das du das wie in der be connect app nachempfinden wolltest. Da ist das ja modulbezogen...
Ich werds mal nach deiner Vorlagen anpassen.
Wobei ich mir die Frage Stelle, inwieweit eine Nachkommastelle beim SOC überhaupt Sinn macht. Wenn ich das richtig verstehe, ist der SOC Wert doch nur geschätzt, also eh immer ungenau, oder ?

Bogeyof
Beiträge: 1116
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 23 Mal
Danksagung erhalten: 137 Mal

Re: Kostal Plenticore mit Batterie

Beitrag von Bogeyof »

Das stimmt sicherlich auch, aber man kann im Kleinen doch sehen wenn kleine Verbräuche vorhanden sind wie der SOC abgestuft sinkt...

dreamerpit
Beiträge: 36
Registriert: Mi 16. Aug 2023, 15:10

Re: Kostal Plenticore mit Batterie

Beitrag von dreamerpit »

bin schon dabei...

dreamerpit
Beiträge: 36
Registriert: Mi 16. Aug 2023, 15:10

Re: Kostal Plenticore mit Batterie

Beitrag von dreamerpit »

@Bogeyof
so, die Kostal_plenticore_math.php hab ich ja soweit am laufen.
Ich hab irgendwo gelesen, das man auch noch die Versionen von BMS, BMU und ein paar mehr auslesen kann.
Finde es aber leider nicht mehr... Hast du eine Idee ?

zwischendurch kommt mir im log aber die Meldung: zu viele php scripte, stop php script multi_regler_auslesen.php
was kann man tun ?

Heute morgen hab ich noch dein script byd_daten.php in die crontab geschrieben.
Im log kommt --- start byd_daten.php --- und --- stop byte_daten.php --- , aber es kommt keine Rückmeldung, ob die Daten in die Influx DB geschrieben wurden.
Ich finde auch nichts unter Batterie.

Need some help

Bogeyof
Beiträge: 1116
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 23 Mal
Danksagung erhalten: 137 Mal

Re: Kostal Plenticore mit Batterie

Beitrag von Bogeyof »

Der zu viele Skripte Fehler ist ein Timeout Problem. Alle Geräte-Skripte müssen zusammen in unter 1 Minute fertig werden, sonst wird dasselbe Skript wieder aufgerufen (multi_regler_auslesen.php) obwohl es noch läuft. In der Log Datei sind ja auch Zeitangaben und hier erst mal suchen, wo evtl. die Zeit verloren geht. Evtl. hängt er beim Auslesen der BYD zu lange...
Das Skript BYD-Daten schreibt (wenn es nicht verändert wurde) in eine eigene Datenbank "BYD". Diese muss dann auch zuerst selbst angelegt werden. Darin sollten dann die Measurements "MVoltage" (Modulspannungen), "Temp" (Zelltemperaturen) und "Voltage" (Zellspannungen) geschrieben werden.

Das Skript readBYD2.pl liefert Daten in der folgenden Reihenfolge:

Code: Alles auswählen

root@CVT-ESPRIMO-D757:/var/www/html# ./readBYD2.pl
204
3.28
3.22
3.23
22
19
3.23
3.17
2
P030T020Z2003094724
11
96
408.7
407.5
11.6
0
Zeile 2 ist die Firmware des BMS
Zeile 3 ist die Firmware BMU Slot A
Zeile 4 ist die Firmware BMU Slot B
Zeile 5 und 5 niedrigste und höchste Zelltemperatur
Zeile 7 und 8 höchste und niedrigste Zellvoltage
Zeile 10 die Seriennummer
Zeile 11 SOC Ganzzahl
Zeile 12 State of Health
Zeile 13 und 14 Battery und Pack-Voltage
Zeile 15 SOC mit Kommastelle

dreamerpit
Beiträge: 36
Registriert: Mi 16. Aug 2023, 15:10

Re: Kostal Plenticore mit Batterie

Beitrag von dreamerpit »

habs probiert. Die Daten werden bei mir auch angezeigt.
Ich brauche allerdings deine Unterstützung beim anlegen der Datenbank....
jetzt schon mal wieder danke

Bogeyof
Beiträge: 1116
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 23 Mal
Danksagung erhalten: 137 Mal

Re: Kostal Plenticore mit Batterie

Beitrag von Bogeyof »

- Konsolenfenster aufrufen, dort eingeben

Code: Alles auswählen

influx
create database BYD
show databases (hier sollte dann BYD mit angezeigt werden)
exit
Konsolenfenster verlassen.

Wenn es Probleme gibt auch die /var/www/log/php.log prüfen, evtl. sind dort auch Fehler (Programmierungs-/Syntaxfehler) vorhanden.

dreamerpit
Beiträge: 36
Registriert: Mi 16. Aug 2023, 15:10

Re: Kostal Plenticore mit Batterie

Beitrag von dreamerpit »

Datenbank BYD ist angelegt und in solaranzeige eingebunden. Kann sie im Dashboard auch anwählen. Aber es stehen keine Daten drin.
Keine Fehlermeldungen im php.log

Bogeyof
Beiträge: 1116
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 23 Mal
Danksagung erhalten: 137 Mal

Re: Kostal Plenticore mit Batterie

Beitrag von Bogeyof »

Das Skript BYD-Daten nutzt "/var/www/html/readBYDExt2.pl". Ist dieses in /var/www/html vorhanden und ausführbar. Hast Du dieses angepasst auf Deine IP-Adresse? Wenn Du es per Hand im Konsolenfenster aufrufst, kommt dann eine Ausgabe mit vielen Zeilen Temperatur und mV-Werten?

Code: Alles auswählen

perl /var/www/html/readBYDExt2.pl
byd_daten.php muss ebenfalls ausführbar sein (im Gegensatz z.B. zu der _math.php) da dieses Skript direkt über Crontab gestartet wird.
Wenn dies alles nicht hilft und keine Einträge in den LOG-Dateien sind (auch /var/www/log/solaranzeige.log), dann müsste man eigene Debug-Meldungen in dem PHP-Skript einbauen, um festzustellen was er macht und eben nicht macht. Schwierig eine Diagnose mit "geht nicht"...

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste