Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support für JK Inverter BMS #118

Closed
a-wolter opened this issue May 31, 2024 · 19 comments
Closed

Support für JK Inverter BMS #118

a-wolter opened this issue May 31, 2024 · 19 comments

Comments

@a-wolter
Copy link

a-wolter commented May 31, 2024

Hallo,

ich habe das aktuelle (V0.6.0) auf einen ESP32 geflasht und soweit konfiguriert.
Die JK Inverter BMS (JK-PB2A16S20P) wurden auf der Bluetoothseite erkannt und die Adresse per Copy übernommen.
Gerätetyp JK-BMS [TEST] wurde für BT Device 0 und BT Device 1 ausgewählt.

Allerdings erhalte ich auch nach einem Reboot keine Daten, jedoch quittiert das BMS auch mit einem Beep die Verbindung, ich bin hier nicht sicher, ob es beide BMS gleichzeitig sind, oder nur eines, welches den Beep ausgibt.

Das Logfile sieht für mich i.O. aus. (Bluetooth Adressen wurden hier anonymisiert):

I (1970-01-01 00:00:01) LOG: Free Space total=836081, used=42168, logSize=0
I (1970-01-01 00:00:01) MAIN: BSC V0.6.0
I (1970-01-01 00:00:01) MAIN: bootCounter=1
I (1970-01-01 00:00:01) MAIN: HW: 0
I (1970-01-01 00:00:01) MAIN: Free Heap: 197056
I (1970-01-01 00:00:01) WEB_SETTINGS: Free flash entries: 560
I (1970-01-01 00:00:01) WEB_SETTINGS: Kein Parameterfile vorhanden
I (1970-01-01 00:00:01) WEB_SETTINGS: writeConfig(): file not exist
I (1970-01-01 00:00:07) MAIN: Free Heap: 188808
I (1970-01-01 00:00:07) MAIN: Hostname: bsc
I (1970-01-01 00:00:07) MAIN: Init WLAN...
I (1970-01-01 00:00:07) MAIN: Init BLE...
I (1970-01-01 00:00:07) BSC_SERIAL: initSerial SerialNr=0, funktionsTyp=0
I (1970-01-01 00:00:07) BSC_SERIAL: initSerial SerialNr=1, funktionsTyp=0
I (1970-01-01 00:00:07) MAIN: Open Wifi AP
I (1970-01-01 00:00:07) Inverter: Load inverter settings(): dataSrc=0, dataSrcAdd=0
I (1970-01-01 00:00:07) Canbus: TWAI START: ESP_OK
I (1970-01-01 00:00:07) I2C: Display not found (2)
I (1970-01-01 00:00:07) I2C: Slave 0 (Adr=16) not found (2)
I (1970-01-01 00:00:07) I2C: Slave 1 (Adr=17) not found (2)
I (1970-01-01 00:00:07) I2C: Serial Ext. not found (2)
I (1970-01-01 00:00:07) BSC_SERIAL: initSerial SerialNr=2, funktionsTyp=0
I (1970-01-01 00:00:07) MAIN: Free Heap: 136060
I (1970-01-01 00:00:07) BSC_SERIAL: initSerial SerialNr=3, funktionsTyp=0
I (1970-01-01 00:00:07) BSC_SERIAL: initSerial SerialNr=4, funktionsTyp=0
I (1970-01-01 00:00:07) BSC_SERIAL: initSerial SerialNr=5, funktionsTyp=0
I (1970-01-01 00:00:07) BSC_SERIAL: initSerial SerialNr=6, funktionsTyp=0
I (1970-01-01 00:00:07) BSC_SERIAL: initSerial SerialNr=7, funktionsTyp=0
I (1970-01-01 00:00:07) BSC_SERIAL: initSerial SerialNr=8, funktionsTyp=0
I (1970-01-01 00:00:07) BSC_SERIAL: initSerial SerialNr=9, funktionsTyp=0
I (1970-01-01 00:00:07) BSC_SERIAL: initSerial SerialNr=10, funktionsTyp=0
I (1970-01-01 00:00:07) MAIN: WIFI ready (0)
I (1970-01-01 00:00:07) MAIN: WIFI AP start (10)
I (1970-01-01 00:00:07) MAIN: WIFI AP stop (11)
I (1970-01-01 00:00:07) MAIN: WIFI AP start (10)
I (1970-01-01 00:00:07) MAIN: Init BLE...ok
I (1970-01-01 00:00:26) MAIN: WIFI event: 12
I (1970-01-01 00:00:28) MAIN: WIFI event: 14
I (1970-01-01 00:04:10) ALARM: Trigger 1, value 0 -
I (1970-01-01 00:04:10) ALARM: Trigger 2, value 0 -
I (1970-01-01 00:04:10) ALARM: Trigger 3, value 0 -
I (1970-01-01 00:04:10) ALARM: Trigger 4, value 0 -
I (1970-01-01 00:04:10) ALARM: Trigger 5, value 0 -
I (1970-01-01 00:04:10) ALARM: Trigger 6, value 0 -
I (1970-01-01 00:04:10) ALARM: Trigger 7, value 0 -
I (1970-01-01 00:04:10) ALARM: Trigger 8, value 0 -
I (1970-01-01 00:04:10) ALARM: Trigger 9, value 0 -
I (1970-01-01 00:04:10) ALARM: Trigger 10, value 0 -
I (1970-01-01 00:04:21) ALARM: Trigger 1, value 0 -
I (1970-01-01 00:04:21) ALARM: Trigger 2, value 0 -
I (1970-01-01 00:04:21) ALARM: Trigger 3, value 0 -
I (1970-01-01 00:04:21) ALARM: Trigger 4, value 0 -
I (1970-01-01 00:04:21) ALARM: Trigger 5, value 0 -
I (1970-01-01 00:04:21) ALARM: Trigger 6, value 0 -
I (1970-01-01 00:04:21) ALARM: Trigger 7, value 0 -
I (1970-01-01 00:04:21) ALARM: Trigger 8, value 0 -
I (1970-01-01 00:04:21) ALARM: Trigger 9, value 0 -
I (1970-01-01 00:04:21) ALARM: Trigger 10, value 0 -
I (1970-01-01 00:08:13) ALARM: Trigger 1, value 0 -
I (1970-01-01 00:08:13) ALARM: Trigger 2, value 0 -
I (1970-01-01 00:08:13) ALARM: Trigger 3, value 0 -
I (1970-01-01 00:08:13) ALARM: Trigger 4, value 0 -
I (1970-01-01 00:08:13) ALARM: Trigger 5, value 0 -
I (1970-01-01 00:08:13) ALARM: Trigger 6, value 0 -
I (1970-01-01 00:08:13) ALARM: Trigger 7, value 0 -
I (1970-01-01 00:08:13) ALARM: Trigger 8, value 0 -
I (1970-01-01 00:08:13) ALARM: Trigger 9, value 0 -
I (1970-01-01 00:08:13) ALARM: Trigger 10, value 0 -
I (1970-01-01 00:08:19) BLE_HANDLER: onConnect() c8:47:80:0d:xx:xx
I (1970-01-01 00:08:20) BLE_HANDLER: Device connected; dev=0

I (1970-01-01 00:08:25) ALARM: Trigger 1, value 0 -
I (1970-01-01 00:08:25) ALARM: Trigger 2, value 0 -
I (1970-01-01 00:08:25) ALARM: Trigger 3, value 0 -
I (1970-01-01 00:08:25) ALARM: Trigger 4, value 0 -
I (1970-01-01 00:08:25) ALARM: Trigger 5, value 0 -
I (1970-01-01 00:08:25) ALARM: Trigger 6, value 0 -
I (1970-01-01 00:08:25) ALARM: Trigger 7, value 0 -
I (1970-01-01 00:08:25) ALARM: Trigger 8, value 0 -
I (1970-01-01 00:08:25) ALARM: Trigger 9, value 0 -
I (1970-01-01 00:08:25) ALARM: Trigger 10, value 0 -
I (1970-01-01 00:08:27) ALARM: Trigger 1, value 0 -
I (1970-01-01 00:08:27) ALARM: Trigger 2, value 0 -
I (1970-01-01 00:08:27) ALARM: Trigger 3, value 0 -
I (1970-01-01 00:08:27) ALARM: Trigger 4, value 0 -
I (1970-01-01 00:08:27) ALARM: Trigger 5, value 0 -
I (1970-01-01 00:08:27) ALARM: Trigger 6, value 0 -
I (1970-01-01 00:08:27) ALARM: Trigger 7, value 0 -
I (1970-01-01 00:08:27) ALARM: Trigger 8, value 0 -
I (1970-01-01 00:08:27) ALARM: Trigger 9, value 0 -
I (1970-01-01 00:08:27) ALARM: Trigger 10, value 0 -
I (1970-01-01 00:00:00) LOG: Free Space total=836081, used=61746, logSize=4994
I (1970-01-01 00:00:00) MAIN: BSC V0.6.0
I (1970-01-01 00:00:00) MAIN: bootCounter=1
I (1970-01-01 00:00:00) MAIN: HW: 0
I (1970-01-01 00:00:00) MAIN: Free Heap: 195768
I (1970-01-01 00:00:00) WEB_SETTINGS: Free flash entries: 199
I (1970-01-01 00:00:00) WEB_SETTINGS: Settings ok
I (1970-01-01 00:00:02) MAIN: Free Heap: 188976
I (1970-01-01 00:00:02) MAIN: Hostname: bsc
I (1970-01-01 00:00:02) MQTT: MQTT: ip=192.168.19.7, port=1883
I (1970-01-01 00:00:02) MAIN: Init WLAN...
I (1970-01-01 00:00:02) MAIN: Init BLE...
I (1970-01-01 00:00:02) MAIN: Verbindung zu NoSignal
I (1970-01-01 00:00:02) BSC_SERIAL: initSerial SerialNr=0, funktionsTyp=0
I (1970-01-01 00:00:02) Inverter: Load inverter settings(): dataSrc=0, dataSrcAdd=0
I (1970-01-01 00:00:02) Canbus: TWAI START: ESP_OK
I (1970-01-01 00:00:02) BSC_SERIAL: initSerial SerialNr=1, funktionsTyp=0
I (1970-01-01 00:00:02) I2C: Display not found (2)
I (1970-01-01 00:00:02) I2C: Slave 0 (Adr=16) not found (2)
I (1970-01-01 00:00:02) I2C: Slave 1 (Adr=17) not found (2)
I (1970-01-01 00:00:02) I2C: Serial Ext. not found (2)
I (1970-01-01 00:00:02) BSC_SERIAL: initSerial SerialNr=2, funktionsTyp=0
I (1970-01-01 00:00:02) BSC_SERIAL: initSerial SerialNr=3, funktionsTyp=0
I (1970-01-01 00:00:02) BSC_SERIAL: initSerial SerialNr=4, funktionsTyp=0
I (1970-01-01 00:00:02) BSC_SERIAL: initSerial SerialNr=5, funktionsTyp=0
I (1970-01-01 00:00:02) BSC_SERIAL: initSerial SerialNr=6, funktionsTyp=0
I (1970-01-01 00:00:02) BSC_SERIAL: initSerial SerialNr=7, funktionsTyp=0
I (1970-01-01 00:00:02) BSC_SERIAL: initSerial SerialNr=8, funktionsTyp=0
I (1970-01-01 00:00:02) BSC_SERIAL: initSerial SerialNr=9, funktionsTyp=0
I (1970-01-01 00:00:02) BSC_SERIAL: initSerial SerialNr=10, funktionsTyp=0
I (1970-01-01 00:00:02) MAIN: Free Heap: 145252
I (1970-01-01 00:00:02) MAIN: WIFI ready (0)
I (1970-01-01 00:00:03) MAIN: WIFI STA start (2)
I (1970-01-01 00:00:03) MAIN: Init BLE...ok
I (1970-01-01 00:00:05) MAIN: WIFI STA connected (4)
I (1970-01-01 00:00:06) MAIN: WIFI STA got IP (7)
I (1970-01-01 00:00:07) MAIN: IP-Adresse = 192.168.19.98
I (1970-01-01 00:00:09) TIME: Init NTP (NAME): server=pool.ntp.org
I (2024-05-31 14:24:33) MAIN: Time: 2024-05-31 14:24:33
I (2024-05-31 14:24:38) BLE_HANDLER: onConnect() c8:47:80:0d:xx:xx
I (2024-05-31 14:24:39) BLE_HANDLER: Device connected; dev=0
I (2024-05-31 14:24:40) BLE_HANDLER: onConnect() c8:47:80:0d:xx:xx
I (2024-05-31 14:24:42) BLE_HANDLER: Device connected; dev=1

I (2024-05-31 14:24:44) MQTT: Daten von allen BMS's vorhanden. Das Senden kann starten.
I (2024-05-31 14:24:46) MQTT: MQTT Broker connected
I (2024-05-31 14:29:00) ALARM: Trigger 1, value 0 -
I (2024-05-31 14:29:00) ALARM: Trigger 2, value 0 -
I (2024-05-31 14:29:00) ALARM: Trigger 3, value 0 -
I (2024-05-31 14:29:00) ALARM: Trigger 4, value 0 -
I (2024-05-31 14:29:00) ALARM: Trigger 5, value 0 -
I (2024-05-31 14:29:00) ALARM: Trigger 6, value 0 -
I (2024-05-31 14:29:00) ALARM: Trigger 7, value 0 -
I (2024-05-31 14:29:00) ALARM: Trigger 8, value 0 -
I (2024-05-31 14:29:00) ALARM: Trigger 9, value 0 -
I (2024-05-31 14:29:00) ALARM: Trigger 10, value 0 -
I (2024-05-31 14:29:04) ALARM: Trigger 1, value 0 -
I (2024-05-31 14:29:04) ALARM: Trigger 2, value 0 -
I (2024-05-31 14:29:04) ALARM: Trigger 3, value 0 -
I (2024-05-31 14:29:04) ALARM: Trigger 4, value 0 -
I (2024-05-31 14:29:04) ALARM: Trigger 5, value 0 -
I (2024-05-31 14:29:04) ALARM: Trigger 6, value 0 -
I (2024-05-31 14:29:04) ALARM: Trigger 7, value 0 -
I (2024-05-31 14:29:04) ALARM: Trigger 8, value 0 -
I (2024-05-31 14:29:04) ALARM: Trigger 9, value 0 -
I (2024-05-31 14:29:04) ALARM: Trigger 10, value 0 -
I (2024-05-31 14:30:44) Inverter: Load inverter settings(): dataSrc=0, dataSrcAdd=0
I (2024-05-31 14:30:46) Inverter: Load inverter settings(): dataSrc=0, dataSrcAdd=0
I (2024-05-31 14:30:48) Inverter: Load inverter settings(): dataSrc=0, dataSrcAdd=0

Habe ich etwas übersehen? Das JK Inverter Model unterscheidet sich evtl. auch vom Protokoll, da es nicht unter den supporteten Devices gelistet ist. Kann ich hier evtl. etwas beitragen?

@a-wolter a-wolter changed the title Keine Bluetooth Daten für JK Inverter BMS Support für JK Inverter BMS May 31, 2024
@tanelvakker
Copy link
Contributor

You can use the new ones over RS485 first port.
UART1 Protocol No.: 0 (4G-GPS Remote module). Normal JK-BMS in BSC settings
Dip switch address needs to be 0

@a-wolter
Copy link
Author

a-wolter commented Jun 4, 2024

BMS.RS485.Modbus.V1.0.pdf

Translated by Deepl:
BMS.RS485.Modbus.V1.0 en.pdf

Evtl hilft das, zumindest für die Kommunikation über Kabel?

@shining-man
Copy link
Owner

Wenn das für das JK Inverter BMS ist, dann schaut es auf den ersten Blick brauchbar aus.
Vielleicht findet noch jemand ein direkt Englisches Dokument, das schöner (lesbarer) ist.
Immer diese chinesischen Dokumente. Warum machen die das nicht einfach auf Englisch?

@D3R-ST3FAN
Copy link

D3R-ST3FAN commented Jun 16, 2024

Es gibt ja einen Fork vom esphome-jk-bms wo die Unterstützung für das JK Inverter BMS via RS485 und BT schon funktioniert.
Ich bin jetzt nicht so der Entwickler aber das hier aus dem Fork sieht interessant aus.

@shining-man
Copy link
Owner

Ich bin dabei, das ganze nach dem Protokoll zu implementieren. Das ist mir immer lieber, als es irgendwo abzuschreiben.
Gerade wenn es ans Fehler suchen geht, ist es einfacher. Dennoch Danke für die Infos.

@MeisterQ
Copy link

Ich bin dabei, das ganze nach dem Protokoll zu implementieren. Das ist mir immer lieber, als es irgendwo abzuschreiben. Gerade wenn es ans Fehler suchen geht, ist es einfacher. Dennoch Danke für die Infos.

Sehe ich das richtig, dass das BMS Modbus RTU spricht? Zumindest laut dem Übersetzen Dokument oben wird von Holding Registern und Function Codes gesprochen.

Woher nimmst du deine Infos zum Implementieren? Hast du da weitere Dokumente?

@tanelvakker
Copy link
Contributor

@shining-man do you have new jk-bms hardware to test this on? I could send you one if needed

@shining-man
Copy link
Owner

@MeisterQ Im Dokument steht eigentlich alles drin. Mehr Infos brauche ich nicht.

@tanelvakker Thanks for the offer. I don't have one, but I don't rent equipment anymore. If something breaks, that's a big problem.

@MeisterQ
Copy link

@MeisterQ Im Dokument steht eigentlich alles drin. Mehr Infos brauche ich nicht.

@tanelvakker Thanks for the offer. I don't have one, but I don't rent equipment anymore. If something breaks, that's a big problem.

Welches Dokument genau?

@shining-man
Copy link
Owner

@MeisterQ Das oben angehängte: #118 (comment)

@MeisterQ
Copy link

MeisterQ commented Jun 19, 2024

@shining-man Ich habe mal einen Terminal Mitschnitt laufen lassen wenn man mit dem JK BMS Monitor die Livedaten abfragt:

Vom Tool wird gesendet: 0x01 0x10 0x16 0x20 0x00 0x01 0x02 0x00 0x00 0xD6 0xF1

Als Antwort kommt: 55 AA EB 90 02 05 FF 0C 01 0D 03 0D FF 0C FA 0C 04 0D 03 0D 05 0D 01 0D 06 0D 03 0D 00 0D 05 0D 03 0D 00 0D 03 0D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 FF FF 00 00 02 0D 0B 00 09 04 33 00 35 00 40 00 43 00 4E 00 58 00 67 00 74 00 79 00 71 00 68 00 65 00 5B 00 45 00 41 00 35 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 CF 00 00 00 00 00 1E D0 00 00 02 E7 00 00 56 04 00 00 D4 00 D9 00 00 00 08 00 00 00 00 45 89 F0 02 00 C0 45 04 00 01 00 00 00 1B 95 04 00 64 00
00 00 7A EA 03 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 00 01 00 00 00 9D 03 03 00 00 00 88 1F 40 40 00 00 00 00 CF 14 00 00 00 01 00 01 00 06 00 00 74 FB 0D 00 00 00 00 00 CF 00
D4 00 DA 00 9D 03 9C 80 67 08 32 00 00 00 80 51 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FE FF 7F DC 2F 01 01 B0 07 00 00 00 E6
01 10 16 20 00 01 04 4B

Nur passt das nicht zum Protokoll Blatt oben.

Vielleicht hilft das auch noch.

Hast du schon ein File online wo das Auslesen drin ist?

@shining-man
Copy link
Owner

shining-man commented Jun 30, 2024

@MeisterQ Danke für den Mittschnitt. Ist das das einzige Telegramm, dass die Software zum BMS sendet?

Die Antwort die zurück kommt, schaut für mich nicht nach einer Modbus Antwort aus.
Kannst du mit einem Modbus Tool (z.B. Modbus Poll) einmal versuchen eine Abfrage entsprechend dem Protocoll zu machen? Das sehen wir ob eine Antwort kommt.

@MeisterQ
Copy link

MeisterQ commented Jun 30, 2024

@MeisterQ Danke für den Mittschnitt. Ist das das einzige Telegramm, dass die Software zum BMS sendet?

Die Antwort die zurück kommt, schaut für mich nicht nach einer Modbus Antwort aus. Kannst du mit einem Modbus Tool (z.B. Modbus Poll) einmal versuchen eine Abfrage entsprechend dem Protocoll zu machen? Das sehen wir ob eine Antwort kommt.

Ja das ist wenn man auf der "Livedaten" Seite vom BMS ist. Ich denke das ist das "Standard GPS Protokoll" was man am BMS für den 485 Port auswählen kann.

Für Modbus muss man Protokoll 1 (Modbus V1.0) Auswählen.

Das habe ich mal mit qmodmaster versucht auszulesen.

Das ist das Ergebnis:

grafik

Das ist ganz brauchbar. Da kommt alles zurück was auch im Protokoll Dokument steht. Man ließt ab 0x1200 123 Register aus und kann dann von 0 - 123 alle Daten abfragen.

@shining-man
Copy link
Owner

Hier wäre eine erste Testversion zum prinzipiellen Funktionstest:
firmware_V0.6.1_T2.bin.zip

@MeisterQ
Copy link

MeisterQ commented Jul 1, 2024

Hier wäre eine erste Testversion zum prinzipiellen Funktionstest: firmware_V0.6.1_T2.bin.zip

Ich kann es leider nicht testen, da meine Hardware nicht zu den Pins vom BSC passt.
Aber @a-wolter vielleicht?

shining-man added a commit that referenced this issue Jul 3, 2024
@shining-man
Copy link
Owner

@MeisterQ Welchen Port vom JK hast du für die Kommunikation genutzt, und was hast du dazu im BMS eingestellt?

@Ximerox
Copy link

Ximerox commented Jul 20, 2024

Hier wäre eine erste Testversion zum prinzipiellen Funktionstest: firmware_V0.6.1_T2.bin.zip

Hab die Firmware getestet. Aber nun erhalte ich gar keine Daten mehr vom BMS (JK Inverter BMS).
Mir ist auch noch aufgefallen, dass die Werte für SoC beim JK Inverter BMS nicht korrekt übertragen werden. BSM zeigt 100% an und im BSC geht der SoC immer weiter runter, ohne dass sich am Ladezustand des Akkus etwas ändert.

@MeisterQ
Copy link

@MeisterQ Welchen Port vom JK hast du für die Kommunikation genutzt, und was hast du dazu im BMS eingestellt?

Auf dem Kommunikationsboard ganz rechts die 2 RS485 Ports sind dafür da. Zusätzlich muss das BMS auf ID 1 stehen, also der erste Dip Schalter auf Ein, ODER je nach BMS was du auslesen willst, die Modbus UID auf die Zahl stellen, worauf das BMS mit den DIP konfiguriert ist.

shining-man added a commit that referenced this issue Dec 6, 2024
@shining-man
Copy link
Owner

The change/extension is included in version 0.7.0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants