Hallo Allerseits!
Nach dem Daly Desaster mit dem Zwangs-Firmware-Update etc., habe ich bei mir komplett auf JK-BMS umgestellt und die Dalys dorthin geworfen, wo sie hingehören - in den Elektroschrott.
Ich verwende zwei 8S BMS (B2A24S15P-CAN) für meine Hausspeicher mit VictronGX und Multiplus und drei 4S (b1a8s10p) für meine Verbraucherbatterien im WoMo und Boot.
Beim ersten Hausspeicher habe ich noch das JK RS485 Interface (am GPS Port) und einen galvanisch getrennten USB-RS485 Umsetzer und den Treiber Louisvdw/dbus-serialbattery verwendet. Ich habe jedoch festgestellt, dass dies nicht nötig ist und verwende beim zweiten Speicher einfach einen galvanisch getrennten USB-RS232 -Dongle, direkt am GPS Port angeschlossen. Das funktioniert in Verbindung mit dem Louisvdw/dbus-serialbattery Treiber und den Venus OS ebenfalls problemlos. (Kleine Einschränkung, manchmal zeigt er beim Strom fälschlicherweise "0" an.)
Nun versuche ich gerade mit einem Pi und Raspberry OS (Debian) auf die kleinen BMS zuzugreifen und die Daten über den GPS Port auszulesen. (Bluetooth funktioniert bereits aber leider nicht sehr zuverlässig).
Ich frage mich dabei immer mehr, was das für eine ominöse Schnittstelle ist, die am BMS mit GPS bezeichnet ist und hoffe Ihr könnt da etwas Licht ins Dunkle bringen?
Meine Erkenntnisse:
- Es funktioniert prinzipiell mittels eines direkt an die GPS angeschlossenen USB-RS232 Dongles (Beweis: Betrieb mit VenusOS und Louisvdw/dbus-serialbattery Treiber)
- Auch die Pin-Bezeichnungen von JP mit "RX" und "TX" weisen eher auf eine RS232 Schnittstelle hin. (RS485 hat DataA, DataB)
- Wenn man RS485 verwenden will, dann braucht man offensichtlich den JK RS485 Adapter. Stimmt das?
- Wenn man den JK RS485 Adapter verwendet, dann funktioniert das Auslesen über einen USB-RS485 Adapter. (Aber es scheint kein "echtes" RS485 zu sein, da man an diesen Bus nach Informationen im Netz nicht mehrere Geräte mit unterschiedlichen ID's anschließen kann. (Echtes RS485 ist ein Bus-System, an dem jedes Gerät eine eigene Nummer(Id) hat unter der es erreichbar ist. Diese ID scheint dem JK BMS zu fehlen.)
- Was dieser ominöse Adapter genau tut ist unklar. Laut Information im Netz nur eine Pegelanpassung und eventuell galvanische Trennung. Stimmt das oder wird hier tatsächlich RS232 zu RS4845 gewandelt?
Ich habe bisher versucht mittels der Python Software "mpp-solar", welche eine Komponente "jkbms" enthält die Daten auszulesen. Wie schon gesagt, über BLE kann ich Daten auslesen, aber es werden nicht alle Daten gelesen, z.B. ist der SOC immer "0", die Zellenspannungen jedoch sind korrekt, wenn ich das Protokoll "JK02" verwende.
Für Informationen bzgl. des oben geschilderten wäre ich dankbar und ich denke das wäre für so manchen von Interesse.
Grüße
Erich
An dem GPS-Port direkt ist eine TTL Schnittstelle. Ganz wichtig hier, es muss seitens Adapter darauf geachtet werden 3,3V zu nutzen. Ansonsten bekommt man tatsächlich insbesondere bei Temperaturwerten falsche Daten. Ansonsten liegst Du schon ganz richtig: Ordentlicher, galvanisch getrennter USB zu TTL Adapter und die Verbindung ist stabil.
Es gibt allerdings auch eine (bei mir auch sehr stabil laufende) Möglichkeit mit einem ESP32 das JKBMS auch gleichzeitig/parallel per BT auszulesen. Läuft über das ESPHome Framework und ist in Github vom User Sissy zu finden. Funktioniert wie gesagt auch sehr stabil.
Ich bin kein Amateur, aber ich lerne trotzdem noch.
Bürokratie schafft man nicht durch neue Regeln oder Gesetze ab.
SOC ist ein NTCV Parameter
Was soll mir das sagen? Ich kenne den Unterschied zwischen RS232 und RS485. Meine Frage bezog sich speziell auf die "GPS" Schnittstelle des JK BMS.https://www.virtual-serial-port.org/de/article/what-is-serial-port/rs232-vs-rs485.html#difference
Nachdem ich zwei Tage mit der mpp-solar Software gekämpft habe und damit nur einige, aber teilweise falsche Daten, über BLE auslesen konnte, habe ich nun ein Ozi angeschlossen und festgestellt, dass die Software zwar Daten sendet, aber das JK BMS nicht antwortet. Das ist eventuell dadurch begründet, dass diese Software mein spezielle JK BMS nicht unterstützt sondern nur die zwei in der Geräteliste angegebenen.
Nun habe ich mir den Datenverkehr mit dem dbus-serial Treiber angesehen. Damit antwortet das BMS.
Ich habe habe nun kurzerhand den Treiber Louisvdw/dbus-serialbattery auf meinen Raspberry unter Raspberry Pi OS installiert und sämtliche Zugriffe auf dem DBus auskommentiert und die Daten mittels einfacher print Befehle ausgegeben.
Das sieht nun so aus:
SOC: 69.00
Batterie Spng. gesamt: 13.15 V
Batterie Strom: -0.00 A
Batterie Power: -0.00 W
Batterie Temp: 20.0 °C
Batterie Capacity remain: 69.0 Ah
Batterie Charge Cycles: 0
max. Charge Current: 50.0 A
max. Discharge Current: 60.0 A
max. Charge Voltage: 13.8 A
Cell 1 Voltage: 3.2900 V
Cell 2 Voltage: 3.2900 V
Cell 3 Voltage: 3.2890 V
Cell 4 Voltage: 3.2890 V
Das ist genau was ich haben wollte! 😇 👍
Jetzt werde ich die Daten noch zusätzlich mittels mqtt in meinem Netz publizieren damit ich sie mittels nodered weiterverarbeiten kann.
Vielleicht ist das hier doch was für Dich:
https://github.com/syssi/esphome-jk-bms
Da bekommst noch deutlich mehr Infos raus aus dem BMS...