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!
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
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
@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;
Das Sript ist wirklich gut. Aber ich glaube, da ist immer noch ein Fehler drin:
Das muss wohl überall 0b...... anstatt 0x.... heißen.
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 😥
Die scheinen alle irgendwie beim Umstellen des Forums verloren gegangen zu sein...
Vielleicht kannst du das noch korrigieren?!
Grüße
tom
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...
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