JKBMS auslesen über BLE (Bluetooth) oder RS485 Adapter mittels EPS, ioBroker

Hallo zusammen, kann denn niemand helfen? Das BMS verbindt sich einfach nicht, weder mit der V3.4 noch mit der 3.8.1 beta. in der 3.8.1 kann ich die Zellenanzahl auch nicht verändern. Nach einem Neustart stehen wieder nur 8 drin und im FHEM ändert sie die Anzahl auch nicht auf 16.

Hast Du Dein BMS auch richtig angegeben ?
Bei mir sieht das anders aus, als angegeben, damit es funktioniert.

//BMS-BLE Settings
const char* Geraetename = "JK_B2A24S15P"; //JK-B2A24S20P JK-B2A24S15P

Andreas

in wie fern verbindet sich das BMS nicht?
Ich habe nämlich ein ähnliches Problem.
Habe alle Versionen durch, aber ums verrecken bekomme ich keine Daten vom BMS.
Er findet es zwar und es beept auch aber zum einem blinkt die LED langsamer als wie mit der APP und zum anderen kommen keine Daten.

Das ist alles was im Serial Mon. ausgespuckt wird:

  • Connected to server
  • Found our service
  • Found our characteristic
    Sending device Info
    We are now connected to the BLE Server.
    getInfo, gesendet!

Ich habe mich in das Thema BLE-Kommunikation etwas intensiver eingearbeitet und bin dabei auf das Problem gestoßen:

Beim Subscriben der BLE-Notifications scheint es im Zusammenhang mit dem hier bereitgestellten Sketch und meinem JK-BMS-Modell Schwierigkeiten zu geben. Möglicherweise sind auch andere Modelle betroffen.

Um das zu verifizieren, habe ich das Ganze mit der NimBLE-Arduino Bibliothek umgesetzt – und siehe da, es funktioniert auf Anhieb!

Verwendet habe ich durchgehend die aktuellsten Versionen von IDE, Core und Libraries.
Vielleicht hilft dieser Ansatz ja auch anderen, die ähnliche Probleme haben. :blush:

Ich habe versucht, die Version aus dem ersten Beitrag hier mit meinen PB2A16S20P zum Laufen zu kriegen (Das sind die BMS, die in den DIY Boxen verbaut sind). Das Einzige was funktioniert hat, waren die Zellspannungen. Ich habe mir den Code mal vorgenommen (ich hoffe der Autor hat kein Problem damit) und in ein PIO Projekt gepackt. Dann habe ich das Parsing komplett neu aufgebaut, ausgerichtet an diesem Dokument und Try/Error. Hat mich ein paar Nächte gekostet und es mag auch noch ein paar Glitches enthalten, aber für mich läuft es schon ganz gut.

EDIT: Ich habe ein separates Thema dafür erstellt

ich habe das ganze jetzt mal zusammen geschustert...
Incl. Webinterface und Schaltern.
MQTT kommt noch
Hier auf GIT

hi, kann mich vielleicht wer unterstützen? ich bekomme beim kompilieren immer den fehler dass der can.h driver nicht funktioniert:
arduino driver/can.h: No such file or directory

hab schon versucht die diversen can bibliotheken einzuspielen, dürfte aber da nicht die richtigen gefunden haben???

danke tom

Hallo zusammen, ich verwende die V3.6 schon seit 2023 und die läuft mit meinem alte JK-BMS V11 super. Jetzt wollte ich neu compilieren und mir fehlen die richtigen Bibliotheken. Hat jemand die exakt erforderlichen Bibliotheken? Oder einen Tipp wie ich die wieder finde?

Ich würde gerne zusätzlich im Code die pro Tag geladene und entladene Energien der Batterie berechnen lassen. Das BMS liefert diese Daten leider nicht.

Nachtrag: Die ganz oben bereitgestellte Version V3.6 lässt dich mit den aktuellen Bibliotheken nicht mehr compilieren. Mit zwei Anpassungen geht es nun wieder. Im Nachfolgenden Beitrag von [sralus] sind die diese beiden nicht vorhanden! Somit lässt sich diese Version wieder compilieren!

Hallo
Ich habe hier nochmal einen Arduino Scratch für mein JK_B2A20S20P - gebaut der einen Internen Webserver /ESP32-IP/web/index.html darstellt. zudem macht er natürlcih MQTT und rein unter der IP des ESP32 werden die JOSN Daten angezeigt. Würde mich feuen wenn der ein oder andere an meinem Projekt gefallen finden kann.. Danke natürlich auch an alle anderen die hier mitwirken !

Ledeglich im JKBMS-WI.ino noch die Wlan - SSID + Passwort setzten und evtl den MQTT Server anpassen - ich nutze Port 1883 - und die ip 192.168.0.69 - Also das auch anpassen.

PS: - verbindet sich rein per Bluetooth nicht per CAN.
Viel Erfolg
Gruß Sralus


JKBMS-WI.zip (10,8 KB)

1 „Gefällt mir“

Mal ne Frage:
Gehe ich mit der RS485 Schnittstelle DIREKT an den RS-Anschluss am BMS.
Oder muss ich über das JK eigene RS-Interface mich anbinden?

RS-Interface

du musst das RS-Interface nehmen .. ich würde dir aber empfehlen ein ESP32 mit dem oberen Sratch von mir zu kompilieren .. dann haste das über BT verbunden und hast sowohl schon ein eigenes Webinterface und MQTT der dir alle daten noch zudem sendet !!

Toller Sketch
Ich habe einmal reingeschaut, allerdings noch nicht auf einen ESp32 geflasht.
Aktuell habe ich ein JKBMS mit dem Sissi Projekt eingebunden.
Dort werden dynamisch die Anzahl Zellen ermittelt und auch der Customname.
Wenn ich das richtig gesehen habe, dann hast Du in der JKBMS-WI.ino ein festes Array definiert.
Evtl. ist es ja möglich, die Anzahl der Zellen auszulesen und mit dieser Zahl das Array neu zu definieren.
Dieses würde auch allen mit einem Akkupack < 16 Zellen nutzen, da diese dann nur die Anzahl der Zellen über MQTT erhalten.

Der Loop in publish_data.ino (Zeile 41) wäre davon auch betroffen
Damit könnte man dann dynamisch eine Anzeige bauen.
Auch wäre sicherlich CellID High und Low sowie CellVoltage High und Low noch interessant
Nur so als Überlegung

Ich habe für OH ein Widget auf dieser Basis erstellt welche dynamisch die Zellen anzeigt
Hier einmal ein Beispiel Screenshot, wohlgemerkt für Openhab für ein 16 Zellen Akkupack



okmitwe.zip (9,0 KB)
So habe ich es mit Grafana über IO-Broker mit MQTT - und habe das interne Dashboard noch etwas erweitert .. siehe Bilder ... und ja ob 8..16..32 Zellen vorhanden sind ist auf jeden Fall Programierbar,,,, Naja jeder hjat halt seine art sein Projekt zu realisieren !! Gruß Sralus

1 „Gefällt mir“

So ich komme aktuell nicht mehr weiter.

Bevor der Umbau stattfindet, will ich das BMS erst mal per BLE einbinden.
Nur leider findet das Bluetooth vom HA das JK nicht.
Alles wird gefunden, selbst die blöde Oral-B aus dem Bad.

Hab nen externen Stick dran, ist dann 4m weg.
Hab nen Shelly mit Proxy, ist 20cm weg.

Sehe es dann weder in den Bluetooth Advertise, noch in der Liste bei Batmon, noch im Terminal.

Über Hilfe wär ich dankbar

Hast du den eine BT verbindung nur mit dem Handy und der JK-APP ?
Und die MAC Adresse ist die richtige vom JK-BMS ?
Bei dem Sratch von mir verbindet sich das BMS automatisch nach 5..6 sec per BT. Wichtig ist nur der Typ deines BMS.
Wenn es mit der Handy app von JK geht dann glaube ich das die MAC nicht die richtige ist um das mit HA zu realisieren ,,,,

Gruß Sralus

Danke für die Infos. Schaue ich mir an.

Habe mittlerweile die Lösung. :frowning:

APP fkt. mit Zugriff
MAC hatte ich mit einem sniffer ermittelt

Habe jetzt das USB-Kabel zwei mal verlängert, so dass ich den USB Stick direkt auf das BMS legen konnte und ab da hatte ich eine Verbindung.
Aktuell habe ich den MQTT im BATMON aktiviert und erhalte jetzt einigermassen stabile Daten.

Werde aber (im Herbst) mal den Umbau auf RS485-WLAN vornehmen und es dann über MQTT einlesen.

Hallo Zusammen,

ich versuche seit gestern die >7467=6664-BLE_client_V3.6.rar< in der Arduino IDE zum “Laufen” zu bringen!

Leider habe ich bei den Beiden Einträgen keinen Erfolg!

Welche Bibliotheken muss ich da nehmen, bzw wie einbinden (“driver/gpio.h"), die anderen habe ich gefunden?

Für eine Antwort bzw. Hilfe wäre ich sehr dankbar!

Grüße Gerri

Ich habe den Fehler gefunden!

Ab einer bestimmten Version der ArduinoIDE gibt es diese can.h Bibliothek nicht mehr, die wurde umbenannt und heißt jetzt twai.h !!!

driver/gpio.h und driver/twai.h sind zwei völlig verschiedene ESP-IDF Header, die unterschiedliche Hardware-Funktionalitäten ansprechen: - Kurz gesagt:

  • gpio.h = einzelne Pins schalten/lesen

  • twai.h = kompletten CAN-Bus steuern (ESP32 hat dafür integrierten Controller, Pins werden nur zugeordnet, Rest läuft im Treiber) - Voraussetzung:

    • Du musst den ESP32-Board Support (Arduino-Core von Espressif) installiert haben.
      → Arduino IDE → Boardverwalter → „ESP32 by Espressif Systems“.

    • Dann liegt driver/gpio.h schon drin, weil der Core die IDF-Headers mitliefert.

PS : im Ardurino - Voreinstellungen - Einstellungen - zusätzliche Boardverwalter-URls : das hier eingben - https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

Gruß Sralus

Hier ist der link von meinem : https://akkudoktor.net/uploads/short-url/kpcRTtpJhGJvP9rKAX5BlDFYG6b.zip

gpio.h hatte sich nach der Fehlerbehebung mit twai.h mit einbinden lassen.

Dein Programm habe ich auch kompilieren wollen, da kamen aber einige Fehlermeldungen zum Vorschein!

Wäre eigendlich genau das richtige, was ich brauchen könnte! :pleading_face: