12-06-2025, 02:12 PM (Modification du message : 12-06-2025, 07:23 PM par jlm.)
I am pleased to announce the release of a new Home Assistant add-on dedicated to managing JKong BMSs via a wired RS485 connection.
And as usual, it remains free of charge.(The source code is available on theGithub)
This module allows you to supervise and centralize the monitoring of several JK-BMS (up to 15) directly from your Home Assistant installation.
This can be done without the need for multiple specific hardware modules. Only RJ45 cables are required.
Main features :
Multi-BMS compatibility: simultaneous support for multiple JKong models (PBA16S20P, PB2A16S15P, PB1A16S15P, PB1A16S10P) connected to a single RS485 bus.
Seamless integration with Home Assistant: simple configuration via the interface with automatic creation of entities for each BMS in Home Assistant
MQTT interoperability: all collected data is published on an MQTT broker (of your choice), allowing it to be used in other home automation solutions such as Jeedom.
Preconfigured dashboards: Two ready-to-import dashboards are available for quickly viewing essential information without having to go through a long and tedious configuration process. A contribution is requested for these.
Easy installation: add the GitHub repository, install via the add-on store, configure the main settings (USB port, number of BMS, MQTT access), and the module is up and running in minutes..
Distinctive features:
Unlike current solutions that require one ESP32 module per BMS, this module allows centralized, wired management of all your JKong BMSs from a single Home Assistant add-on, for simpler and more reliable installation.
Recommended use:
This module is intended for all users who wish to effectively monitor multiple JKong BMSs in a Home Assistant environment, while limiting hardware and prioritizing the stability of the RS485 connection.
Demonstration video:
To go further and start the installation:
GitHub repository for installation and documentation :
Code :
https://github.com/jean-luc1203/jkbms-rs485-addon
For support and discussions: via the forum (preferred) or GitHub issues.
If you would like to help me by supporting my work to provide free software and support this forum and videos, click here.
Thank you very much.
Please feel free to share your feedback or contribute to improving the module with your comments and ideas..
Screenshots:
4 JK-BMS in serial:
Jean-Luc
The following 1 user Likes jlm's post:1 user Likes jlm's post • frajar
21-10-2025, 01:29 PM (Modification du message : 21-10-2025, 02:24 PM par Courage2000.)
It is a great add-on.
Thank you
I've paid 7 euros for the templates; some observations:
1. You need to improve the installation documentation.
2. bar-card is obsolete; you can use this repository (fork): https://github.com/spacerokk/bar-card/
3. I did not understand what to do with the info from "Up Time Template".
I do not know where to put that "time" code.
3. 12079963 seconds uptime? 139 days
How, my first BMS boot up was 2 months ago...
27-10-2025, 11:35 AM (Modification du message : 27-10-2025, 11:36 AM par jlm.)
(21-10-2025, 01:29 PM)Courage2000 a écrit : It is a great add-on.
Thank you
I've paid 7 euros for the templates; some observations:
1. You need to improve the installation documentation.
2. bar-card is obsolete; you can use this repository (fork): https://github.com/spacerokk/bar-card/
3. I did not understand what to do with the info from "Up Time Template".
I do not know where to put that "time" code.
3. 12079963 seconds uptime? 139 days
How, my first BMS boot up was 2 months ago...
Full or lite templates all have problems
It is a great add-on.
Thank you
Sorry for the delay, I was on vacation.
So where does the documentation need to be improved.
I need feedback to improve it.
Regarding templates, they're useful for creating sensors in HA to calculate values
For example, in our case, the number of months-days-minutes that the BMS started for the 1st time.
So I think you'll like it.
I modified the code yesterday so that the module provides you with a ready-made sensor. It's called :
Code :
sensor.bms_1_total_runtime_formatted
So, can you update to v3.1.10
You can then simply replace the current sensor in your dashboard with the new one.
As simple as that
Concerning the 'Bar code' card, I recently replaced it with the
03-11-2025, 12:13 AM (Modification du message : 03-11-2025, 12:37 AM par Courage2000.)
I've deleted the addon, deleted mqtt data etc.
Same problems; is like the latest updated don't work.
(02-11-2025, 11:53 PM)jlm a écrit : Can you show me the module configuration YAML?
I think I understand. Are you in broadcasting mode? A master battery 0000?
Master BMS ID 0.
Master BMS Connected via CAN (Victron protocol) to Victron Cerbo GX.
I use an external MQTT Server (lan)
It's clear now. My add-on contains three parts. One for the no BMS master mode.
The other is a BMS master mode, which I called broadcasting, and the third is the CAN connection.
Right now, my efforts are focused on the first mode. I'm currently finishing up the alarm management.
As soon as that goes into production, I'll take care of the second part, which is the one you use.
That will be towards the end of the week if everything goes well with my alarms.
Jean-Luc
The following 1 user Likes jlm's post:1 user Likes jlm's post • frajar
04-11-2025, 10:11 PM (Modification du message : 04-11-2025, 10:16 PM par rookieuser.)
Took me me sometime , ik have ordered a rs485-wifi TCP on Alie. Its is working.
Same question here after update the 2 lines in the update are not there, do we have to do this manually?
binary_sensor.bms_x_bms_alarm_active
sensor.bms_1_bms_1_alarm_list
Iám Dutch so no Français only bad English.
( Took me some time to find out that SOC_pourcentage means SOC percentage and Courant Total means Current total)
Took me me sometime , ik have ordered a rs485-wifi TCP on Alie. Its is working.
Same question here after update the 2 lines in the update are not there, do we have to do this manually?
binary_sensor.bms_x_bms_alarm_active
sensor.bms_1_bms_1_alarm_list
Iám Dutch so no Français only bad English.
( Took me some time to find out that SOC_pourcentage means SOC percentage and Courant Total means Current total)
05-11-2025, 10:32 AM (Modification du message : 05-11-2025, 10:33 AM par Smukc91.)
Hi my integration stoped working today after 3.2 update i got this error when i look in log files
5 Nov 09:17:47 - [info] serial port /dev/JKBMS-Fake closed
5 Nov 09:17:47 - [error] [serialconfig:6e1abcbcc6ebb714] serial port /dev/ttyUSB0 error: Error: Error Resource temporarily unavailable Cannot lock port
5 Nov 09:17:48 - [info] [mqtt-broker:56f7b2737cce493b] Connected to broker: mqtt://core-mosquitto.local.hass.io:1883
5 Nov 09:22:02 - [info] [serialconfig:6e1abcbcc6ebb714] serial port /dev/ttyUSB0 opened at 115800 baud 8N1
5 Nov 09:17:47 - [info] [function:traitement des variables] Variable globale 'mqttpass' = •••••••••
5 Nov 09:17:47 - [info] serial port /dev/JKBMS-Fake closed
5 Nov 09:17:47 - [error] [serialconfig:6e1abcbcc6ebb714] serial port /dev/ttyUSB0 error: Error: Error Resource temporarily unavailable Cannot lock port
5 Nov 09:17:48 - [info] [mqtt-broker:56f7b2737cce493b] Connected to broker: mqtt://core-mosquitto.local.hass.io:1883
5 Nov 09:22:02 - [info] [serialconfig:6e1abcbcc6ebb714] serial port /dev/ttyUSB0 opened at 115800 baud 8N1
Hi my integration stopped working today after 3.2 update i got this error when i look in log files
5 Nov 09:17:47 - [info] serial port /dev/JKBMS-Fake closed
5 Nov 09:17:47 - [error] [serialconfig:6e1abcbcc6ebb714] serial port /dev/ttyUSB0 error: Error: Error Resource temporarily unavailable Cannot lock port
5 Nov 09:17:48 - [info] [mqtt-broker:56f7b2737cce493b] Connected to broker: mqtt://core-mosquitto.local.hass.io:1883
5 Nov 09:22:02 - [info] [serialconfig:6e1abcbcc6ebb714] serial port /dev/ttyUSB0 opened at 115800 baud 8N1
5 Nov 09:17:47 - [info] [function:variable processing] Global variable 'mqttpass' = •••••••••
5 Nov 09:17:47 - [info] serial port /dev/JKBMS-Fake closed
5 Nov 09:17:47 - [error] [serialconfig:6e1abcbcc6ebb714] serial port /dev/ttyUSB0 error: Error: Error Resource temporarily unavailable Cannot lock port
5 Nov 09:17:48 - [info] [mqtt-broker:56f7b2737cce493b] Connected to broker: mqtt://core-mosquitto.local.hass.io:1883
5 Nov 09:22:02 - [info] [serialconfig:6e1abcbcc6ebb714] serial port /dev/ttyUSB0 opened at 115800 baud 8N1
(05-11-2025, 10:32 AM)Smukc91 a écrit : Hi my integration stopped working today after 3.2 update i got this error when i look in log files
5 Nov 09:17:47 - [info] serial port /dev/JKBMS-Fake closed
5 Nov 09:17:47 - [error] [serialconfig:6e1abcbcc6ebb714] serial port /dev/ttyUSB0 error: Error: Error Resource temporarily unavailable Cannot lock port
5 Nov 09:17:48 - [info] [mqtt-broker:56f7b2737cce493b] Connected to broker: mqtt://core-mosquitto.local.hass.io:1883
5 Nov 09:22:02 - [info] [serialconfig:6e1abcbcc6ebb714] serial port /dev/ttyUSB0 opened at 115800 baud 8N1
5 Nov 09:17:47 - [info] [function:variable processing] Global variable 'mqttpass' = •••••••••
5 Nov 09:17:47 - [info] serial port /dev/JKBMS-Fake closed
5 Nov 09:17:47 - [error] [serialconfig:6e1abcbcc6ebb714] serial port /dev/ttyUSB0 error: Error: Error Resource temporarily unavailable Cannot lock port
5 Nov 09:17:48 - [info] [mqtt-broker:56f7b2737cce493b] Connected to broker: mqtt://core-mosquitto.local.hass.io:1883
5 Nov 09:22:02 - [info] [serialconfig:6e1abcbcc6ebb714] serial port /dev/ttyUSB0 opened at 115800 baud 8N1
Hi my integration stopped working today after 3.2 update i got this error when i look in log files
5 Nov 09:17:47 - [info] serial port /dev/JKBMS-Fake closed
5 Nov 09:17:47 - [error] [serialconfig:6e1abcbcc6ebb714] serial port /dev/ttyUSB0 error: Error: Error Resource temporarily unavailable Cannot lock port
5 Nov 09:17:48 - [info] [mqtt-broker:56f7b2737cce493b] Connected to broker: mqtt://core-mosquitto.local.hass.io:1883
5 Nov 09:22:02 - [info] [serialconfig:6e1abcbcc6ebb714] serial port /dev/ttyUSB0 opened at 115800 baud 8N1
5 Nov 09:17:47 - [info] [function:variable processing] Global variable 'mqttpass' = •••••••••
5 Nov 09:17:47 - [info] serial port /dev/JKBMS-Fake closed
5 Nov 09:17:47 - [error] [serialconfig:6e1abcbcc6ebb714] serial port /dev/ttyUSB0 error: Error: Error Resource temporarily unavailable Cannot lock port
5 Nov 09:17:48 - [info] [mqtt-broker:56f7b2737cce493b] Connected to broker: mqtt://core-mosquitto.local.hass.io:1883
5 Nov 09:22:02 - [info] [serialconfig:6e1abcbcc6ebb714] serial port /dev/ttyUSB0 opened at 115800 baud 8N1
So let me answer this aparently there was home assistant update also and that changed usb port config ? i had to replace old usb path with new one and now it works ?!
The following 1 user Likes Smukc91's post:1 user Likes Smukc91's post • jlm
Hello!
I'm trying to set it up with an Elfin IP Gateway and I cannot get it to work.
I am confident the Elfin is connected to the JK BMS (PB2A16S30P v19) and working properly, because this alternative project (https://github.com/luisgonzalezgonzalez/jkbms_mqtt) is successfully pulling the data from the Elfin (this is coming in from this alternative tool).
I wish to use your tool because I am going to have 4 parallel batteries soon with a master/slave.
15-11-2025, 11:01 AM (Modification du message : 15-11-2025, 11:08 AM par jlm.)
(14-11-2025, 10:53 PM)thorium a écrit : Hello!
I'm trying to set it up with an Elfin IP Gateway and I cannot get it to work.
I am confident the Elfin is connected to the JK BMS (PB2A16S30P v19) and working properly, because this alternative project (https://github.com/luisgonzalezgonzalez/jkbms_mqtt) is successfully pulling the data from the Elfin (this is coming in from this alternative tool).
I wish to use your tool because I am going to have 4 parallel batteries soon with a master/slave.
14 Nov 14:46:24 - [info] Node-RED version: v4.1.1
14 Nov 14:46:24 - [info] Node.js version: v22.16.0
14 Nov 14:46:24 - [info] Linux 6.12.51-haos x64 LE
14 Nov 14:46:25 - [info] Loading palette nodes
14 Nov 14:46:29 - [info] Settings file : /etc/node-red/config.js
14 Nov 14:46:29 - [info] Context store : 'default' [module=localfilesystem]
14 Nov 14:46:30 - [info] User directory : /config/smartphoton_jkbms/
14 Nov 14:46:30 - [warn] Projects disabled : editorTheme.projects.enabled=false
14 Nov 14:46:30 - [info] Flows file : /config/smartphoton_jkbms/flows.json
14 Nov 14:46:30 - [warn] Encrypted credentials not found
14 Nov 14:46:30 - [info] Server now running at http://127.0.0.1:1891/
14 Nov 14:46:30 - [info] Starting flows
14 Nov 14:46:30 - [info] Started flows
14 Nov 14:46:30 - [error] [serialconfig:6e1abcbcc6ebb714] serial port /dev/JKBMS-Fake error: Error: Error: No such file or directory, cannot open /dev/JKBMS-Fake
14 Nov 14:46:30 - [info] [mqtt-broker:56f7b2737cce493b] Connection failed to broker: mqtt://core-mosquitto.local.hass.io:1883
14 Nov 14:46:31 - [info] [function:traitement des variables] Champ 'gateway_ip_port' traité: 192.168.1.93:502
14 Nov 14:46:31 - [info] [function:traitement des variables] Champ 'mqttadresse_port' traité: 192.168.1.96:1883
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'path' = 192.168.1.93:502
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'nb_jkbms' = 1
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'use_gateway' = true
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'gateway_ip' = 192.168.1.93
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'gateway_port' = 502
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'communication_debug' = true
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'bms_broadcasting' = false
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'CAN_bus_usage' = false
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'mqttadresse' = 192.168.1.96
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'mqttport' = 1883
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'mqttuser' = mqtt
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'mqttpass' = •••••••••
14 Nov 14:46:35 - [info] [mqtt-broker:56f7b2737cce493b] Connected to broker: mqtt://192.168.1.96:1883
Bonjour,
Alors vu que tu utilises une passerelle, pas besoin de modifier le jkbms_pathpar défaut. Mais c'est pas important.
Peux-tu vérifier que tu es bien à la dernière version d'hier v3.3.3 C'est important, car j'ai amené beaucoup de modifications concernant les passerelles IP
Peux-tu installer et utiliser l'application serial wifi terminal pour vérifier qu'il y a bien un dialogue régulier entre le module et la passerelle
Agrandir le buffer dédié dans la configuration du Elfin. Par contre tu ne m'as pas dit si c'est un Elfin EE10 ou EW10
Le debug ne montre rien dans le log ?
Hello,
Since you are using a gateway, there is no need to change the default jkbms_path. But that's not important.
Can you check that you have the latest version from yesterday, v3.3.3? This is important because I have made a lot of changes concerning IP gateways.
Can you install and use the serial wifi terminal application to check that there is regular communication between the module and the gateway?
Enlarge the dedicated buffer in the Elfin configuration. However, you didn't tell me if it's an Elfin EE10 or EW10.
Does debugging show anything in the log?
Jean-Luc
The following 1 user Likes jlm's post:1 user Likes jlm's post • frajar
17-11-2025, 12:38 AM (Modification du message : 17-11-2025, 12:57 AM par thorium.)
(15-11-2025, 11:01 AM)jlm a écrit :
(14-11-2025, 10:53 PM)thorium a écrit : Hello!
I'm trying to set it up with an Elfin IP Gateway and I cannot get it to work.
I am confident the Elfin is connected to the JK BMS (PB2A16S30P v19) and working properly, because this alternative project (https://github.com/luisgonzalezgonzalez/jkbms_mqtt) is successfully pulling the data from the Elfin (this is coming in from this alternative tool).
I wish to use your tool because I am going to have 4 parallel batteries soon with a master/slave.
14 Nov 14:46:24 - [info] Node-RED version: v4.1.1
14 Nov 14:46:24 - [info] Node.js version: v22.16.0
14 Nov 14:46:24 - [info] Linux 6.12.51-haos x64 LE
14 Nov 14:46:25 - [info] Loading palette nodes
14 Nov 14:46:29 - [info] Settings file : /etc/node-red/config.js
14 Nov 14:46:29 - [info] Context store : 'default' [module=localfilesystem]
14 Nov 14:46:30 - [info] User directory : /config/smartphoton_jkbms/
14 Nov 14:46:30 - [warn] Projects disabled : editorTheme.projects.enabled=false
14 Nov 14:46:30 - [info] Flows file : /config/smartphoton_jkbms/flows.json
14 Nov 14:46:30 - [warn] Encrypted credentials not found
14 Nov 14:46:30 - [info] Server now running at http://127.0.0.1:1891/
14 Nov 14:46:30 - [info] Starting flows
14 Nov 14:46:30 - [info] Started flows
14 Nov 14:46:30 - [error] [serialconfig:6e1abcbcc6ebb714] serial port /dev/JKBMS-Fake error: Error: Error: No such file or directory, cannot open /dev/JKBMS-Fake
14 Nov 14:46:30 - [info] [mqtt-broker:56f7b2737cce493b] Connection failed to broker: mqtt://core-mosquitto.local.hass.io:1883
14 Nov 14:46:31 - [info] [function:traitement des variables] Champ 'gateway_ip_port' traité: 192.168.1.93:502
14 Nov 14:46:31 - [info] [function:traitement des variables] Champ 'mqttadresse_port' traité: 192.168.1.96:1883
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'path' = 192.168.1.93:502
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'nb_jkbms' = 1
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'use_gateway' = true
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'gateway_ip' = 192.168.1.93
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'gateway_port' = 502
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'communication_debug' = true
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'bms_broadcasting' = false
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'CAN_bus_usage' = false
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'mqttadresse' = 192.168.1.96
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'mqttport' = 1883
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'mqttuser' = mqtt
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'mqttpass' = •••••••••
14 Nov 14:46:35 - [info] [mqtt-broker:56f7b2737cce493b] Connected to broker: mqtt://192.168.1.96:1883
Bonjour,
Alors vu que tu utilises une passerelle, pas besoin de modifier le jkbms_pathpar défaut. Mais c'est pas important.
Peux-tu vérifier que tu es bien à la dernière version d'hier v3.3.3 C'est important, car j'ai amené beaucoup de modifications concernant les passerelles IP
Peux-tu installer et utiliser l'application serial wifi terminal pour vérifier qu'il y a bien un dialogue régulier entre le module et la passerelle
Agrandir le buffer dédié dans la configuration du Elfin. Par contre tu ne m'as pas dit si c'est un Elfin EE10 ou EW10
Le debug ne montre rien dans le log ?
Hello,
Since you are using a gateway, there is no need to change the default jkbms_path. But that's not important.
Can you check that you have the latest version from yesterday, v3.3.3? This is important because I have made a lot of changes concerning IP gateways.
Can you install and use the serial wifi terminal application to check that there is regular communication between the module and the gateway?
Enlarge the dedicated buffer in the Elfin configuration. However, you didn't tell me if it's an Elfin EE10 or EW10.
Does debugging show anything in the log?
Thank you for your coding efforts.
1. Yes, I am using v3.3.3
2. I tried to use "TCP2COM" Windows app and didn't see anything. But I'm not sure if I was using it correctly. The other app is reading it regularly though (screenshot of MQTT below showing regular updates of the BMS parameters), so it stands to reason it must be transmitting on the Elfin.
3. Elfin Product Name is "EW41B." I increased the buffer size from 512 to 8092 (max allowed) on the Communication Settings screen. If there is another Wifi serial adapter you use that is known tested good, please let me know the make & model and I'm happy to buy that one.
4. Debugging doesn't show anything, the log file ends after the MQTT server connection line in the original log excerpt I pasted.
Additional Info:
- You can see on the Elfin that your app is connecting to it (192.168.1.96 is the home assistant server making a connection to the Elfin, .90 is that Other App running on a container outside of home assistant).
- When your app starts the last log message is "Connected to broker: mqtt://" -- but then several minutes later HTML markup of goes into the Log window (partially pasted at bottom). This appears to be the Synology NAS I have on my network. It is a separate device entirely at 192.168.1.100 and it does not host Home Assistant. The only relation to Home Assistant is that I use the synology NAS NGINX as a HTTPS reverse proxy for home assistant, so I can connect to https://192.168.1.100:4433 and that is reverse proxied to the home assistant server at http://192.168.1.96:8123. I have no idea why your app would be trying to access the synology or why that shows up in the logs.
18-11-2025, 12:07 PM (Modification du message : 18-11-2025, 07:10 PM par RiaanH.)
Good afternoon Jean-Luc,
First off let me start by thanking you for all the effort.
I do however have a few questions in trying to get this going:
I cannot get it to use TCP, although gateway is working through other tests. What do I need to change for the USB, as one cannot remove the data there.
EDIT: Managed to get the TCP operational, from yaml editor changed usb descriptor to IP and port, thank you
Then I found the following:
I have a 15cell battery, so JK app reports 15 and all the rest fine.
But through the Add-on, it uses 16cell and thus work out the average and delta from that, so average gives 15 cell data plus 0 and divide by 16, and delta take the value between 0V and eg 3.5, and report delta as 3.5.
(14-11-2025, 10:53 PM)thorium a écrit : Hello!
I'm trying to set it up with an Elfin IP Gateway and I cannot get it to work.
I am confident the Elfin is connected to the JK BMS (PB2A16S30P v19) and working properly, because this alternative project (https://github.com/luisgonzalezgonzalez/jkbms_mqtt) is successfully pulling the data from the Elfin (this is coming in from this alternative tool).
I wish to use your tool because I am going to have 4 parallel batteries soon with a master/slave.
{"battery_voltage": 53.753, "battery_power": 1433.369, "battery_current": 26.8, "cell_00_voltage": 3.36, "cell_01_voltage": 3.36, "cell_02_voltage": 3.357, "cell_03_voltage": 3.358, "cell_04_voltage": 3.361, "cell_05_voltage": 3.361, "cell_06_voltage": 3.362, "cell_07_voltage": 3.362, "cell_08_voltage": 3.363, "cell_09_voltage": 3.36, "cell_10_voltage": 3.36, "cell_11_voltage": 3.358, "cell_12_voltage": 3.36, "cell_13_voltage": 3.358, "cell_14_voltage": 3.36, "cell_15_voltage": 3.36, "mos_temperature": 29.6, "battery_temperature_1": 30.3, "battery_temperature_2": 30.8, "balance_current": 0, "battery_soc": 72}
My configuration file is:
jkbms_path: 192.168.1.93:502
jkbms_count: 1
use_gateway: true
gateway_ip_port: 192.168.1.93:502
communication_debug: true
bms_broadcasting: false
CAN_bus_usage: false
mqttadresse_port: 192.168.1.96:1883
mqttuser: mqtt
mqttpass: ######
The log is:
14 Nov 14:46:24 - [info] Node-RED version: v4.1.1
14 Nov 14:46:24 - [info] Node.js version: v22.16.0
14 Nov 14:46:24 - [info] Linux 6.12.51-haos x64 LE
14 Nov 14:46:25 - [info] Loading palette nodes
14 Nov 14:46:29 - [info] Settings file : /etc/node-red/config.js
14 Nov 14:46:29 - [info] Context store : 'default' [module=localfilesystem]
14 Nov 14:46:30 - [info] User directory : /config/smartphoton_jkbms/
14 Nov 14:46:30 - [warn] Projects disabled : editorTheme.projects.enabled=false
14 Nov 14:46:30 - [info] Flows file : /config/smartphoton_jkbms/flows.json
14 Nov 14:46:30 - [warn] Encrypted credentials not found
14 Nov 14:46:30 - [info] Server now running at http://127.0.0.1:1891/
14 Nov 14:46:30 - [info] Starting flows
14 Nov 14:46:30 - [info] Started flows
14 Nov 14:46:30 - [error] [serialconfig:6e1abcbcc6ebb714] serial port /dev/JKBMS-Fake error: Error: Error: No such file or directory, cannot open /dev/JKBMS-Fake
14 Nov 14:46:30 - [info] [mqtt-broker:56f7b2737cce493b] Connection failed to broker: mqtt://core-mosquitto.local.hass.io:1883
14 Nov 14:46:31 - [info] [function:traitement des variables] Champ 'gateway_ip_port' traité: 192.168.1.93:502
14 Nov 14:46:31 - [info] [function:traitement des variables] Champ 'mqttadresse_port' traité: 192.168.1.96:1883
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'path' = 192.168.1.93:502
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'nb_jkbms' = 1
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'use_gateway' = true
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'gateway_ip' = 192.168.1.93
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'gateway_port' = 502
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'communication_debug' = true
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'bms_broadcasting' = false
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'CAN_bus_usage' = false
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'mqttadresse' = 192.168.1.96
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'mqttport' = 1883
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'mqttuser' = mqtt
14 Nov 14:46:31 - [info] [function:traitement des variables] Variable globale 'mqttpass' = •••••••••
14 Nov 14:46:35 - [info] [mqtt-broker:56f7b2737cce493b] Connected to broker: mqtt://192.168.1.96:1883
Bonjour,
Alors vu que tu utilises une passerelle, pas besoin de modifier le jkbms_pathpar défaut. Mais c'est pas important.
Peux-tu vérifier que tu es bien à la dernière version d'hier v3.3.3 C'est important, car j'ai amené beaucoup de modifications concernant les passerelles IP
Peux-tu installer et utiliser l'application serial wifi terminal pour vérifier qu'il y a bien un dialogue régulier entre le module et la passerelle
Agrandir le buffer dédié dans la configuration du Elfin. Par contre tu ne m'as pas dit si c'est un Elfin EE10 ou EW10
Le debug ne montre rien dans le log ?
Hello,
Since you are using a gateway, there is no need to change the default jkbms_path. But that's not important.
Can you check that you have the latest version from yesterday, v3.3.3? This is important because I have made a lot of changes concerning IP gateways.
Can you install and use the serial wifi terminal application to check that there is regular communication between the module and the gateway?
Enlarge the dedicated buffer in the Elfin configuration. However, you didn't tell me if it's an Elfin EE10 or EW10.
So I don't see the log concerning the link with the NAS in the subject.
Have you been able to check with the serial wifi terminal application whether there is indeed a dialogue between the Elfin and the module?
Debugging does not yet work in BMS Master mode, only in the mode where each BMS has a unique address and the module is the bus master.
Please get back to us with a little more information, as it is not possible to make a diagnosis at this stage.
The Elfin should be working perfectly, I have no doubt about that.
Have you thought about checking the MQTT broker to see if the topics are being sent by the JK module?
Jean-Luc
The following 1 user Likes jlm's post:1 user Likes jlm's post • frajar
(18-11-2025, 12:07 PM)RiaanH a écrit : Good afternoon Jean-Luc,
First off let me start by thanking you for all the effort.
I do however have a few questions in trying to get this going:
I cannot get it to use TCP, although gateway is working through other tests. What do I need to change for the USB, as one cannot remove the data there.
EDIT: Managed to get the TCP operational, from yaml editor changed usb descriptor to IP and port, thank you
Then I found the following:
I have a 15cell battery, so JK app reports 15 and all the rest fine.
But through the Add-on, it uses 16cell and thus work out the average and delta from that, so average gives 15 cell data plus 0 and divide by 16, and delta take the value between 0V and eg 3.5, and report delta as 3.5.
Thanks again and kind regards
Riaan
Bonsoir Riaan
Thank you for your encouragement.
Indeed, the USB port field is not taken into account when the IP gateway is enabled.
But I can't hide the field in the graphical configuration interface when the gateway is enabled.
Unfortunately, the controls are limited when it comes to managing these fields.
As I wrote to you on GitHub, I have taken note of your comment.
Once the major development work has been completed, I will be able to focus on this,but for the moment it is not possible.
So, calculating averages using templates is indeed the solution.
See you soon.
Jean-Luc
The following 2 users Like jlm's post:2 users Like jlm's post • frajar, RiaanH
I replaced the Elfin EL41B with the Elfin EL11A-0.
It started working immediately.
I'm off to make a donation, thanks for your work.
I recommend adding "Elfin EL41B" to your documentation as a serial-to-wifi that will NOT work (keep in mind the EL41B worked with another project so it is most likely some incompatibility in your software and the EL41B).
EVERY setting in my setup was identical, the ONLY thing that I changed was the Elfin unit. I used the same RJ45 cable/power/etc. I didn't change any settings in your app, or on my network. I configured the EL11 identically to the EL41 (it has an identical web interface, with identical screens and settings, and the hardware itself looks nearly identical to an EL41).
05-12-2025, 11:38 PM (Modification du message : 05-12-2025, 11:44 PM par brachux.)
Hi, thanks for great work you have done!! I have an interesting behavior that I don't know how to solve, maybe it is already known bug?
Add-on version: 3.3.10
You are running the latest version of this add-on.
System: Home Assistant OS 16.3 (amd64 / qemux86-64)
Home Assistant Core: 2025.12.0
Home Assistant Supervisor: 2025.12.2
I am using a Waveshare RS485 TO POE ETH (B)
and connecting to 4pcs of JK BMS with one of them as master 0000 because of CAN connection to Victron system. Two JK are V15 and two V19.
In logs there are always:
5 Dec 23:29:24 - [warn] [function:BMS-Nb] BMS Nb: 0 is alive
5 Dec 23:29:25 - [warn] [function:BMS-Nb] BMS Nb: 1 is alive
5 Dec 23:29:25 - [warn] [function:BMS-Nb] BMS Nb: 2 is alive
5 Dec 23:29:26 - [warn] [function:BMS-Nb] BMS Nb: 3 is alive
My problem is that all the data from 4 batteries are put on same mqtt BMS master topic. There are no 4 separate MQTT devices, only one master, who receives every 5 seconds data 4 times and put on same entity.
You can see also in attached image that one of entities that shows device address all the time changes on received data.
Hi all...
New guy here and hoping to get some help with the HA add on....
I spent the entire day yesterday trying to get it to work and gave up after about 12 hours of frustration...
I have 1 battery with the JK Inverter BMS V15:41
The address is set to 0000, I'm using a Waveshare USB adapter into the mini pc running my Home Assistant.
This is my yaml
jkbms_path: /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_B0037U1B-if00-port0
jkbms_count: 1
use_gateway: false
gateway_ip_port: 192.168.1.100:5000
communication_debug: false
bms_broadcasting: true
CAN_bus_usage: false
mqttadresse_port: core-mosquitto.local.hass.io:1883
mqttuser: kennyrodgers247
mqttpass: "********"
Send_bip: true
I tried broadcasting true and false but I always get a serial error.
Logs say connect to MQTT but the device does not appear there...
Here's 3 lines from the log that I believe are the important ones..
14 Dec 10:14:46 - [error] [serialconfig:6e1abcbcc6ebb714] serial port /dev/JKBMS-Fake error: Error: Error: No such file or directory, cannot open /dev/JKBMS-Fake
14 Dec 10:14:47 - [info] serial port /dev/JKBMS-Fake closed
14 Dec 10:14:47 - [info] [serialconfig:6e1abcbcc6ebb714] serial port /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_B0037U1B-if00-port0 opened at 115800 baud 8N1
14 Dec 10:14:49 - [warn] [function:BMS-Nb] BMS Nb: 0 is alive
14 Dec 10:14:51 - [info] [mqtt-broker:56f7b2737cce493b] Connected to broker: mqtt://core-mosquitto.local.hass.io:1883
14 Dec 10:14:53 - [warn] [function:BMS-Nb] BMS Nb: 0 is alive
BMS Nb: 0 is alive then scrolls continuously.
If anyone can help I would very much appreciate it.
14-12-2025, 03:54 PM (Modification du message : 14-12-2025, 03:55 PM par jlm.)
(14-12-2025, 01:46 PM)peteblack63@gmail.com a écrit : Hi all...
New guy here and hoping to get some help with the HA add on....
I spent the entire day yesterday trying to get it to work and gave up after about 12 hours of frustration...
I have 1 battery with the JK Inverter BMS V15:41
The address is set to 0000, I'm using a Waveshare USB adapter into the mini pc running my Home Assistant.
This is my yaml
jkbms_path: /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_B0037U1B-if00-port0
jkbms_count: 1
use_gateway: false
gateway_ip_port: 192.168.1.100:5000
communication_debug: false
bms_broadcasting: true
CAN_bus_usage: false
mqttadresse_port: core-mosquitto.local.hass.io:1883
mqttuser: kennyrodgers247
mqttpass: "********"
Send_bip: true
I tried broadcasting true and false but I always get a serial error.
Logs say connect to MQTT but the device does not appear there...
Here's 3 lines from the log that I believe are the important ones..
14 Dec 10:14:46 - [error] [serialconfig:6e1abcbcc6ebb714] serial port /dev/JKBMS-Fake error: Error: Error: No such file or directory, cannot open /dev/JKBMS-Fake
14 Dec 10:14:47 - [info] serial port /dev/JKBMS-Fake closed
14 Dec 10:14:47 - [info] [serialconfig:6e1abcbcc6ebb714] serial port /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_B0037U1B-if00-port0 opened at 115800 baud 8N1
14 Dec 10:14:49 - [warn] [function:BMS-Nb] BMS Nb: 0 is alive
14 Dec 10:14:51 - [info] [mqtt-broker:56f7b2737cce493b] Connected to broker: mqtt://core-mosquitto.local.hass.io:1883
14 Dec 10:14:53 - [warn] [function:BMS-Nb] BMS Nb: 0 is alive
BMS Nb: 0 is alive then scrolls continuously.
If anyone can help I would very much appreciate it.
Hello,
In my opinion, everything is perfectly normal. The logs show a good connection to the USB port, and the fact that BMS Nb: 0 is alive is a good sign.
You should now use MQTTexplorer to connect to your broker on your HAOS to see if there are any topics listed.
This is the first check.
The log shows whether the connection was successful or not.
Code :
4 Dec 14:49:57 - [info] [mqtt-broker:56f7b2737cce493b] Connected to broker: mqtt://core-mosquitto.local.hass.io:1883
Jean-Luc
The following 1 user Likes jlm's post:1 user Likes jlm's post • frajar
So it's definitely a problem accessing the broker.
When you use mqttexplorer, you use a username and password and, of course, the broker's IP address.
Can you enter the same information in the module configuration?
Is your broker in HAOS or on another machine outside the system?
Can you provide the module log details when it launches?
If you could describe your infrastructure configuration, that might help.
Oh yes, you can also activate debug mode to see in the logs if there are indeed frames passing through.
Jean-Luc
The following 1 user Likes jlm's post:1 user Likes jlm's post • frajar
15-12-2025, 04:46 PM (Modification du message : 15-12-2025, 06:35 PM par jlm.)
It's clear now with the "debug".
There are no frames coming from the USB serial port.
Either it's the wiring or it's the adapter.
You should have frames that start with
Code :
55 aa eb 90
which is not the case with you.
So everything is fine on the broker side, but not on the hardware side.
This is what it looks like on my computer with the debug function.
I put this in the readme file. Is this the case for you?
Jean-Luc
The following 1 user Likes jlm's post:1 user Likes jlm's post • frajar
16-12-2025, 01:28 AM (Modification du message : 16-12-2025, 09:48 AM par peteblack63@gmail.com.)
We've done it, yay !
I have 2 devices showing in MQTT, BMS Global and BMS Master...
To confirm, there is only one battery...Dipswitches are 0000, broadcasting is set to true.
Currently on BMS controls/info is showing in the Master section, no cell voltages etc.
Do i need to change the dip switches and change anything else to get the cell info, charge settings etc.
Thanks for the help
Okay, great.
In "0000" mode, the BMS Master does not allow parameter changes.
You must therefore assign it an address, for example 1, which is "1000" on the 4 switches.
A device named BMS_1 will then appear in place of BMS_master.
The BMS Global is there to indicate whether any of the BMSs have an active alarm or not.
Jean-Luc
The following 1 user Likes jlm's post:1 user Likes jlm's post • frajar
Many thanks...
I have it working now.
Ive been using Solar Assistant to control my Sunsynk Inverter as It's up in the loft.
Shame really as the two programs will not play nicely together.
Appreciate the help.
Solar Assistant never contacted me.
However, with Smartphoton, Voltronic, Pylontech, and JK-BMS, they could have done so.
I don't know how many people work for the company.
But there is one thing we have in common: we both expose our data on a broker for use outside our software. That's a big plus.
You can bring everything together in Home Assistant or Jeedom, for example.
All the best
Jean-Luc
The following 1 user Likes jlm's post:1 user Likes jlm's post • frajar
Il n'est possible de modifier les paramètres que si aucuns des BMS n'est en mode Master, donc switch sur 0000.
Dans ce mode 0000 c'est le BMS le maître
It is only possible to change the settings if none of the BMSs are in Master mode, i.e., switch set to 0000.
In this 0000 mode, the BMS is the master.