Evolutions du plugin MyModbus version bêta

Bonjour,

11/03/2024 V2.0 beta37

  • Amélioration de l’interaction avec pyenv

→ Il n’y aura plus le message Jeedom comme quoi le démon a été lancé trois fois sans succès.

A+
Michel

Bonjour,

14/03/2024 V2.0 beta38

  • Logs un peu plus détaillés en mode debug

Il s’agit pratiquement d’une mise à jour cosmétique

A+
Michel

Bonjour,

Je me permets de poster une info ici concernant pyenv4Jeedom. La prochaine mise à jour nécessitera de stopper les démons des plugins qui utilisent pyenv4Jeedom. A ma connaissance, ce n’est que MyModbus pour le moment.

De manière générale, il faudra toujours vérifier le changelog avant de faire une mise à jour de pyenv4Jeedom pour être au courant de ce qui vous attend :

J’ai essayé mais je n’ai pas trouvé de moyen de faire autrement que de supprimer les installations existantes. Elles doivent donc être refaites.

A+
Michel

Bonjour,

15/04/2024 V2.0 beta39

  • Correction de l’utilisation de la fonction strtolower (merci à @Jean-Baptiste)

A+
Michel

Bonjour,

17/06/2024 V2.0 beta41

  • Correction d’une erreur de syntaxe (merci @m.georgein)
  • Lors de l’exécution d’une commande action, il faut vérifier si l’équipement est actif avant d’envoyer la commande au démon

Prochaine évolution majeure : utilisation de la bibliothèque jeedomdaemon de Mips

edit: je me suis rendu compte que je n’avais pas posté le changelog de la version beta40… oups

A+
Michel

Bonjour,

je suis en train de tester la prochaine version de MyModbus : pour le même équipement TCP (Huawei SUN2000) l’équipement qui nécessite plus de 30 secondes de polling peut être passé à 15 secondes sans problème.
Je débug et teste encore puis je publierai la novelle bêta. Mais ça promet !

Le fait que je me sois documenté sur les fonctions asynchrones et l’utilisation de la dernière version de pymodbus employée dans MyModbus avec un principe équivalent à ce qui est fait dans Home Assistant sont les principales causes de ce gain de performance.

Je vous tiens au jus.

A+
Michel

edit: et j’utilise aussi des bibliothèques pour Jeedom développée par @Mips, @TiTidom et @nebz qui m’a simplifié les choses.

Bonjour,

Après ce teasing d’une longueur insupportable, la voilà : la nouvelle bêta dont le démon a été entièrement réécrit. Bon j’ai repris quelques petites choses quand même.

Il s’agit de la bêta 42. Allez savoir pourquoi, c’est la réponse universelle.

Avis aux heureux propriétaires d’une chaudière De Dietrich : peut-être que tous les nouveaux paramètres mis en place dans cette version permettront de faire fonctionner la communication avec cette chaudière dont le mode bi-maître m’a posé quelques soucis. Ce n’est pas testé parce que je n’ai pas une telle chaudière, mais j’ai grand espoir.

ATTENTION : il s’agit d’une toute nouvelle bêta, avant la mise à jour, faites une sauvegarde, des captures de configuration, un export d’équipement et prenez toutes les précautions possibles.
Il va falloir vérifier vos équipements MyModbus.

17/09/2024 V2.0 beta42

:warning: Important

  1. Avant de faire cette mise à jour, désactivez les équipements MyModbus. Faites une capture de la configuration des équipements et des commandes. Après la mise à jour, sauvegardez les équipements sans les activer. Vérifiez bien la configuration des commandes.
  2. Si des commandes dont l’adresse d’esclave vaut 0 ne fonctionnent plus après la mise à jour, il faut passer cette valeur à 1. Il s’agit de la valeur par défaut depuis pymodbus v3.7.0. Si les erreurs persistent, recherchez quelle est la valeur à renseigner dans la documentation constructeur.
  • Réécriture complète du démon :
    • Utilisation de bibliothèques de dev tiers pour Jeedom (jeedomdaemon, dependance.lib, pyenv.lib) (merci @Mips, @nebz et @TiTiDom)
    • Utilisation de pymodbus V3.7.2 (à ce jour)
    • Abandon de BinaryPayloadBuilder et BinaryPayloadDecoder appelés à disparaître du module pymodbus (dès 3.8.0 pas encore sortie)
    • Ajout des paramètres d’équipement :
      • Timeout pour la connexion
      • Nombre de tentatives en cas d’erreur de lecture
      • Temps d’attente après une erreur de lecture pour éviter d’enchainer les erreurs pour la même raison
    • Structure des appels des sous-classes pymodbus.ModbusRequest inspirée de l’intégration Modbus de Home-Assistant
    • Ajout de la commande info Cycle OK qui est mise à 1 si le dernier cycle de lecture s’est déroulé sans erreur, sinon 0. Cette commande peut être surveillée. Si elle passe à 0, c’est qu’il y a eu un problème durant le dernier cycle de lecture
    • Il n’est plus possible de modifier le niveau de log à la volée, il faut redémarrer le démon
  • Page de configuration de l’équipement :
    • Plus rapide : sans appels ajax à des pages php locales
    • Le bouton ‹ Ajouter une commande › est flottant (merci @noodom), le bouton en bas de page est supprimé
  • Suppression du format bit inversé qui ne fonctionnait pas et qui est facile à mettre en place (1 - #value#)
  • Suppression des formats int8, seuls les formats uint8 sont gardés
  • Suppression du format float16
  • Prise en compte de l’inversion des octets et des mots pour les chaînes de caractères

Bien sûr j’attends vos retours

A+
Michel

Bonjour,

Suite à cette première journée qui aurait pu être bien pire étant donné que le démon était complètement réécrit :

18/09/2024 V2.0 beta43

  • Optimisation du verrou qui permet les requêtes afin que les écritures puissent être faites plus rapidement
  • Vérification de l’état de la connexion avant chaque requête
  • Le polling peut être configuré à 0.01s minimum
  • Reprise de l’ancienne configuration du format de données pour les commandes action également
  • Le démon n’est pas « launchable » si le venv n’est pas présent
  • Suppression de l’ancien répertoire mal orthographié « ressources » (avec 2 S)

Merci @ngm47 et @Patrick57 pour leurs retours.

A+
Michel

Bonjour,

Suite à ce problème nouvelle version :

19/09/2024 V2.0 beta44

  • Prise en compte de la configuration d’inversion des octets et des mots pour les valeurs lues depuis une plage de registres

(merci @thomaspascal)

A+
Michel

Bonjour,

suite à différents problèmes remontés par différentes personnes fort sympathiques de le faire :

20/09/2024 V2.0 beta45

  • Correction du problème avec les templates
  • Correction du problème avec l’ordre des mots d’une valeurs sur plus de 32 bits dans une plage de registres
  • Correction de la prise en charge du paramètre « port » pour les liaisons série

Merci aux personnes qui remontent les problèmes et merci pour leur patience !
(Je ne les tag pas, elles se reconnaitront)

A+
Michel

Bonjour,

22/09/2024 V2.0 beta46

  • Vérification que la commande existe bien lorsqu’un changement de valeur est reçu pour éviter une erreur (merci @thomaspascal)
  • Affichage du bouton « Supprimer » dans le viewer de template (merci @thomaspascal)
  • Corrections pour les connexions série (merci @wocha-fr)

Je rencontre un problème de gestion d’ordre des registres. C’est un « problème » de pymodbus. Je ne rentre pas dans les détails ici, mais il va y avoir du changement. Soyez prêts.

A+
Michel

Bonjour,

23/09/2024 V2.0 beta47

:warning: Important
A partir de cette version, l’inversion des mots ne sera plus nécessaire. La logique a été inversée dans le module pymodbus,
alors j’ai fait des fonctions à ma sauce. Cela affecte les commandes info et action sur des variables d’au moins 32 bits.
Veillez à bien vérifier votre configuration avant et à faire les adaptations nécessaires.

  • Gestion interne du boutisme (endianess) et non plus via pymodbus
  • Suppression du double log en cas d’erreur de lecture

A+
Michel

Pour info :

Chez moi, sur un SUN 2000, il a fallu que je coche ‹ inverser les mots › sur toutes les commandes 32 bits

Possible… Jeedom tourne sur un RPI ?

Cette phrase est mal énoncée. J’aurais du préciser « si l’architecture du CPU est identique entre l’appareil et votre machine Jeedom »

Non, sur une vm proxmox :

Bon en tout cas les processeurs de la machine Jeedom et de l’appareil ont des architectures différentes.

Bonjour,

24/09/2024 V2.0 beta48

  • Correction de la fonction eqLogic.getDeamonLaunchable (merci @wocha-fr)
  • Correction du type d’un index de dictionnaire (merci @wocha-fr)
  • Corrections de syntaxe (merci @thomaspascal, @Droopy et @lperenna)
  • [ESSAI] Gestion correcte d’un temps d’attente après erreur plus long (quelques minutes)

A+
Michel

EDIT:
Ne pas faire cette mise à jour, un problème bloquant a été trouvé :

Je n’ai pas la main sur le plugin et ne peux pas faire de synchronisation manuelle. Le repo github est corrigé.

Bonjour,

25/09/2024 V2.0 beta49

  • Correction de l’erreur de syntaxe qui bloquait les écritures (merci @wocha-fr)

A+
Michel

Bonjour,

26/09/2024 V2.0 beta50

  • Si les valeurs saisies dans la configuration commencent ou se terminent par des espaces, ceux-ci sont ignorés
  • Le polling n’est plus recalculé en cas d’erreur durant le cycle

edit: il faut vraiment que je fasse la doc…

A+
Michel

Bonjour,

Avec cette version j’ai ces messages d’erreur, mais les valeurs sont correctement remontées

0009|[2024-09-26 09:54:22] ERROR  : SUN_2000/blob ONDULEUR: error during read request on slave id 1, address 32005 -> Exception Response(131, 3, SlaveBusy)
0010|[2024-09-26 09:54:56] ERROR  : SUN_2000/blob BATTERIE: error during read request on slave id 1, address 37758 -> Exception Response(131, 3, SlaveBusy)
0011|[2024-09-26 09:54:58] ERROR  : SUN_2000/Blob PARAM: error during read request on slave id 1, address 47082 -> Exception Response(131, 3, SlaveBusy)
0012|[2024-09-26 09:55:27] ERROR  : SUN_2000/Blob PARAM: error during read request on slave id 1, address 47082 -> Exception Response(131, 3, SlaveBusy)
0013|[2024-09-26 09:56:53] ERROR  : SUN_2000/Température Batterie: error during read request on slave id 1, address 37022 -> Exception Response(131, 3, SlaveBusy)

ma config :