Problème écriture sur registre alors que ce fonctionnait avant

Bonjour,

j’avais intégré dans jeedom le chargeur PEBLAR pour gérer la recharge de la voiture selon la production photovoltaique.
Avec un scenario, je faisais varier l’amperage maximum de la recharge.
Aujourd’hui, j’ai un message d’erreur de Mymodbus.

[2025-10-04 15:08:01] ERROR  : Borne eneco/choix limite courant charge: 'command_write' error during write request on device id 1, address 40000 -> ExceptionResponse(dev_id=1, function_code=144, exception_code=4)

j’ai redemarer la borne , modifier les reglages modbus sur l’interface de la borne mais rien n’y fait. j’ai bien la remontée de toutes les informations de la borne.

la doc de peblar se trouve ici https://developer.peblar.com/modbus-api
ma commaNde dans le plugin

Je continue à creuser aussi du côté de la borne.

Merci d’avance


Informations Jeedom

Core : 4.4.20 (master)
DNS Jeedom : non

Plugin : MyModbus
Version : 2025-09-22 01:02:00 (beta)
Statut Démon : Démarré - (2025-10-04 08:04:28)

Bonjour,

Voilà une fonction que je ne connais pas et qui n’est pas implémentée dans le plugin.
Ce message est très étonnant.

Si vous pouviez passer le démon en log debug et lancer la commande action, puis repasser en mode comme vous êtes actuellement, je serais curieux de savoir qu’est-ce qui est envoyé comme requête.

À+
Michel

Bonjour,

j’ai rebooter la borne pour m’assurer que ce venait pas de là.
mais ca ne change rien
par faciliter la lecture, j’ai désactivé mes autres équipement Modbus.

j’ai mis les logs ci dessous

merci

[2025-10-11 08:40:01] DEBUG  : mymodbus::deamon_info * daemon_info = '{"log":"mymodbus","state":"ok","launchable":"ok"}'
[2025-10-11 08:40:01] DEBUG  : jeemymodbus.php: $input *{"values":{"cycle_time":{"value":0.8877540331333875,"eqId":441},"7102":459840,"7103":585,"7104":3375,"7107":3375,"7114":14687}}* type: array
[2025-10-11 08:40:01] DEBUG  : jeemymodbus.php: Mise à jour cmd 'Temps de rafraîchissement' -> new value: '0.888'
[2025-10-11 08:40:01] DEBUG  : jeemymodbus.php: Mise à jour cmd 'Energy total' -> new value: '459840'
[2025-10-11 08:40:01] DEBUG  : jeemymodbus.php: Mise à jour cmd 'Session energy' -> new value: '585'
[2025-10-11 08:40:01] DEBUG  : jeemymodbus.php: Mise à jour cmd 'Puissance phase 1' -> new value: '3375'
[2025-10-11 08:40:01] DEBUG  : jeemymodbus.php: Mise à jour cmd 'Puissance totale' -> new value: '3375'
[2025-10-11 08:40:01] DEBUG  : jeemymodbus.php: Mise à jour cmd 'courant phase 1' -> new value: '14687'
[2025-10-11 08:40:02] DEBUG  : mymodbusCmd::execute **************** execute *****: {"background":"0","slider":"0"}
[2025-10-11 08:40:02] DEBUG  : mymodbus::sendToDaemon * params = array (   'CMD' => 'write',   'write_cmd' =>    array (     'eqId' => 441,     'cmdWriteValue' => 0,     'cmdId' => 7115,   ), )
[2025-10-11 08:40:04] DEBUG  : mymodbus::deamon_info
[2025-10-11 08:40:04] DEBUG  : mymodbus::getDeamonLaunchable
[2025-10-11 08:40:04] DEBUG  : mymodbus::getCompleteConfiguration
[2025-10-11 08:40:04] DEBUG  : mymodbus::getEqConfiguration
[2025-10-11 08:40:04] DEBUG  : mymodbus::deamon_info * daemon_info = '{"log":"mymodbus","state":"ok","launchable":"ok"}'
[2025-10-11 08:40:06] DEBUG  : mymodbus::deamon_info
[2025-10-11 08:40:06] DEBUG  : mymodbus::getDeamonLaunchable

[2025-10-11 08:31:01] ERROR  : Borne eneco/choix limite courant charge: 'command_write' error during write request on device id 1, address 40000 -> ExceptionResponse(dev_id=1, function_code=144, exception_code=4)
[2025-10-11 08:32:02] ERROR  : Borne eneco/choix limite courant charge: 'command_write' error during write request on device id 1, address 40000 -> ExceptionResponse(dev_id=1, function_code=144, exception_code=4)
[2025-10-11 08:33:02] ERROR  : Borne eneco/choix limite courant charge: 'command_write' error during write request on device id 1, address 40000 -> ExceptionResponse(dev_id=1, function_code=144, exception_code=4)
[2025-10-11 08:34:02] ERROR  : Borne eneco/choix limite courant charge: 'command_write' error during write request on device id 1, address 40000 -> ExceptionResponse(dev_id=1, function_code=144, exception_code=4)
[2025-10-11 08:35:02] ERROR  : Borne eneco/choix limite courant charge: 'command_write' error during write request on device id 1, address 40000 -> ExceptionResponse(dev_id=1, function_code=144, exception_code=4)
[2025-10-11 08:36:02] ERROR  : Borne eneco/choix limite courant charge: 'command_write' error during write request on device id 1, address 40000 -> ExceptionResponse(dev_id=1, function_code=144, exception_code=4)
[2025-10-11 08:37:01] ERROR  : Borne eneco/choix limite courant charge: 'command_write' error during write request on device id 1, address 40000 -> ExceptionResponse(dev_id=1, function_code=144, exception_code=4)
[2025-10-11 08:38:01] ERROR  : Borne eneco/choix limite courant charge: 'command_write' error during write request on device id 1, address 40000 -> ExceptionResponse(dev_id=1, function_code=144, exception_code=4)
[2025-10-11 08:39:02] ERROR  : Borne eneco/choix limite courant charge: 'command_write' error during write request on device id 1, address 40000 -> ExceptionResponse(dev_id=1, function_code=144, exception_code=4)
[2025-10-11 08:40:02] ERROR  : Borne eneco/choix limite courant charge: 'command_write' error during write request on device id 1, address 40000 -> ExceptionResponse(dev_id=1, function_code=144, exception_code=4)
[2025-10-11 08:41:02] ERROR  : Borne eneco/choix limite courant charge: 'command_write' error during write request on device id 1, address 40000 -> ExceptionResponse(dev_id=1, function_code=144, exception_code=4)

Bonjour,

Les log du démon ne sont pas en debug, il faut relancer le démon pour que le niveau de log soit pris en compte.

Qu’est ce qui a changé entre le moment où ça fonctionnait et le moment où ça n’a plus fonctionné ?

À+
Michel

Re,

de prime abord, je dirais que je n’ai rien changé. On parcourt peu de km avec cette voiture, et donc on ne la met en charge que le WE, pour profiter au max des panneaux. (le soir y a plus assez de soleil).
Entre les deux derniers WE, j’ai pas fait de manip, je pense pas avoir fait de mise à jour (raison pour laquelle je pensais que le probleme pouvait venir de la borne)

voici le log demandé

08:55:00] DEBUG  : send: 0x1 0x31 0x0 0x0 0x0 0x6 0x1 0x4 0x75 0x86 0x0 0x2
[2025-10-11 08:55:00] DEBUG  : Borne eneco: 'one_cycle_read' treatment cmd_id = 7113
[2025-10-11 08:55:00] DEBUG  : recv: 0x1 0x31 0x0 0x0 0x0 0x7 0x1 0x4 0x4 0xff 0xff 0xff 0xbb extra data:
[2025-10-11 08:55:00] DEBUG  : Processing: 0x1 0x31 0x0 0x0 0x0 0x7 0x1 0x4 0x4 0xff 0xff 0xff 0xbb
[2025-10-11 08:55:00] DEBUG  : decoded PDU function_code(4 sub -1) -> ReadInputRegistersResponse(dev_id=0, transaction_id=0, address=0, count=0, bits=[], registers=[65535, 65467], status=1retries=0)
[2025-10-11 08:55:00] DEBUG  : Borne eneco: 'one_cycle_read'/limite courant charge: requesting read
[2025-10-11 08:55:00] DEBUG  : send: 0x1 0x32 0x0 0x0 0x0 0x6 0x1 0x3 0x9c 0x40 0x0 0x2
[2025-10-11 08:55:00] DEBUG  : Borne eneco: 'process_read_response' launched for command id = 7111
[2025-10-11 08:55:00] DEBUG  : Borne eneco: 'cmd_decode' launched for command id = 7111
[2025-10-11 08:55:00] DEBUG  : Borne eneco: 'add_change' launched with payload = {'values::7111': -69}
[2025-10-11 08:55:00] DEBUG  : Borne eneco: 'add_change' No modification to send
[2025-10-11 08:55:00] DEBUG  : Borne eneco: 'one_cycle_read' treatment cmd_id = 7112
[2025-10-11 08:55:00] DEBUG  : Try sending to jeedom: {'values': {'7114': 5677}}
[2025-10-11 08:55:00] DEBUG  : recv: 0x1 0x32 0x0 0x0 0x0 0x7 0x1 0x3 0x4 0x0 0x0 0x7d 0x1 extra data:
[2025-10-11 08:55:00] DEBUG  : Processing: 0x1 0x32 0x0 0x0 0x0 0x7 0x1 0x3 0x4 0x0 0x0 0x7d 0x1
[2025-10-11 08:55:00] DEBUG  : decoded PDU function_code(3 sub -1) -> ReadHoldingRegistersResponse(dev_id=0, transaction_id=0, address=0, count=0, bits=[], registers=[0, 32001], status=1retries=0)
[2025-10-11 08:55:00] DEBUG  : Borne eneco: 'one_cycle_read'/etat: requesting read
[2025-10-11 08:55:00] DEBUG  : send: 0x1 0x33 0x0 0x0 0x0 0x6 0x1 0x4 0x75 0x9e 0x0 0x1
[2025-10-11 08:55:00] DEBUG  : Borne eneco: 'process_read_response' launched for command id = 7113
[2025-10-11 08:55:00] DEBUG  : Borne eneco: 'cmd_decode' launched for command id = 7113
[2025-10-11 08:55:00] DEBUG  : Borne eneco: 'add_change' launched with payload = {'values::7113': 32001}
[2025-10-11 08:55:00] DEBUG  : Borne eneco: 'add_change' No modification to send
[2025-10-11 08:55:00] DEBUG  : Borne eneco: 'one_cycle_read' exit with error_or_exception = False
[2025-10-11 08:55:00] DEBUG  : recv: 0x1 0x33 0x0 0x0 0x0 0x5 0x1 0x4 0x2 0x0 0x43 extra data:
[2025-10-11 08:55:00] DEBUG  : Processing: 0x1 0x33 0x0 0x0 0x0 0x5 0x1 0x4 0x2 0x0 0x43
[2025-10-11 08:55:00] DEBUG  : decoded PDU function_code(4 sub -1) -> ReadInputRegistersResponse(dev_id=0, transaction_id=0, address=0, count=0, bits=[], registers=[67], status=1retries=0)
[2025-10-11 08:55:00] DEBUG  : Borne eneco: 'process_read_response' launched for command id = 7112
[2025-10-11 08:55:00] DEBUG  : Borne eneco: 'cmd_decode' launched for command id = 7112
[2025-10-11 08:55:00] DEBUG  : Borne eneco: 'add_change' launched with payload = {'values::7112': 67}
[2025-10-11 08:55:00] DEBUG  : Borne eneco: 'add_change' No modification to send
[2025-10-11 08:55:00] DEBUG  : Borne eneco: 'one_cycle_read' treatment cmd_id = 7113
[2025-10-11 08:55:00] DEBUG  : Borne eneco: 'one_cycle_read'/limite courant charge: requesting read
[2025-10-11 08:55:00] DEBUG  : send: 0x1 0x34 0x0 0x0 0x0 0x6 0x1 0x3 0x9c 0x40 0x0 0x2
[2025-10-11 08:55:00] DEBUG  : recv: 0x1 0x34 0x0 0x0 0x0 0x7 0x1 0x3 0x4 0x0 0x0 0x7d 0x1 extra data:
[2025-10-11 08:55:00] DEBUG  : Processing: 0x1 0x34 0x0 0x0 0x0 0x7 0x1 0x3 0x4 0x0 0x0 0x7d 0x1
[2025-10-11 08:55:00] DEBUG  : decoded PDU function_code(3 sub -1) -> ReadHoldingRegistersResponse(dev_id=0, transaction_id=0, address=0, count=0, bits=[], registers=[0, 32001], status=1retries=0)
[2025-10-11 08:55:00] DEBUG  : Borne eneco: 'process_read_response' launched for command id = 7113
[2025-10-11 08:55:00] DEBUG  : Borne eneco: 'cmd_decode' launched for command id = 7113
[2025-10-11 08:55:00] DEBUG  : Borne eneco: 'add_change' launched with payload = {'values::7113': 32001}
[2025-10-11 08:55:00] DEBUG  : Borne eneco: 'add_change' No modification to send
[2025-10-11 08:55:00] DEBUG  : Borne eneco: 'one_cycle_read' exit with error_or_exception = False
[2025-10-11 08:55:02] DEBUG  : Received new message on socket
[2025-10-11 08:55:02] DEBUG  : Close connection
[2025-10-11 08:55:02] DEBUG  : MyModbusd: 'on_message' '''{'CMD': 'write', 'write_cmd': {'eqId': 441, 'cmdWriteValue': 0, 'cmdId': 7115}, 'apikey': '9mfOgUgQ1xSV2MegKeAaGT9wYWba7hLOXD4kDyTb5TEImw7wLblou1VIzMZKhsVE', 'dt': '2025-10-11T08:55:02+02:00'}'''
[2025-10-11 08:55:02] INFO  : MyModbusd: Command 'write' received from jeedom: sending the command to MyModbusClient 441: {'eqId': 441, 'cmdWriteValue': 0, 'cmdId': 7115}
[2025-10-11 08:55:02] DEBUG  : Borne eneco: 'read_downstream' Message received from daemon: {'write': {'eqId': 441, 'cmdWriteValue': 0, 'cmdId': 7115}}
[2025-10-11 08:55:02] DEBUG  : Borne eneco: 'command_write' launched with command = '{'eqId': 441, 'cmdWriteValue': 0, 'cmdId': 7115}'
[2025-10-11 08:55:02] DEBUG  : Borne eneco/choix limite courant charge: 'command_write' 'value_to_write' = '0' (I)
[2025-10-11 08:55:02] DEBUG  : Borne eneco/choix limite courant charge: 'command_write' 'address' (count) = '40000' (2)
[2025-10-11 08:55:02] DEBUG  : Borne eneco/choix limite courant charge: 'command_write' payload = [0, 0]
[2025-10-11 08:55:02] DEBUG  : Borne eneco/choix limite courant charge: 'command_write' write_req_params = {'address': 40000, 'dev_id': 1, 'registers': array('H', [0, 0])}
[2025-10-11 08:55:02] DEBUG  : Borne eneco/choix limite courant charge: 'command_write' request_func = <class 'pymodbus.pdu.register_message.WriteMultipleRegistersRequest'>
[2025-10-11 08:55:02] DEBUG  : Borne eneco/choix limite courant charge: 'command_write' Fonction WriteMultipleRegistersRequest(dev_id=1, transaction_id=0, address=40000, count=2, bits=[], registers=array('H', [0, 0]), status=1retries=0)
[2025-10-11 08:55:02] DEBUG  : Borne eneco/choix limite courant charge: 'command_write' Request sent
[2025-10-11 08:55:02] DEBUG  : send: 0x1 0x35 0x0 0x0 0x0 0xb 0x1 0x10 0x9c 0x40 0x0 0x2 0x4 0x0 0x0 0x0 0x0
[2025-10-11 08:55:02] DEBUG  : recv: 0x1 0x35 0x0 0x0 0x0 0x3 0x1 0x90 0x4 extra data:
[2025-10-11 08:55:02] DEBUG  : Processing: 0x1 0x35 0x0 0x0 0x0 0x3 0x1 0x90 0x4
[2025-10-11 08:55:02] ERROR  : Borne eneco/choix limite courant charge: 'command_write' error during write request on device id 1, address 40000 -> ExceptionResponse(dev_id=1, function_code=144, exception_code=4)
[2025-10-11 08:55:04] DEBUG  : Borne eneco: 'one_cycle_read' launched
[2025-10-11 08:55:04] DEBUG  : Borne eneco: 'one_cycle_read' treatment cmd_id = 7102
[2025-10-11 08:55:04] DEBUG  : Borne eneco: 'one_cycle_read'/Energy total: requesting read
[2025-10-11 08:55:04] DEBUG  : send: 0x1 0x36 0x0 0x0 0x0 0x6 0x1 0x4 0x75 0x30 0x0 0x4
[2025-10-11 08:55:04] DEBUG  : Borne eneco: 'add_change' launched with payload = {'values::cycle_ok': {'value': 1, 'eqId': 441}}
[2025-10-11 08:55:04] DEBUG  : Borne eneco: 'add_change' No modification to send
[2025-10-11 08:55:04] DEBUG  : Borne eneco: 'one_cycle_read' launched
[2025-10-11 08:55:04] DEBUG  : Borne eneco: 'one_cycle_read' treatment cmd_id = 7102
[2025-10-11 08:55:04] DEBUG  : Borne eneco: 'add_change' launched with payload = {'values::cycle_ok': {'value': 1, 'eqId': 441}}
[2025-10-11 08:55:04] DEBUG  : Borne eneco: 'add_change' No modification to send
[2025-10-11 08:55:04] DEBUG  : recv: 0x1 0x36 0x0 0x0 0x0 0xb 0x1 0x4 0x8 0x0 0x0 0x0 0x0 0x0 0x7 0x5 0xe4 extra data:

Décryptage de la requête envoyées :
0x1 0x35 0x0 0x0 0x0 0xb 0x1 0x10 0x9c 0x40 0x0 0x2 0x4 0x0 0x0 0x0 0x0

Champ Valeur (hex) Description
MBAP Header
Transaction ID 0x0 0x0 Identifiant de la transaction (peu utilisé en pratique)
Protocol ID 0x0 0x0 Toujours 0x0 0x0 pour Modbus TCP
Length 0x0 0xb Longueur des données suivantes (11 octets)
PDU (Protocol Data Unit)
Unit ID 0x1 Identifiant de l’esclave (1)
Function Code 0x10 Code de fonction : 0x10 = « Write Multiple Registers »
Starting Address 0x9c 0x40 Adresse de départ : 0x9C40 (40000 en décimal)
Quantity of Registers 0x0 0x2 Nombre de registres à écrire : 2
Byte Count 0x4 Nombre d’octets de données : 4 (car 2 registres × 2 octets)
Data 0x0 0x0 0x0 0x0 Valeurs à écrire : 0x0000 et 0x0000

L’adresse de registre est 40 016 et pas 40 000. Pourquoi ?
L’équipement a bien été sauvegardé ? Vous pouvez exporter le template et le poster ici (il faut renommer le fichier en *.txt) ?

edit: après vérification manuelle, 0x9C40 vaut bien 40000

oui c est bien 40000.

voici le template

Borne.json.txt (18,6 Ko)

merci encore

J’ai testé le template sur mon automate Wago qui n’a pas de registre 40000 et j’ai un retour différent. Chez moi c’est le code d’erreur 0x02 Illegal Data Address, chez vous c’est le code 0x04 Slave Device Failure.
Il semblerait que votre appareil ne supporte pas cette requête d’écriture.

Avez-vous essayé le script python de test : GitHub - Peblar/py-modbus-api-client: Python modbus api client example to interface with your Peblar charger via Modbus API
Ce script utilise un autre module que le plugin MyModbus.
Le script de test tente d’écrire 1 au registre 40000, juste pour tester, ce serait intéressant de savoir le résultat de ce script.

Par ailleurs, vous avez essayé avec un autre outil Modbus (Modbus Doctor par exemple) ?

edit:
Il semblerait que ce soit lié au firmware 1.8.0 de Peblar d’après une issue sur leur script de test :
Modbus writes not working on fw 1.8.0 · Issue #2 · Peblar/py-modbus-api-client · GitHub

Il y a donc 2 moyens de contourner le problème :

Thanks for reporting this issue. It has been confirmed and will be fixed in the next patch release. For context: The issue only occurs if your charger is commissioned as single phase.

For now there are 2 workarounds:

  1. Downgrade to 1.7.1
  2. Temporarily recommission the charger as 3-phase (even though only 1 phase is connected) and use Force1Phase (address 40002) to make sure only 1 phase is used.
  1. Repasser en firmware 1.7.1
  2. Remettre en service le chargeur provisoirement comme un chargeur triphasé mais le limiter à une seule phase en écrivant 1 au registre 40002 pour le passer en monophasé

→ Ce serait donc une mise à jour de firmware du chargeur qui soit à l’origine de votre problème.

Bonjour

merci pour les infos, c’était un peu ce que je craignais.

c’est une borne fournie pour l’employeur, je n’ai pas de droit sur les mises à jour, elles sont faites automatiquement par Eneco.

je vais voir avec eux, mais je crains que ce soit mort.

Merci encore,

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.