Bonjour Mr. le visiteur, si vous lisez ceci, cela signifie que vous n'êtes pas enregistré.
Cliquez ici
pour vous inscrire en quelques étapes simples, vous pourrez profiter de toutes les fonctionnalités de notre Forum.
Vous pourrez évidemment nous faire partager vos connaissances avec nous ! et voir les images ou vidéos postées
11-06-2025, 09:01 PM (Modification du message : 12-06-2025, 07:14 PM par jlm.)
Je suis heureux de vous annoncer la sortie d’un nouveau module complémentaire Home Assistant dédié à la gestion des BMS JKong via une connexion filaire RS485.
Et comme à l'accoutumée celui-ci reste gratuit (Le code source est disponible sur le Github)
Ce module permet de superviser et de centraliser le suivi de plusieurs JK-BMS (jusqu’à 15) directement depuis votre installation Home Assistant.
Ceci sans recourir à une multiplication de modules matériels spécifiques. Seul des câbles RJ45 sont requis.
Principales fonctionnalités :
Compatibilité multi-BMS : prise en charge simultanée de plusieurs modèles JKong (PBA16S20P, PB2A16S15P, PB1A16S15P, PB1A16S10P) connectés sur un seul bus RS485.
Intégration transparente à Home Assistant : configuration simple via l’interface avec création automatique des entités pour chaque BMS dans Home Assistant.
Interopérabilité MQTT : toutes les données collectées sont publiées sur un broker MQTT (celui de votre choix), ce qui permet de les exploiter dans d’autres solutions domotiques comme Jeedom.
Dashboards préconfigurés : Deux tableaux de bord prêts à importer sont proposés pour visualiser rapidement les informations essentielles, sans passer par une configuration longue et fastidieuse. Une contribution est demandée pour ceux-ci
Installation facilitée : ajout du dépôt GitHub, installation via l’add-on store, configuration des paramètres principaux (port USB, nombre de BMS, accès MQTT), et le module est opérationnel en quelques minutes.
Points distinctifs :
Contrairement aux solutions actuelles qui nécessitent un module ESP32 par BMS, ce module permet une gestion centralisée et filaire de tous vos BMS JKong depuis un unique add-on Home Assistant, pour une installation plus simple et plus fiable.
Usage recommandé :
Ce module s’adresse à tous les utilisateurs souhaitant superviser efficacement plusieurs BMS JKong dans un environnement Home Assistant, tout en limitant le matériel et en privilégiant la stabilité de la connexion RS485.
Vidéo de démo:
Pour aller plus loin et se lancer dans l'installation :
Dépôt GitHub pour installation et documentation :
Code :
https://github.com/jean-luc1203/jkbms-rs485-addon
Pour le support et échanges : via le forum (privilégié) ou les issues GitHub.
Si vous avez envie de m'aider en supportant mon travail pour fournir des logiciels libres et supporter ce forum ainsi que les vidéos, c'est par là.
Je vous en remercie beaucoup.
N’hésitez pas à partager vos retours ou à contribuer à l’amélioration du module par vos remarques et idées.
Exelent !!
Et c’est marrant, j’ai aussi vendu mes Pylontech pour passer sur deux batteries avec un JK-BMS.
J’utilise également la solution Wi-Fi/Bluetooth pour le moment, (qui saute de temps en temps) et du coup j’étais en train de tout migrer vers un ESP mais cette fois en RJ45 (PoE) > RS485 > JK-BMS. J’ai reçu les composants hier, je vais tester ça ce week-end.
Ta solution fonctionne aussi avec un Elfin a la place de ton convertiseur usb du coup ? Si mon montage ne marche pas, je me rabattrai sur cette option, même si, comme toi, je préfère clairement une connexion filaire.
Dans ta vidéo, tu es branché directement sur ton PC Home Assistant c'est bien ca?
Moi, je n’utilise pas le port de gauche pour l’onduleur sur le jk bms (le WKS Circle ne le reconnaît pas).
C’est justement là que je pensais me brancher mon esp… j'ai bon ou pas bon ?
bravo JeanLuc !
j'avais démarré avec JKBMS il y a 2ans avec pas mal de galères... et maintenant tu as créé la solution toute faite !
j'ai peu d'internet pour suivre le forum sur mon chantier, toujours pas fini...
18-06-2025, 05:50 PM (Modification du message : 18-06-2025, 05:53 PM par jlm.)
(17-06-2025, 08:53 PM)vavann a écrit : Exelent !!
Et c’est marrant, j’ai aussi vendu mes Pylontech pour passer sur deux batteries avec un JK-BMS.
J’utilise également la solution Wi-Fi/Bluetooth pour le moment, (qui saute de temps en temps) et du coup j’étais en train de tout migrer vers un ESP mais cette fois en RJ45 (PoE) > RS485 > JK-BMS. J’ai reçu les composants hier, je vais tester ça ce week-end.
Ta solution fonctionne aussi avec un Elfin a la place de ton convertiseur usb du coup ? Si mon montage ne marche pas, je me rabattrai sur cette option, même si, comme toi, je préfère clairement une connexion filaire.
Dans ta vidéo, tu es branché directement sur ton PC Home Assistant c'est bien ca?
Moi, je n’utilise pas le port de gauche pour l’onduleur sur le jk bms (le WKS Circle ne le reconnaît pas).
C’est justement là que je pensais me brancher mon esp… j'ai bon ou pas bon ?
Elle va bientôt fonctionner avec un gateway (passerelle) RS485 <--> Ethernet (ou wifi) j'ai fait les 1ers essais, c'est concluant.
J'ai eu quelques demandes en ce sens en effet. Regarde à cet endroit pour voir la bestiole
Je suis en train de modifier le module Home assistant à mes heures perdues (j'en ai peu en ce moment)
Ca ne va pas trop tarder.
J'utilise un module Ebyte que j'avais qui ne me servait pas trop. Cela fonctionnera certainement avec un Elfin EE11a. Mais je n'en ai pas pour tester.
Je mettrai un message sur le forum lorsque ce sera prêt.
Oui le JK est connecté direct au port USB du pc. Un des 2 ports de droite.
Celui de gauche est réservé à la communication avec l'onduleur. Chez moi il est donc connecté au Voltronic.
Donc si j'étais toi je ne tenterai pas de passer par celui de gauche. Mais va savoir, tu vas peut être y arriver
(18-06-2025, 11:00 AM)bishnoi a écrit : bravo JeanLuc !
j'avais démarré avec JKBMS il y a 2ans avec pas mal de galères... et maintenant tu as créé la solution toute faite !
j'ai peu d'internet pour suivre le forum sur mon chantier, toujours pas fini...
22-06-2025, 03:04 PM (Modification du message : 22-06-2025, 03:05 PM par Jeremyd.)
Bonjour et bravo pour ce boulot qui me facilite grandement la tache pour récupérer mes batteries sous HA
Je recontre toutefois un petit soucie
Y a til un moyen de lire un jkbms avec une adresse en 0 (obligée de mettre cette batterie en 0 pour que mon onduleur reconnaît les 2 batteries, sinon il en voit que 1)
22-06-2025, 03:39 PM (Modification du message : 22-06-2025, 03:42 PM par jlm.)
Eh bien voilà le 1er retour sur le module. C'est agréable. Je vois plein de téléchargements mais sans commentaires.
Donc oui tu as raison, j'ai commencé par le chiffre 1 sans y réfléchir plus. Du coup l'adresse 0 est oubliée (et elle est possible en Modbus)
Et vu que ton onduleur souhaite le 1er BMS à l'adresse 0, je vais modifier mon code pour partir de 0 et non pas 1 comme
le voudrait un humain normal qui a appris à compter à l'école.
Le truc c'est que cette semaine, cela va être compliqué niveau timing pour moi. SI tu peux attendre un "chouilliat" ça devrait être disponible début de la semaine suivante.
Tu l'as donc installé via les modules complémentaires, donc tu auras l'information de mise à jour automatiquement.
Cependant j'informerai aussi ici une fois que c'est fait.
Affaire à suivre donc.....
22-06-2025, 03:49 PM (Modification du message : 22-06-2025, 03:50 PM par jlm.)
Nota Bene:
J'y pense, peux-tu ouvrir une "Issue" sur le github
Ça m'arrangerai et en anglais du coup:
Citation :Hello, and congratulations on this work, which greatly facilitates my task of recovering my batteries under HA.
However, I am encountering a minor issue.
Is there a way to read a jkbms with an address of 0 (I am required to set this battery to 0 so that my UPS recognises both batteries, otherwise it only sees one)?
J'y pense, peux-tu ouvrir une "Issue" sur le github
Ça m'arrangerai et en anglais du coup:
Citation :Hello, and congratulations on this work, which greatly facilitates my task of recovering my batteries under HA.
However, I am encountering a minor issue.
Is there a way to read a jkbms with an address of 0 (I am required to set this battery to 0 so that my UPS recognises both batteries, otherwise it only sees one)?
Merci d'avance
Fait
Je ne suis pas pressé, comme ont dit Paris ne c’est pas fait en 1 jour
L’onduleur est raccordé à la batterie maître en can
Il ne fait que lire les valeur envoyé par le(s) BMS , et ne modifie pas à ma connaissance les valeur du BMS
Si ma batterie maître est sur ladressse 1 , il ne vois que cette batterie, et si je remet la batterie maître sur adresse 0 , j’ai bien ma capacité des 2 batterie et charge /décharge max qui correspondent
28-06-2025, 04:37 PM (Modification du message : 28-06-2025, 04:39 PM par vavann.)
Bon, ma solution "maison" n’a pas fonctionné, et pour être franc, je n’ai même pas cherché pourquoi...
Du coup, j’ai reçu un convertisseur USB ce matin, j’ai tout branché et ça fonctionne.
le B2A20S20P monobloc fonctionnne aussi !
ća y est, je viens de tester l'addon avec le JK monobloc et toutes les infos remontent, avec un FTDI_FT232R_USB_UART sur le connecteur GPS...
par contre sans succes avec l'adapdateur RS485 de JK.
penses-tu qu' avec un elfin rs232 ça puisse communiquer ?
et comment puis-je afficher la tension de la cellule la plus faible et celle de la plus haute comme ceci : ?
Un peu en retard, mais je suis sur plein de projets en même temps alors voilà voilà.
Pour ta question, vas dans création entité type Template et tu colles ce code. ca doit faire ce que tu souhaites.
Code :
{% set voltages = [] %}
{% for i in range(1, 17) %}
{% set sensor = states('sensor.bms_' ~ i ~ '_cell_1_volt') %}
{% if sensor != 'unknown' and sensor != 'unavailable' %}
{% set voltage = sensor | float(0) %}
{% if voltage > 0 %}
{% set voltages = voltages + [voltage] %}
{% endif %}
{% endif %}
{% endfor %}
{{ voltages | min if voltages else states('sensor.bms_1_cell_1_volt') | float(0) }}
12-07-2025, 05:20 PM (Modification du message : 12-07-2025, 05:52 PM par psychotik2k3.)
EDIT: j'ai trouve mon erreur, comme mon BMS est en ID1 je n'avias pas change le bms_broadcasting a false.
Bonjour et cool pour le module, merci.
par contre etant une bille (histoire d'etre poli) avec MQTT je pense que je me suis plante quelque part car mon BMS n'apparait pas.
j'utilise un dongle usb vers RS485-RJ45 qui fonctionne tres bien avec le soft de JK.
je n'avais pas installe ni configure MQTT avant, mon zigbee et le growatt faisant l'affaire parfaitement.
Bref je vais essayer de lister tout ce que j'ai fait en esperant ne rien oublier.
1- j'ai installer le mosquitto broker, cocher lancer au demarrage, rien touche d'autre a la configuration.
2- j'ai cree un utilisateur "hamqtt" password "toto1234", acces local uniquement
3- j'ai teste a l'aide de mqtt explorer que j'arrive bien a me connecter au mqtt://192.168.1.123:1883 avec l'utilisateur hamqtt/toto1234
je vois bien une entree dans le journall de mosquitto broker
4- j'ai installe le module "JKL-BMS wired management"
au niveau configuration j'ai mis ceci:
mon tty j'ai mis celui ca car il correspond au lien symbolique /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A955AQ84-if00-port0
dnas le journal j'ai ceci:
Code :
-----------------------------------------------------------
Add-on: JK-BMS wired management
JK-BMS management via RS485 & Ip Gateway
-----------------------------------------------------------
Add-on version: 2.0.1
You are running the latest version of this add-on.
System: Home Assistant OS 16.0 (amd64 / qemux86-64)
Home Assistant Core: 2025.7.1
Home Assistant Supervisor: 2025.07.1
-----------------------------------------------------------
Please, share the above information when looking for help
or support in, e.g., GitHub, forums or the Discord chat.
-----------------------------------------------------------
s6-rc: info: service base-addon-banner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service base-addon-log-level: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service base-addon-log-level successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service init-customizations: starting
s6-rc: info: service init-customizations successfully started
s6-rc: info: service init-nodered: starting
[17:04:49] WARNING:
[17:04:49] WARNING: Direct access mode is disabled, Node-RED Dashboard
[17:04:49] WARNING: will not work!
[17:04:49] WARNING:
[17:04:49] WARNING: Please assign a port in the Network section of this
[17:04:49] WARNING: add-on configuration.
[17:04:49] WARNING:
s6-rc: info: service init-nodered successfully started
s6-rc: info: service nodered: starting
s6-rc: info: service nodered successfully started
s6-rc: info: service legacy-services: starting
[17:04:49] INFO: Starting Node-RED...
s6-rc: info: service legacy-services successfully started
npm warn Unknown builtin config "globalignorefile". This will stop working in the next major version of npm.
npm warn Unknown builtin config "python". This will stop working in the next major version of npm.
> start
> node $NODE_OPTIONS node_modules/node-red/red.js --settings /etc/node-red/config.js
✅ config.js is being loaded
✅ Node-RED is using userDir = /config/smartphoton_jkbms/
✅ Node-RED is using uiPort = 1891
12 Jul 17:04:50 - [info]
Welcome to Node-RED
===================
12 Jul 17:04:50 - [info] Node-RED version: v4.0.9
12 Jul 17:04:50 - [info] Node.js version: v22.16.0
12 Jul 17:04:50 - [info] Linux 6.12.35-haos x64 LE
12 Jul 17:04:50 - [info] Loading palette nodes
12 Jul 17:04:50 - [info] Node-RED Contrib Theme Collection version: v4.0.11
12 Jul 17:04:51 - [info] Dashboard version 3.6.5 started at /endpoint/ui
12 Jul 17:04:52 - [info] node-red-contrib-home-assistant-websocket v0.77.1 nodes initialized
12 Jul 17:04:52 - [info] Settings file : /etc/node-red/config.js
12 Jul 17:04:52 - [info] Context store : 'default' [module=localfilesystem]
12 Jul 17:04:52 - [info] User directory : /config/smartphoton_jkbms/
12 Jul 17:04:52 - [warn] Projects disabled : editorTheme.projects.enabled=false
12 Jul 17:04:52 - [info] Flows file : /config/smartphoton_jkbms/flows.json
12 Jul 17:04:52 - [warn] Encrypted credentials not found
12 Jul 17:04:52 - [info] Server now running at http://127.0.0.1:1891/
12 Jul 17:04:52 - [info] Starting flows
12 Jul 17:04:52 - [info] [ui-base:Setup] Node-RED Dashboard 2.0 (v1.25.0) started at /dashboard
12 Jul 17:04:52 - [info] [ui-base:Setup] Created socket.io server bound to Node-RED port at path /endpoint/dashboard/socket.io
12 Jul 17:04:52 - [info] Started flows
12 Jul 17:04:52 - [error] [serialconfig:6e1abcbcc6ebb714] serial port /dev/JKBMS error: Error: Error: No such file or directory, cannot open /dev/JKBMS
12 Jul 17:04:52 - [info] [mqtt-broker:56f7b2737cce493b] Connection failed to broker: mqtt://core-mosquitto.local.hass.io:1883
12 Jul 17:04:53 - [info] [mqtt-broker:56f7b2737cce493b] Connected to broker: mqtt://192.168.1.123:1883
12 Jul 17:04:53 - [info] [function:Définir global variables] Variable globale 'path' définie: /dev/ttyUSB0
12 Jul 17:04:53 - [info] [function:Définir global variables] Variable globale 'nb_jkbms' définie: 1
12 Jul 17:04:53 - [info] [function:Définir global variables] Variable globale 'use_gateway' définie: false
12 Jul 17:04:53 - [info] [function:Définir global variables] Variable globale 'gateway_ip' définie: 192.168.1.100
12 Jul 17:04:53 - [info] [function:Définir global variables] Variable globale 'gateway_port' définie: 5000
12 Jul 17:04:53 - [info] [function:Définir global variables] Variable globale 'bms_broadcasting' définie: true
12 Jul 17:04:53 - [info] [function:Définir global variables] Variable globale 'mqttadresse' définie: 192.168.1.123
12 Jul 17:04:53 - [info] [function:Définir global variables] Variable globale 'mqttport' définie: 1883
12 Jul 17:04:53 - [info] [function:Définir global variables] Variable globale 'mqttuser' définie: hamqtt
12 Jul 17:04:53 - [info] [function:Définir global variables] Variable globale 'mqttpass' définie: toto1234
12 Jul 17:04:53 - [info] [function:Définir global variables] Variable globale 'ssl' définie: false
12 Jul 17:04:53 - [info] [function:Définir global variables] Variable globale 'certfile' définie: fullchain.pem
12 Jul 17:04:53 - [info] [function:Définir global variables] Variable globale 'keyfile' définie: privkey.pem
12 Jul 17:04:53 - [info] serial port /dev/JKBMS closed
12 Jul 17:04:53 - [info] [serialconfig:6e1abcbcc6ebb714] serial port /dev/ttyUSB0 opened at 115800 baud 8N1
du cote log MQTT j'ai ceci
Code :
2025-07-12 17:03:13: Client <unknown> closed its connection.
2025-07-12 17:04:46: Client nodered_c1344544e2fa8d62 disconnected.
2025-07-12 17:04:52: New connection from 172.30.32.1:40238 on port 1883.
error: received null username or password for unpwd check
2025-07-12 17:04:52: Client nodered_be0ace75a96afb22 disconnected, not authorised.
2025-07-12 17:04:53: New connection from 192.168.1.123:55008 on port 1883.
2025-07-12 17:04:53: New client connected from 192.168.1.123:55008 as nodered_0e35953e4b4b41a9 (p2, c1, k60, u'hamqtt').
2025-07-12 17:05:13: New connection from 172.30.32.2:40258 on port 1883.
2025-07-12 17:05:13: Client <unknown> closed its connection.
2025-07-12 17:07:13: New connection from 172.30.32.2:38284 on port 1883.
2025-07-12 17:07:13: Client <unknown> closed its connection.
mais quand je vais dans appareil aucun appareil n'apparait dans l'integration mqtt, j'ai une seule entree: mosquitto broker.
donc toujours dans MQTT j'ai clique sur les 3 point de l'entree mosquitto broker et sur reconfigurer j'ai change
les infos (courtier =>192.168.1.123, user=>hamqtt, password=>toto1234)
enregistrer essaye de redemarrer le jk-bms wired management attendu quelque minutes et retour sur mqtt... toujorus zero appareils.
donc ma question est: qu'est ce que je fais de travers ?
merci
(10-07-2025, 10:33 PM)jlm a écrit : Un peu en retard, mais je suis sur plein de projets en même temps alors voilà voilà.
Pour ta question, vas dans création entité type Template et tu colles ce code. ca doit faire ce que tu souhaites.
Code :
{% set voltages = [] %}
{% for i in range(1, 17) %}
{% set sensor = states('sensor.bms_' ~ i ~ '_cell_1_volt') %}
{% if sensor != 'unknown' and sensor != 'unavailable' %}
{% set voltage = sensor | float(0) %}
{% if voltage > 0 %}
{% set voltages = voltages + [voltage] %}
{% endif %}
{% endif %}
{% endfor %}
{{ voltages | min if voltages else states('sensor.bms_1_cell_1_volt') | float(0) }}
une petite correction il faut remplacer sensor.bms_' ~ i ~ '_cell_1_volt par sensor.bms_1_cell_ ' ~ i ~ ' _volt
Alors je suis sur mon téléphone donc pas évident de tester et lire, mais une chose retient mon attention, accès local du broker, peux tu désactiver ceci ?
On voit bien dans le log que le client, donc le module se fait jeter, donc évidemment pas de données vu que tout passe par là. Essaye ça et donne nous un retour