Hello!
I have four JK BMS (JK-PB2A16S-15P) running v15.30. First one has DIP switches set to 0 (master), others at 1, 2 and 3. All BMS are inter-connected through the RS485-2 ports and when using my RS485 adaptor connected on a free RS485-2 port of any of the BMS, I can see stats for all four BMS.
I've written 2 programs:
For both programs, the RS485 adaptor was connected in the JK BMS RS485-1 port. Here are some observations and questions:
My goal is to be able to read settings from all four BMS. I know I could decode the broadcasted traffic on the RS485-2 ports like the Windows app does or like esphome-jk-bms does (https://github.com/txubelaxu/esphome-jk-bms/tree/main/components/jk_rs485_sniffer) but I would rather not to.
Maybe an other solution is to use a 4-channel RS485 adaptor like this https://www.amazon.ca/gp/product/B0CLXSR2ZP/?th=1 ?
Thanks!
I have four JK BMS (JK-PB2A16S-15P) running v15.30. First one has DIP switches set to 0 (master), others at 1, 2 and 3. All BMS are inter-connected through the RS485-2 ports and when using my RS485 adaptor connected on a free RS485-2 port of any of the BMS, I can see stats for all four BMS.
I've written 2 programs:
- the first program uses the 4G-GPS protocol (id 000) on RS485-1 and I can read individual settings/stats or ask for all of them while sending serial commands over RS485
- the second program uses the JK BMS RS485 Modbus V1.0 (id 001) and I can read individual settings while sending modbus commands over RS485
For both programs, the RS485 adaptor was connected in the JK BMS RS485-1 port. Here are some observations and questions:
- both programs only work with the data in which JK BMS RS485-1 port the adaptor is connected to. I would assume that with the 2nd program, I could have access to the whole modbus network and set the slave ID accordingly (0..3) to read any BMS's data but no, not the case
- I know RS485-1 is for inverter communications, but connecting in the master BMS (id = 0) doesn't show any "aggregated/averaged" values, it shows the values of the first BMS, seems wrong to me when reporting data to an inverter...
- RS485-2 seem to use a proprietary modbus version from JK. I used a sniffer and tons of data is broadcasted on it, coming from all four BMS. It's very aligned to how the Windows app works, being a listener of that data and display only what it gets. Sending modbus commands on those ports result in bogus replies (ie., you can get a broadcasted value instead of what you requested for ...)
My goal is to be able to read settings from all four BMS. I know I could decode the broadcasted traffic on the RS485-2 ports like the Windows app does or like esphome-jk-bms does (https://github.com/txubelaxu/esphome-jk-bms/tree/main/components/jk_rs485_sniffer) but I would rather not to.
Maybe an other solution is to use a 4-channel RS485 adaptor like this https://www.amazon.ca/gp/product/B0CLXSR2ZP/?th=1 ?
Thanks!