Enfin une solution pour le plugin Modbus (TCP)

Bonjour à tous,
en ces temps de confinement (…), j’ai passé quelques soirées a bricoler du PHP…
Comme beaucoup, je souffrais, depuis plus de 3 ans, d’utiliser un plugin jamais abouti alors que le protocole Modbus est très pratique a utiliser et très fiable car issu de l’automatisme industriel! Je suis moi même dans le domaine de l’informatique industriel et je connais ce protocole depuis ces débuts.
Je tiens tout d’abord à remercier Thomas Martinez qui a fait l’essentiel du job. Il n’était apparemment pas très alaise avec l’automatisme mais il a réalisé le tout le plugin!
Il n’en restait pas moins qu’après plusieurs hésitations devant ce débogage sur des langages qui me sont inconnus (PHP et JS) et mes recherches récurrentes infructueuses parmi les forums spécialisés, j’ai décidé de me retrousser les manches!
Alors voici les points sur lesquels j’ai travaillé et trouvé une solution:
-Arrêt des démons Modbus_Master.py. La méthode employée fermait au mieux un PID. les autres continuaient de tourner. Une horreur lorsque vous rajoutez de nouvelles fonctions dans votre environnent domotique. C’était la priorité! Même si vous arrêtiez le plugin les démons n’était pas stoppé donc vos nouvelles modifs ne passaient que rarement. J’ai viré la routine longue, complexe et infructueuse et je l’ai remplacé par la bonne commande linux! Une merveille. C’est imparable, ça fonctionne à tout les coups!
-Amélioration du bouton « Arrêter Modbus ». Sur ma lancé, pour être alaise lorsqu’on fait des essais, il fallait pouvoir relancer les démons avec la nouvelle config. J’ai donc transformé l’ancien bouton « Arrêter Modbus » en « Relancer Modbus ». Mais il fallait attendre le prochain chron pour que les démons se relancent alors j’ai rajouté le redémarrage juste après l’arrêt. En plus maintenant c’est hyper rapide!
-Allégement de la routine d’analyse des comptes rendus. Ensuite j’ai passé un peu de temps à vérifier le reste du code et je me suis rendu compte que la boucle d’analyse des données reçues faisait une requête en BD à chaque tour pour les mêmes données! Un début d’explication sur la gourmandise en ressource CPU de ce vieux plugin! J’ai modifié la Classe pour n’effectuer la requête qu’une seule fois. Et Bingo! Le proc s’est bien calmé avec cette dernière modif et les cœurs ne montent plus à 100%.
-Gestion des erreurs Modbus_Write. Il restait a fiabiliser l’écriture pour s’assurer que les infos sont bien transmises. J’ai créé une boucle qui envoie jusqu’à 4 trames espacées d’une seconde tant que le retour n’est pas bon.

Voilà, avec ses 3 points, le plugin Modbus TCP est maintenant plus rapide et plus fiable. Et il consomme moins de ressources :wink: Avant cela, j’avais décentralisé ce plugin sur une nouvelle bestiolePY à cause de la surconsommation…

Il reste encore des améliorations à apporter: historique, enable/desable de chaque variable,…
Si quelqu’un veut continuer le travail :wink:

Pour ceux qui sont intéressé par cette version 3.0, merci de me contacter en MD SVP.

@Kyoshi, j’ai lu que tu travaillais aussi sur les problèmes de plugin Modbus. peux-tu me dire ou tu en es arrivé?

1 « J'aime »

Hello,

Je ne travaille pas sur le travail.
Je ne suis pas développeur donc difficile :smiley:.

Lorsque j’ai voulu domotiser ma chaudière, j’étais en face de deux plugins :

  • ModBus RTU, permettant uniquement un fonctionnement avec un branchement USB (de nos jours, je ne comprends pas pourquoi on se fatigue en déportant un RasBerry Pi ou autre près de la chaudière alors que l’Ethernet est bien plus pertinent à mon sens…)
  • ModBus TCP, permettant du ModBus TCP et du Modbus RTU Over TCP si on fait une petite modification dans le code

Je suis donc parti sur le plugin ModBus TCP mais je n’avais aucun résultat.
En cherchant, débuguant, j’ai trouvé les lignes de codes qui faisait que je n’avais aucun retour.
En les commentant (ce n’est pas une solution, juste du sparadrap), cela fonctionnait.

J’ai posté ma solution et j’ai créé sur community un post évoquant le sujet du Modbus… Qui est tout de même important pour de la domotique… Surtout si Jeedom se répand en entreprise… Je ne comprenais pas pourquoi un tel abandon (c’est la faiblesse de Jeedom par rapport à d’autre je trouve… Etre lié à un développeur en particulier…).

On se retrouve maintenant avec un troisième plugin, MyModbus de @Bebel27. Bien plus prometteur que les deux autres laissés à l’abandon.

Et on a également une reprise du développement par Jeedom du plugin officiel.

J’attend de voir ce que cela donne.

1 « J'aime »

@nyck
Bonjour,

Merci pour tout ce travail sur le Plugin ModBus. Ce plugin est effectivement très utile pour moi car j’ai utilisé il y bientôt 20 ans un automate Twido pour automatiser ma maison de campagne. Toute la communication se fait en ModBus TCP-IP. J’avais dans un premier temps fait un « front-end » en PHP pour visualiser l’état de la maison, mais Jeedom, c’est autre chose !
J’avais contourné le pb du plugin ModBus en faisant une organisation de donnée spécifique, c’est à dire que j’ai mis toutes mes informations sur quelques mots de 16 bits contigus pour n’avoir qu’une seule commande de lecture et une seule d’écriture. Je fonctionne ainsi depuis des années. La charge est OK, mais effectivement les marches/arrets sont fastidieux …
J’ai depuis ajouté un capteur de niveau ultra-son pour ma cuve de fioul qui est aussi en Modbus. J’ai aussi en projet une interface avec ma vielle chaudière WiessMann (bus-km via arduino).
Je suis intéressé par ton plugin pour le tester car il est, je suppose, 100% compatible avec l’ancien. Je regarderais aussi celui de Bebel27 qui semble être très avancé et est sur le site Jeedom.
Je vais te contacter en MP pour avoir ton Plugin et le tester chez moi …

Bonne Journée
Frédéric

Bonjour,

J’ai découvert le projet de Bebel27 après coup !

Il est lui aussi reparti sur la base du plugin Modbus de tmartinez mais il a réalisé un travail beaucoup plus conséquent !!!

Du coup, franchement je suis en train de migrer ce que j’avais sur l’ancien plugin vers Mymodbus. J’espère que le projet de bebel27 pourra aboutir a une version stable officiel mais il semble que la team jeedom ne soit pas convaincu pour l’instant.

A très bientôt sur le forum !

1 « J'aime »

Pour Info le plugin est en stable :wink:
J’attends encore quelques essais avant de sortir la prochaine bêta qui apport la lecture de float32 et de int16 bits. Je suis passé sous python 3 et je suis passé sur une autre version de bibliothèque. Il y a aussi des fonctions de filtrage intégré, j’ai retravaillé le démond pour faire des filtres sans surcharger le démond et dans un futur proche il n’y auras qu’un seul demond qui gérera les connections en thread. Plus simple à gérer que d’avoir un démon par connection. Bref plein d’idées en vue .je vous invités à rejoindre le sujet de MyModbus.
@ bientôt

3 « J'aime »

Bonjour, je suis pas très fort mais bon j’essaie.

J’ai un compteur électrique ET112 qui fait :
Port Modbus RS485 (bornes à vis et connexion RJ45)
• Port optique
RTU

Au plus simple possible
Que dois-je faire un voir ma consommation et/ou production d’électricité sur Jeedom ?
Quelle passerelle dois je mettre ? Pour quelle plugin ?

S’il faut un rasberipie j’avoue je laisse tomber ^^ c’est pour les pro a ce niveau là :slight_smile:

Bonjour à tous
Je découvre le rs485, via le système de zoning de climatisation KOOLNOVA.
Beaucoup connaissent Airzone, très cher, beaucoup de mécontent, j’ai opté pour un système moins cher
Koolnova, utilise un module serveur web, permettant de transmettre des trames infra rouge à la clim…
Les grilles de diffusion motorisées, sont connecté à ce module (sur 24v) en bus485
En lisant quelque fils de discussion sur rs485, je vois qu’il existe sur alixpres, des modules rs485/wifi ip…

Ce type de module peut fonctionner avec le plugin?
Ce type de module récupère des info rs485, mais comment elles sont présentées au format html?

Je suis dans les startingblock pour acheter et inclure ma clim dans jeedom!

1 « J'aime »