Hallo,
ich habe mal noch ein bisschen recherchiert und rumprobiert und weitere (für mich neue) Dinge herausgefunden. Leider verstehe ich mangels Programmierkenntnis nicht so genau, was ich da jetzt getan habe, aber es ist vielleicht eine wichtige Info für die "echten" Programmierer, um das Joulie_16 wieder mit Solaranzeige auslesbar zu machen.
Zuallererst habe ich bei Autarctech angerufen und nach einer aktuellen Dokumentation zur Shell vom Joulie-16 gefragt. Diese habe ich auch bekommen. Leider ist sie nicht ganz aktuell. Im Trace werden noch ein paar Datenfelder mehr gesendet als in der Doku erwähnt werden.
Ich möchte hier kurz erklären, wie man an Daten des Joulie-16 kommen kann. Es gibt nämlich 2 Möglichkeiten:
1. mit dem Befehl
FWTRACE ON startet man die Trace Ausgabe an die USB Schnittstelle. Alle 500ms sendet das BMS dann einen Datensatz im .csv Format (solange, bis man die Ausgabe mit
FWTRACE OFF wieder stoppt)
die Ausgabe sieht dann so aus (alles in einer Zeile):
22-12-02 16:52:26;3264;I;3264;I;3267;I;3265;I;3268;I;3267;I;3264;I;3264;I;3265;I;3268;I;3267;I;3270;I;3270;I;3268;I;3268;I;3264;I;-2867;276.38;45758;52263;869760;57600;110000;46400;110000
Die Werte sind: Zeitstempel; Zelle 1 Spannung; Zelle 1 aktueller Balancerstatus;......Zelle 16 Spannung; Zelle 16 aktueller Balancerstatus; Strom; Kapazität; irgendeine untere Spannung; die aktuelle Spannung des Akkublocks; ....und noch weitere Werte, von denen ich bisher nicht genau weiß, was sie bedeuten.
2. mit dem Befehl
OUTB
die Ausgabe sieht dann so aus:
Cells:
[ 1] 3249mV (I) [ 2] 3250mV (I) [ 3] 3250mV (I) [ 4] 3249mV (I)
[ 5] 3252mV (I) [ 6] 3250mV (I) [ 7] 3250mV (I) [ 8] 3252mV (I)
[ 9] 3252mV (I) [10] 3252mV (I) [11] 3252mV (I) [12] 3252mV (I)
[13] 3252mV (I) [14] 3253mV (I) [15] 3252mV (I) [16] 3250mV (I)
Temperatures:
[ 0] 8.816degC [ 1] 8.150degC [ 2] 8.455degC [ 3] 8.194degC
[ 4] 7.721degC [ 5] 8.574degC [ 6] 8.949degC [ 7] 8.129degC
[ 8] 8.221degC [ 9] 8.647degC [10] 8.340degC [11] 8.691degC
[12] 8.215degC [13] 7.738degC [14] 8.231degC [15] 8.427degC
Current : -36mA (001A)
Voltage : 52094mV
Ist selbsterklärend. Hier bekommt man aber weniger Informationen als über die Traceausgabe (SOC und Kapazität fehlen). Außerdem ist hier der aktuelle Balancerstatus der einzelnen Zellen immer I(dle), da man den Balancer zum Ausführen des Befehls "OUTB" mit "STOPB" zuvor anhalten muss. In der Dokumentation steht auch drin, dass es nicht zu empfehlen ist, den Befehl "STOPB" auszuführen, wenn der Balancer grad aktiv ist, da dadurch "unerwünschte Effekte" auftreten können (steht so in der Doku).
Also scheint es mir sinnvoll, das Auslesen über die Traceausgabe zu machen.
In der Datei joulie_16_bms.php habe ich die Befehle zum Auslesen gefunden. So wie ich das verstehe wird da unter anderem mit
OUTB gearbeitet. Das sehe ich auch, wenn ich die Schnittstellendaten anzeigen lasse.
Das sieht dann so aus:
Hier fällt die Fehlermeldung auf, dass das Balancen vor dem Ausführen des Befehls "OUTB" nicht gestoppt wurde. Das kann also nicht funktionieren und dementsprechend gibt es auch eine Fehlermeldung im Log und es wird auch nichts in die Datenbank geschrieben:
Daraufhin habe ich in der Datei joulie_16_bms.php einfach mal ein bisschen die Befehle vertauscht, und siehe da, plötzlich werden Daten empfangen und in die InfluxDB geschrieben.
Der geänderte Skriptteil sieht so aus:
Und im Log sieht es so aus:
So funktioniert zumindest mal etwas. Aber dummerweise die Lösung, die ich nicht haben wollte (weil über "OUTB" und nicht über die Trace-Daten und ohne SOC und Kapazität und keine Infos zum Balancerstatus).
Kann mit diesen Infos jemand was anfangen? Würde mich riesig freuen!
Zum Schluss noch zwei Infos:
- Ich betreibe das Joulie-16 zusammen mit einem SMA Sunny Island 6.0H-11.
- Die aktuelle Firmware des Joulie-16 BMS ist 1.18 vom 03.02.2021. Die mir vorliegende Doku bezieht sich auf FW Version 1.16, sieht aber passend aus (bis auf die letzten Werte im Trace, die wohl noch hinzugekommen sind).