Plugin MyModbus

Je vous remercie jeanlegrand
J’ai les tableaux dont j’ai besoin de l’onduleur pour la communication modbus rtu,
par exemple:
40019 (état de démarrage ou d’arrêt)
44134 (tension continue)
Avec le programme Modbus Poll, je communique bien. Mais je l’ai essayé avec le plugin Modbus RTU, et au début le démon n’a pas démarré, puis j’ai réussi mais j’ai des problèmes de lecture.
C’est la raison pour laquelle je veux essayer le blueone HJ8000 pour accéder à Modbus RTU via TCP.

Ce que je ne sais pas, c’est configurer le HJ8000 pour qu’il fonctionne comme un serveur Modbus TCP et nous pouvons communiquer MyModbus avec l’onduleur.

Avec quel outil pourrais-je vérifier que la communication Modbus TCP fonctionne bien avant d’essayer MyModbus? Peut-être Modbus TCP Toolbox?

j ai mis la configuration avec un RS232/485 TO ETH que j ai et bison a réussi avec un ZLAN5143D . Mais je ne connais pas ton model . si tu trouves, montre nous ta configuration !

Salut,

Je tente de t’aider mais je suis un peu neuf sur le sujet :slight_smile:

Est-ce que tu arrives déjà à accéder à ton appareil via un navigateur web ?
IP par défaut : 192.168.98.1
Mot de passe par défaut : 888888

Après faut voir d’après moi dans « UART »
Type : RS485
Netmode : server
Port : 502 je dirais puis il faudrait adapter le rester à ton matériel modbus (databit, stopbit …)

Avec modbus doctor ensuite pour tester si tu te connecte depuis ton PC sur 192.168.98.1:502 tu devrais déjà avoir une connexion.

Après restra la partie interrogation des registres … c’est encore une autre étape.

2 « J'aime »

Salut
Sur quoi tourne ton jeedom? Docker?
Les versions affichées semblent vieilles. Mon pip3 sous raspian est à la version 18.1

Voir ce fil peut-être: https://github.com/pypa/pip/issues/5247

Antoine

Non, pas de Docker, j’ai une instal classique raspberry pi 3+ sous stretch, je pense que je vais devoir me coltiner le passage à buster et jeedom v4 pour résoudre tout ça.

Si pas déjà fait, lancer un sudo Apt update puis sudo Apt fullupgrade mais le problème dépasse mes connaissances.

Antoine

Oui, merci quand même, j’ai malheureusement essayé des trucs…du coup j’ai d’autres problème.

Merci, Bison

Voici la configuration que j’ai:

Avec modbus doctor je me connecte bien, mais quand je veux le lire, j’obtiens une erreur: (état: time out-00)

peut-être que le problème est la configuration P2P
Cela n’explique pas grand-chose dans le manuel

Si vous avez une idée ou une inspiration … je vous lis

Bon c’est déjà pas mal :slight_smile:

Après au vu du schémas de l’appareil, d’intuition je sectionnerais plutôt COM2 dans le champs COM

image

1 « J'aime »

Merci @Bison

Je n’avais pas réalisé ce détail

Je communique tres bien avec Jeedom.

image

Ce fut la configuration finale de blueone.

La communication est parfois toutes les 30 secondes et d’autres fois elle passe 30 minutes et plus sans mettre à jour l’état (informations).

En configuration Mymodbus: polling en secondes (j’en ai mis 10)

Dans la commande information dans sa configuration, dans la gestion de la répétition des valeurs, je l’ai paramétré pour toujours répéter.

Je ne sais pas si je laisse quelque chose pour que le statut soit mis à jour en continu toutes les minutes par exemple.

Ah oui il fallait donc aussi changer le protocole :grinning:.
Aucune idée pour la mise à jour des valeurs !
Essaye d’interroger un autre registre qui doit bouger régulièrement pour comparer.

Bonjour,

Un grand merci à toi @Bebel27 , j’ai maintenant mon compteur avec petite virgule.

A l’occasion pour une petit mousse lors d’un passage en Isère.

Très bon boulot, le Eastron fonctionne aussi avec les compteur de marque SINOTIMER.

Cdt,

1 « J'aime »

Merci beaucoup pour l’adaptation en bêta sur les Eastron @Bebel27

Au top :+1:

1 « J'aime »

Merci pour vos message de remerciement ou d’encouragement , ça fait plaisir.

suite à mon problème de dépendance sur la version beta.
j’ai vu ce matin une mise à jour !
j’ai donc retenté ma chance…dépendance toujours NOK
mais je persiste et je suis parti sur le problème pyserial qui ressortait des logs

Installing collected packages: pyserial, pyModbus
Attempting uninstall: pyserial
Found existing installation: pyserial 3.2.1
ERROR: Cannot uninstall ‹ pyserial ›. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall

j’ai suivi les indication de ce site: (pour mon raspberry pi 3)
https://raspberrypi.stackexchange.com/questions/68837/pyserial-error-on-raspberry-3
J’ai donc fait:

sudo apt-get remove python-serial
sudo apt-get remove python3-serial

puis

sudo pip install --upgrade pyserial

et

pip install pyserial

et relancé mon raspberry !

Miracle ! les dépendances sont au vert !

bon ! (ça serait trop beau sinon)
Maintenant c’est le Démon qui reste NOK malgré mon équipement « arduino test » qui d’ailleurs est pilotable (commande action)

[2020-06-25 15:03:50][ERROR] : Attention je pense qu’il y a un soucis avec le démon que j’ai relancé plus de 3 fois consecutivement
[2020-06-25 15:03:50][INFO] : coils trouvées :500
[2020-06-25 15:03:50][INFO] : Lancement du démon mymodbus : nice -n 19 /usr/bin/python3 /var/www/html/plugins/mymodbus/ressources/mymodbus_demond.py -h 192.168.31.161 -p 502 --unit_id=1 --polling=5 --keepopen=0 --protocol=tcpip --eqid=1119 --coils=500
Exception in thread Thread-1:
Traceback (most recent call last):
File « /usr/lib/python3.5/threading.py », line 914, in _bootstrap_inner
self.run()
File « /usr/lib/python3.5/threading.py », line 862, in run
self._target(*self._args, **self._kwargs)
File « /var/www/html/plugins/mymodbus/ressources/mymodbus_demond.py », line 149, in polling_thread
subprocess.Popen([‹ /usr/bin/php ›,mymodbus,‹ add= ›+host,‹ unit= ›+str(unit_id),‹ eqid= ›+str(eq_id),‹ type=coils ›,‹ sortie=1 ›,‹ inputs= ›+str(int(coil_start)),‹ values= ›+str(rr.bits[:i])])
AttributeError: ‹ ExceptionResponse › object has no attribute ‹ bits ›
Version de python ok
Traceback (most recent call last):
File « /var/www/html/plugins/mymodbus/ressources/mymodbus_demond.py », line 269, in
raise ParameterException(‹ Thread en d\xe9faut ›)
NameError: name ‹ ParameterException › is not defined

voila ce que j’ai dans les logs.

bon, j’ai rien dis je devais avoir une commande info mal renseigné.
le Démon tourne !
tout fonctionne !
super !
Merci !

1 « J'aime »

Bonjour,
Je reviens avec mon SOFREL, j’ai réussi avec modbusdoctor. Je récupère des valeurs identique à celle à mymodbus.
Est-il possible d’avoir une valeur avec virgule dans mymodbus?
Sur mon SOFREL , j’ai en mesure de niveau 1.56m et mymodbus me donne :


Merci de votre retour

Personnellement j’ai pas compris.

Tu dis que tu récupères une valeur identique entre modbus doctor et mymodbus et tu nous montre un screnshot qui n’indique pas du tout la valeur 1.56 !?

Désolé je me suis trompé.
Effectivement, mymodbus valeur récupéré 1, modbusdoctor valeur ci-dessus mais en enlevant les options (inv octets et inv mots) je retrouve 1.
Ma valeur sur mon SOFREL est bien de 1.56m…
Donc certainement une erreur dans mon paramétrage SOFREL, mais laquelle?

Oui donc en fait que ce soit avec un outil ou un autre tu n’as pas encore obtenu la vraie valeur de 1.56 !
A vu de nez je dirais que ta valeur est codée sur 32bits et non 16bits.

Essaye dans modbus doctor de :

  • passer en MOT 32 bits
  • de mettre Longueur 2 (à la place de 1)

Affiche le même panneaux et regarde dans la valeur Mot 32 ou Réel 32 si tu peux retrouver 1,56 en jouant avec les cases à cochées Inv. Octets et Inv Mots.

Il y a beaucoup de chance pour que tu es ta valeur sans rien avoir de coché ou bien avec juste « Inv Mots ».

1 « J'aime »