Bonjour,
Depuis la derniere mise à jour du plugin Mymodbus, j’ai une erreur dans le daemon ;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: invalid literal for int() with base 10: ‹ ›
[2025-01-26 11:04:43] ERROR : Task exception was never retrieved
future: <Task finished name=‹ Task-6 › coro=<MyModbusd.start_client() done, defined at /var/www/html/plugins/mymodbus/resources/mymodbus/mymodbusd.py:111> exception=ValueError(« invalid literal for int() with base 10: ‹ › »)>
Traceback (most recent call last):
File « /var/www/html/plugins/mymodbus/resources/mymodbus/mymodbusd.py », line 117, in start_client
new_client.read_eqConfig()
File « /var/www/html/plugins/mymodbus/resources/mymodbus/mymodbusclient.py », line 133, in read_eqConfig
« port »: int(self.eqConfig[« eqPort »]),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Maj OS et package faite ainsi que les dépendance du plugin
Quelqu’un aurait’il déjà eu ce type d’erreur? je n’ai rien trouvé sur cette erreur.
Merci,
Informations Jeedom
Core : 4.4.19 (master)
DNS Jeedom : non
Plugin : MyModbus
Version : 2025-01-24 11:07:24 (stable)
Statut Démon : Démarré - (2025-01-26 11:04:43)
Bonjour,
Avez-vous suivi la procédure de migration ?
Ce que je pense
La valeur du port à utiliser n’est pas renseignée. Si vous aviez suivi la procédure, vous auriez sauvegarder l’équipement MyModbus pour valider les paramètres (et faire migrer l’ancienne config vers la nouvelle).
C’est un des points dans la procédure.
Pour aider :
https://mrwaloo.github.io/jeedom-plugins-doc/fr_FR/mymodbus_migration
En effet j’ai suivi la procédure et cela fonctionne mieux mais j’avoue que la migration n’était pas tres visible lors de la mises à jour et dans la note de màj.
Merci,
1 « J'aime »
Au niveau communication, on peut faire mieux je sais. Pourtant :
En octobre j’en avais déjà parlé.
A priori, je dois encore m’améliorer.
C’est surtout à moi de regarder la communauté avant de faire les maj.
Je n’ai pas ce reflexe et je me contente de checker les release notes
J’en mettrai plus dans les changelog pour balayer plus large.
Mais bon maintenant la grosse mise à jour a été faite. A partir de maintenant, ce sera des mises à jour moins importantes et en passant par la bêta. Pour moi c’est plus cool a gérer.
Oui je veux bien le croire!
Il me reste à refaire marcher les lectures sur du 32bits et tout sera ok pour ma migration
Peut-être en fait depuis le changement je n’arrive plus à lire les infos qui sont sur 2 registres sur mon onduleur (U32 donc sur 2 register adress). Je n’arrive pas à le paramétrer avec cette nouvelle version il me retourne des valeurs erronées.
Pour vous aider, j’ai besoin de plus d’info :
- doc constructeur
- capture des commandes ou export de l’équipement
Là, comme ça, c’est pas facile de vous aiguiller.
Cependant, c’est soit un problème d’adressage (décalage de 1 registre) soit un problème d’ordre des octets/mots.
voici la doc :
je cherche à récupérer les lignes grisés.
voici ma commande :
1677 etant 068D en hexa bien sur.
Les 6.69 kWh ne sont pas corrects ? Vous devriez avoir quelle valeur ? Afin de savoir s’il faut inverser les octets ou les mots, il faudrait la valeur lue et la valeur attendue (visible sur l’appli ou la page web ou sur l’appareil ou …).
Tant que la valeur est inférieure à 65535 (655.35 kWh), l’ordre des mots n’entre pas en ligne de compte.
D’après ce que je vois il faudrait mettre un type uint32 qui correspondrait à U32. U pour unsigned (sans signe) → la valeur ne peut être négative.
La valeur devrait être de 13.94
Très curieux, il n’y a pas d’inversion d’octets. Par contre, c’est comme s’il y avait un facteur 2. Dans le calcul que vous faites, au lieu de faire #value# / 100
essayez avec #value# * 2 / 100
ou #value# / 50
ce qui revient au même.
Pour mon info : c’est quoi les colonnes Mask calculation
?
je ne sais pas trop pour Mask calculation
, jai essayer #value# / 5000 mais résultat différent de l’appli… c’est vraiment bizarre 13.4 au lieu de 13.94
Oubliez tout ce que j’ai dit :
- remettez
#value# / 100
- changez l’adresse à 1676, c’est à dire 68C en hexadécimal (je pense que le problème vient de là)
- « jouez » avec l’inversion des mots pour obtenir une valeur cohérente
super ca fonctionne comment es tu arrivé a cette déduction?
Le talent !
J’ai juste revérifié l’adresse du registre en décimal et ai vu un décalage de 1, donc potentiellement, la lecture lisait 2 registres à cheval par rapport à ceux qui t’intéressent. Une fois que la lecture commence au bon registre, ce n’est plus qu’une question d’ordre des registres, c-à-d d’inversion de mots.
Comme le reste fonctionne, ça ne peut être qu’une petite erreur de ce type.
En tout cas un grand merci!
Vous pouvez marquer ma réponse comme étant la solution de ce fil de discussion histoire de ranger un peu.