Wir wechseln das Forum am 14.11.24 auf die Forensoftware Discourse. Zwischen Montag Abend und Dienstag Nachmittag wird das Forum deaktiviert. Danach sind wir hoffentlich mit neuem Forum inkl. der vorhandenen Beiträge wieder am Start! Hier zum Forenbeitrag!

Benachrichtigungen
Alles löschen

JK BMS via node-red abfragen und nach pvoutput hoch laden

9 Beiträge
5 Benutzer
2 Reactions
1,547 Ansichten
(@womblespeed)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 19
Themenstarter  

Nur zur Info:
Ich habe mir aus allen möglichen Foren und Beispielimplementationen das Abfragen des JK BMS (JK-B2A24S20P) über node-red zusammengebaut.
Das ganze gibt es hier zum Download:
https://flows.nodered.org/flow/491b04fbac4eb2989ee90ec87c28240d


   
tom_2 reacted
Zitat
(@deutz2016)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 41
 

Hi Stefan,
dein Flow ist wirklich spitze und genau das was ich gesucht habe. Nur leider scheint irgendwas beim Auslesen der Zellspannungen nicht zu stimmen: 5 der 16 Werte sind korrekt (3.253 V), aber die restlichen sind eben falsch.

Auszug aus Node-Red:

Auszug aus Venus OS:

Liegt es daran, dass die Werte nicht korrekt aus dem Buffer herausgenommen werden, oder ist dieser nicht korrekt beschrieben?

 

Liebe Grüße,

 

Jürgen


   
AntwortZitat
 JAU
(@jau)
Newbie
Beigetreten: Vor 2 Jahren
Beiträge: 4
 

@deutz2016 Bin gestern auf das selbe Problem gestoßen. Heute mal genauer geschaut und einen Programmierfehler in der Funktion "parse payload" entdeckt...

Ändere Zeile 33 in das hier:

    msg.jkbms.cell_voltages['cell' + cell] = (msg.buffer[cellbase + cell * 3 - 1] << 8 | msg.buffer[cellbase + cell * 3] << 0) / 1000;
Diese r Beitrag wurde geändert Vor 2 Jahren von JAU

   
AntwortZitat
(@deutz2016)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 41
 

@jau Bester Mann!!!

Das war es, jetzt läuft es hervorragend! Vielen Dank!


   
AntwortZitat
(@womblespeed)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 19
Themenstarter  

Danke schön. Ich werde das korrigieren.


   
JAU reacted
AntwortZitat
(@foelix)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 97
 

Das Sript ist wirklich gut. Aber ich glaube, da ist immer noch ein Fehler drin:

const chargingEnabled = 0x0000000000000001;
const dischargingEnabled = 0x0000000000000010;
const balancingEnabled = 0x0000000000000100;
const batteryConnected = 0x0000000000001000;
....

Das muss wohl überall 0b...... anstatt 0x....  heißen.


   
AntwortZitat
(@tom_2)
Vorsichtiger Stromfühler
Beigetreten: Vor 11 Monaten
Beiträge: 43
 

Veröffentlicht von: @womblespeed

Das ganze gibt es hier zum Download:
https://flows.nodered.org/flow/491b04fbac4eb2989ee90ec87c28240d

 

Hallo womblespeed,

super Beitrag - muss ich aber erst noch komplett durcharbeiten, um das alles zu verstehen...

Auf "nodered.org" funktioniert dieser Link nicht mehr 😥 

   wiring

Die scheinen alle irgendwie beim Umstellen des Forums verloren gegangen zu sein...

Vielleicht kannst du das noch korrigieren?!

Grüße
tom

 


   
AntwortZitat
 JAU
(@jau)
Newbie
Beigetreten: Vor 2 Jahren
Beiträge: 4
 

Veröffentlicht von: @foelix

Das muss wohl überall 0b...... anstatt 0x....  heißen.

Da hast du wohl recht, der Status ist damit etwas besser gefüllt als zuvor. dischargingEnabled war bis dahin immer 0.

{"batteryStatus":3,"chargingEnabled":1,"dischargingEnabled":2,"balancingEnabled":0,"batteryConnected":0}

Allerdings stellt sich mir die Frage was da genau raus kommen soll. Ist dann alles gut was <>0 ist oder soll es besser boolsch bleiben?

 

Das selbe Problem hat das Script dann auch bei den Warnungen ein paar Zeilen drüber, dort kommt mit 0x auch kein brauchbares Ergebnis raus. Fällt halt noch seltener auf...

 


   
AntwortZitat
(@foelix)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 97
 

Veröffentlicht von: @jau

Allerdings stellt sich mir die Frage was da genau raus kommen soll. Ist dann alles gut was <>0 ist oder soll es besser boolsch bleiben?

Ich habe mich noch nicht wirklich intensiv damit beschäftigt. Mir ist das nur aufgefallen, weil ich das Skript für einen ESP32 in c übersetzt habe. Das Skript hat mir auf jeden Fall jede Menge Arbeit erspart. Ich will, u.A. damit, eine Steuerung für eine Nulleinspeisung realisieren, die auch autark auf einem ESP32 laufen kann. Das was ich dafür brauche, kommt auf jeden Fall schon einmal richtig raus:

 

jkbms.cell_voltages[cell] 1 ......................3.320 V
jkbms.cell_voltages[cell] 2 ......................3.304 V
jkbms.cell_voltages[cell] 3 ......................3.303 V
jkbms.cell_voltages[cell] 4 ......................3.312 V
jkbms.cell_voltages[cell] 5 ......................3.308 V
jkbms.cell_voltages[cell] 6 ......................3.318 V
jkbms.cell_voltages[cell] 7 ......................3.321 V
jkbms.cell_voltages[cell] 8 ......................3.316 V
jkbms.temperatur.internal.........................28.00 °C
jkbms.temperatur.battery1.........................24.00 °C
jkbms.temperatur.battery2.........................25.00 °C
jkbms.voltage.....................................26.00 V
jkbms.current.....................................-14.40 A
jkbms.power.......................................-374.40 W
jkbms.remainigBattery.............................83
jkbms.numberOfNTC.................................2
jkbms.numberOfBatteryCycles.......................4
jkbms.batteryCycleCapacityAh......................915 Ah
jkbms.numberOfStrings.............................8
jkbms.warning.batteryWarning......................0
jkbms.warning.lowCapacity.........................0
jkbms.warning.powerTubeOvertemperature............0
jkbms.warning.chargingOvervoltage.................0
jkbms.warning.dischargingUndervoltage.............0
jkbms.warning.batteryOverTemperature..............0
jkbms.warning.chargingOvercurrent.................0
jkbms.warning.dischargingOvercurrent..............0
jkbms.warning.cellPressureDifference..............0
jkbms.warning.overtemperatureAlarmInTheBatteryBox.0
jkbms.warning.batteryLowTemperature...............0
jkbms.warning.cellOvervoltage.....................0
jkbms.warning.cellUndervoltage....................0
jkbms.warning.alarm309_AProtection................0
jkbms.warning.alarm309_BProtection................0
jkbms.status.batteryStatus........................1
jkbms.status.chargingEnabled......................1
jkbms.status.dischargingEnabled...................1
jkbms.status.balancingEnabled.....................1
jkbms.status.batteryConnected.....................0


   
AntwortZitat
Teilen: