JK-BMS per Bluetooth auslesen und per IP-Adresse Heimnetz

Hallo Forum,

ich würde gerne meine JK-BMS per Bluetooth z. B. ESP32 auslesen und im Heimnetz per IP-Adresse die Zellenspannungen usw. abrufen.

Hätte jemand eine Idee wie man das umsetzen könnte?

Bitte euch um Infos!

MfG

Alpin28

Hi,

probiere es hiermit GitHub - syssi/esphome-jk-bms: ESPHome component to monitor and control a Jikong Battery Management System (JK-BMS) via UART-TTL or BLE

grüße

Danke für deine Info!

Ich habe mir das schon angesehen, aber ich finde nicht die korrekte Datei zum aufspielen auf den D1 mini?

Könntest du mir eventuell einen Tipp geben.

MfG

@alpin28 ?

Es gibt glaube ich kein fertiges bin file.

Du musst schon der Anleitung folgen.

Das Projekt funktioniert nur mit Home Assistent oder Mqttt. Das ESP hat keine direkt abrufbare Oberfläche.

OK, danke!

Werde mal mein Glück versuchen.

MfG

Alpin28

Das stimmt nicht ganz, geht auch ohne Home Assistant.
Ich hatte mir einen Web-Server integriert und damit lassen sich sogar Parameter ändern.
Ist glaube ich unter Diskussion zu finden.

grüße

Das hört sich aber toll an!

Wie funktioniert das genau - hättest du eventuell einige Infos, oder Beispiele für mich?

Vorerst Danke!

MfG

@alpin28

das hier ist meine yaml Datei.
Kein HomeAssistant, nur Mqtt und Web-Seite.

esp32-ble-example-web.txt (7.66 KB)

Der Rest so wie beschrieben in GitHub.

grüße

Sieht soweit ganz gut aus.

Ich schiebe mal meine yaml hier rein.

jkbms1.yaml.txt (8.61 KB)

Ich nutze aber nicht Blutooth, sondern habe den ESP direkt per Kabel verbunden, so wie auch im GitHub-Repository beschrieben ist.
Vielleicht kannst Du das trotzdem gebrauchen.

Das Teil funzt wie geschmiert, fast zu gut. Der müllt nämlich ganz schön was in meinen mqtt-Server rein. Alle Sensoren aktualisieren jede Sekunde glaube ich.
Falls Du also HomeAssistant verwendest (oder was anderes), denke bitte daran, diese Sensoren im Rekorder auszulassen, sonst explodiert die dort die Datenbank.
Wichtig zu erwähnen ist noch, dass Du dir alle Passwörter nach dem Initialisieren im ESP-Home sicherst und diese später auch in Deine fertige yaml wieder einträgst. Sonst findet der ESP-Home Dein Board nicht mehr oder kann es nicht updaten.
Mein Akku hat 16 Zellen, daher sind die Sensoren für Zelle 17-24 einfach auskommentiert. Falls Du mehr hast, kannst Du die einfach wieder aktivieren.

Hallo Leute, die neue openDTU onbattery kann jetzt das JKBMS via RS485 auslesen und gibt einige Werte schon auf der WebGUI aus. Die Masse der Werte wird dann per MQTT übertragen. Ich habs seid 3 Tagen laufen ohne übermässige Bastelei.

Die *.bin Datei kann man fertig runter laden und auf einen ESP32 flashen. Wer nicht flashen und sich mit RS485 Modulen rumschlagen möchte, der kann für ca. 45€ ein fertiges openDTU Fusion Board inkl. Software kaufen. Dann fehlt noch der originale JiKong RS485 Adapter für ca. 10€, 3 Kabel anschliessen und fertig.

Keine Werbung, ich hab nix davon, aber ich weis wie lange ich nach einer funktionierenden reproduzierbaren Lösung gesucht hab.

@netty am Anfang deines Beitrags schreibst du auslesen über can Bus und später berichtest du von einem RS485 Adapter am jk bms? Geht wirklich beides, auch der proprietäre CAN-Bus vom JK BMS? Oder ist das nur ein Schreibfehler?

Hast du eventuell mal einen Screenshot welche mqtt Nachrichten open dtu on battery vom JK BMS aus sendet?

@Alex_S

Nicht exakt das was Du anfragst - aber anbei die Konfig-Möglichkeiten bzgl. des JK-BMS.

Es geht also nur seriell (nicht via CAN), mit TTL oder RS485
PS: Ich hab die aktuelle Firmware (2023.10.24) auf der openDTU.

2 „Gefällt mir“

@michael-123 vielen Dank für deine Bemühungen, wenn du das JK BMS mal abgeschlossen hast, wäre es super wenn die vom mqtt Explorer auch noch einen Screenshot einfügen könntest, falls möglich.

@alex_s

Sorry Tippfehler, wird per RS485 ausgelesen, der Adapter funktioniert einwandfrei bei mir.

https://www.google.com/search?q=jkbms+rs485+adapter&oq=jkbms+rs&gs_lcrp=EgZjaHJvbWUqBwgCEAAYgAQyBwgAEAAYgAQyBggBEEUYOTIHCAIQABiABDIHCAMQABiABDIICAQQABgWGB4yCAgFEAAYFhgeMgYIBhBFGDwyBggHEEUYPNIBCDY3NTJqMGo3qAIAsAIA&sourceid=chrome&ie=UTF-8

Am anderen Kabelende werkelt dann das openDTU Fusion Board das einen RS485 Transceiver an Board hat. Natürlich kann man sich das alles selbst basteln mit ESP usw. aber zum einen steckt nicht viel drin beim selbst basteln und es gibt ja auch Leute die das nicht können oder wollen.

Und nein es geht nicht nur seriell !!!

@michael-123 Mach dich schlau bevor du solche Aussagen triffst, der interne Anschluss des RS485 Transceiver auf dem Fusion Board bzw. der Anschluss eines RS485 Transceivers an den ESP32 ( bei Selbstbau ) ist seriell !

Hier die diversen Anschlussmöglichkeiten wobei die RS485 per JK Adapter die sauberste ist da Kabellängen etc. fast keine Rolle mehr spielt.

Hier die Bezugsquelle vom Board:

Einmal fast fertig: AllianceApps OpenDTU Fusion

Einmal zum selbst flashen etc.: OpenDTU Fusion - Community Edition – AllianceApps

Wenn ihr selbst flashen wollt und keine passende Pinmapping Datei ( Zuordnung der Anschlüsse zu den Pins des ESP ) habt oder erstellen wollt könnt ihr gerne meine haben. Da die jedoch nicht immer gleich ist ( bei unterschiedlicher Hardware ) schreibt mich einfach an. Es ist ja z.B. auch möglich zusätzlich noch einen Hoymiles WR und / oder ein Victron Gerät per ve.direct auszulesen.

1 „Gefällt mir“

Hallo @netty ich habe mir auf deine Empfehlung auch so ein Fusion Board und den Adapter gekauft.
Den Adapter habe ich in das BMS gesteckt und das gelbe Kabel am anderen Ausgang des Adapters an den Anschluss A gesteckt und das weise an den Anschluss B. Leider passiert nichts.
Muss ich das schwarze Kabel des Adapters auch noch irgendwo anschließen?

Auch habe ich gelesen, dass es angeblich zwei Versionen von dem Adapter gibt und das eine davon wohl nur bis 24V geht. (ich verwende aber 16S)

Eine Hinweis auf dem Adapter ob 24 oder 48V kann ich nicht finden.
Kann es sein das ich den Adapter jetzt schon zerstört habe?

Vielen Dank für deine Mühe

Andereseits bekomme ich in der Konsole einige Meldungen, aber keine Anzeige bei Live Data.

Websocket: [/livedata][21] disconnect

20:13:12.510 > Websocket: [/batterylivedata][11] disconnect

20:20:40.434 > Websocket: [/livedata][20] disconnect

20:20:40.881 > Websocket: [/livedata][22] connect

20:20:54.270 > Websocket: [/livedata][22] disconnect

20:20:55.068 > Websocket: [/livedata][23] connect

20:26:15.280 > Websocket: [/livedata][23] disconnect

20:26:29.403 > Websocket: [/livedata][24] connect

20:58:40.006 > Websocket: [/livedata][25] connect

20:58:40.067 > Websocket: [/batterylivedata][12] connect

20:58:46.260 > Websocket: [/livedata][25] disconnect

20:58:46.374 > Websocket: [/batterylivedata][12] disconnect

21:18:47.098 > Websocket: [/livedata][24] disconnect

21:18:47.446 > Websocket: [/livedata][26] connect

21:27:02.324 > Websocket: [/livedata][26] disconnect

21:27:22.431 > Disconnected from MQTT.

21:27:22.650 > Disconnect reason:TCP_DISCONNECTED

21:27:24.353 > Connecting to MQTT...

21:27:24.610 > Websocket: [/livedata][27] connect

21:27:24.690 > Connected to MQTT.

21:27:25.074 > Received MQTT message on topic: JKBMS/huawei/cmd/limit_offline_current

21:27:25.356 > Huawei MQTT handler: cannot parse payload of topic 'JKBMS/huawei/cmd/limit_offline_current' as float:

21:27:25.431 > Received MQTT message on topic: JKBMS/huawei/cmd/limit_offline_voltage

21:27:25.641 > Huawei MQTT handler: cannot parse payload of topic 'JKBMS/huawei/cmd/limit_offline_voltage' as float:

21:27:25.734 > Received MQTT message on topic: JKBMS/huawei/cmd/limit_online_current

21:27:25.811 > Huawei MQTT handler: cannot parse payload of topic 'JKBMS/huawei/cmd/limit_online_current' as float:

21:27:25.942 > Received MQTT message on topic: JKBMS/huawei/cmd/limit_online_voltage

21:27:26.196 > Huawei MQTT handler: cannot parse payload of topic 'JKBMS/huawei/cmd/limit_online_voltage' as float:

21:27:26.287 > Received MQTT message on topic: JKBMS/huawei/cmd/mode

21:27:26.429 > Huawei MQTT handler: cannot parse payload of topic 'JKBMS/huawei/cmd/mode' as float:

21:27:26.557 > Received MQTT message on topic: JKBMS/powerlimiter/cmd/mode

21:27:26.626 > PowerLimiter MQTT handler: cannot parse payload of topic 'JKBMS/powerlimiter/cmd/mode' as float:

21:27:26.753 > Received MQTT message on topic: JKBMS/powerlimiter/cmd/target_power_consumption

21:27:26.963 > PowerLimiter MQTT handler: cannot parse payload of topic 'JKBMS/powerlimiter/cmd/target_power_consumption' as float:

21:27:27.094 > Received MQTT message on topic: JKBMS/powerlimiter/cmd/threshold/soc/full_solar_passthrough

21:27:27.189 > PowerLimiter MQTT handler: cannot parse payload of topic 'JKBMS/powerlimiter/cmd/threshold/soc/full_solar_passthrough' as float:

21:27:27.253 > Received MQTT message on topic: JKBMS/powerlimiter/cmd/threshold/soc/start

21:27:27.325 > PowerLimiter MQTT handler: cannot parse payload of topic 'JKBMS/powerlimiter/cmd/threshold/soc/start' as float:

21:27:27.449 > Received MQTT message on topic: JKBMS/powerlimiter/cmd/threshold/soc/stop

21:27:27.557 > PowerLimiter MQTT handler: cannot parse payload of topic 'JKBMS/powerlimiter/cmd/threshold/soc/stop' as float:

21:27:27.671 > Received MQTT message on topic: JKBMS/powerlimiter/cmd/threshold/voltage/full_solar_passthrough_start

21:27:27.858 > PowerLimiter MQTT handler: cannot parse payload of topic 'JKBMS/powerlimiter/cmd/threshold/voltage/full_solar_passthrough_start' as float:

21:27:28.010 > Received MQTT message on topic: JKBMS/powerlimiter/cmd/threshold/voltage/full_solar_passthrough_stop

21:27:28.157 > PowerLimiter MQTT handler: cannot parse payload of topic 'JKBMS/powerlimiter/cmd/threshold/voltage/full_solar_passthrough_stop' as float:

21:27:28.307 > Received MQTT message on topic: JKBMS/powerlimiter/cmd/threshold/voltage/start

21:27:28.521 > PowerLimiter MQTT handler: cannot parse payload of topic 'JKBMS/powerlimiter/cmd/threshold/voltage/start' as float:

21:27:28.614 > Received MQTT message on topic: JKBMS/powerlimiter/cmd/threshold/voltage/stop

21:27:28.821 > PowerLimiter MQTT handler: cannot parse payload of topic 'JKBMS/powerlimiter/cmd/threshold/voltage/stop' as float:

21:27:29.001 > Received MQTT message on topic: JKBMS/powerlimiter/cmd/upper_power_limit

21:27:29.223 > PowerLimiter MQTT handler: cannot parse payload of topic 'JKBMS/powerlimiter/cmd/upper_power_limit' as float:

21:27:41.282 > Websocket: [/livedata][28] connect

Ich benutze das JK-Inverter-BMS, zwei Akkus. Direkt an RS485 an Home Assiatant per ModBus ausgelesen. Falls Interesse besteht poste ich die YAML dazu.

Nach diversen Test's mit ESPHome->BT Anbindung, und einem HA AddOn das per BT die BMS'e ausliest, kann ich sagen das die direkte Integration per Kabel-RS485 und ModBus in Home Assistant die absolut stabilste Variante ist. Kein BT, kein WLAN und Abfrage Intervalle bis runter auf 1 Sekunde sind alles kein Problem damit.

Mir ist nicht bekannt das es 2 Versionen gibt. Die Spannungsversorgung kommt ja auch vom BMS nicht vom Akku. Das schwarze Kabel vom Adapter an GND = Minus. Das Signal kommt vereinfacht gesagt als Plusspannung und dann brauchts natürlich Minus = GND um es auszuwerten.
Zusätzlich must du noch das passende Pinmapping ( Pinbelegung am Prozessor ) unter Hardware->Anschlusseinstellungen auswählen:


Sollte das bei dir nicht verfügbar sein kannst einfach eine passenden Pinmapping Datei einlesen und es dann einstellen. Kannst dich gerne bei Problemen hier direkt in der FB Gruppe melden, da geht's überwiegend um das Thema.

Hier der Anschluss auf dem Board.

Hier nochmal der Anschlussplan aus dem Wiki: