Les plugins Modbus (RTU et TCP)

ca n’a pas vraiment de rapport avec la V4 c’est un soucis du a buster, ou plutot a php7.3.

Bonjour,

Je rencontre un problème avec le plugin ModbusRTU pour communiquer avec un module d’entrées / sorties. Je possède un convertisseur USB->RS485 déjà testé sur un PC et Modbus Poll, celui-ci est bien fonctionnel. Il est bien détecter sur le RPI.

image

Pour moi le convertisseur ne reçoit pas de demande de la part de Jeedom. J’ai 2 voyants (Rx et Tx) et ceux-ci ne s’allument pas. Voici un extrait du log du plugin :

Extrait des logs :

[2019-12-04 13:18:15][DEBUG] : Lancement de : /var/www/html/core/class/../../core/php/jeePlugin.php  plugin_id=modbusrtu function=remove callInstallFunction=1
[2019-12-04 13:18:26][INFO] : Début d'activation du plugin
[2019-12-04 13:18:27][INFO] : Info sur le démon : {"launchable_message":"","launchable":"nok","state":"nok","log":"nok","auto":0}
[2019-12-04 13:18:27][DEBUG] : Lancement de : /var/www/html/core/class/../../core/php/jeePlugin.php  plugin_id=modbusrtu function=install callInstallFunction=1
[2019-12-04 13:19:10][INFO] : Lancement démon modbusrtu : /usr/bin/python /var/www/html/plugins/modbusrtu/resources/modbusrtud/modbusrtud.py --loglevel debug --socketport 55010 --sockethost 127.0.0.1 --callback 
[2019-12-04 13:19:11][INFO] : Start modbusd
[2019-12-04 13:19:11][INFO] : Log level : debug
[2019-12-04 13:19:11][INFO] : Socket port : 55010
[2019-12-04 13:19:11][INFO] : Socket host : 127.0.0.1
[2019-12-04 13:19:11][INFO] : Callback : http://127.0.0.1:80/plugins/modbusrtu/core/php/jeeModbusrtu.php
[2019-12-04 13:19:11][INFO] : Cycle : 0.3
[2019-12-04 13:19:11][DEBUG] : Writing PID 4696 to /tmp/jeedom/modbusrtu/deamon.pid
[2019-12-04 13:19:11][DEBUG] : Init request module v2.12.4
[2019-12-04 13:19:11][DEBUG] : Starting new HTTP connection (1): 127.0.0.1
[2019-12-04 13:19:11][DEBUG] : Socket interface started
[2019-12-04 13:19:11][DEBUG] : LoopNetServer Thread started
[2019-12-04 13:19:11][DEBUG] : Start listening...
[2019-12-04 13:19:11][DEBUG] : Listening on: [127.0.0.1:55010]
[2019-12-04 13:19:11][DEBUG] : Client connected to [127.0.0.1:40734]
[2019-12-04 13:19:11][DEBUG] : Message read from socket: {"apikey":"jqEjlkhlh4hjhackkNyA22wt2WsKud9","cmd":"add","device":{"id":"1","type":"rtu","name":"FIOD0808PB","maitreesclave":"local","unit":"2","serialport":"\/dev\/ttyUSB0","sship":"","sshport":"","sshuser":"","sshpass":"","sshpath":"","sshdevice":"","baudrate":"9600","parity":"none","bytesize":"8","stopbits":"1","register":[{"location":"1","datatype":"normal","functioncode":"","nbregister":""}],"bimaster":"0"}}
[2019-12-04 13:19:11][DEBUG] : Client disconnected from [127.0.0.1:40734]
[2019-12-04 13:19:11][DEBUG] : Message received in socket JEEDOM_SOCKET_MESSAGE
[2019-12-04 13:19:11][INFO] : Received command from jeedom : add
[2019-12-04 13:19:11][DEBUG] : Add device : {u'sshuser': u'', u'parity': u'none', u'baudrate': u'9600', u'name': u'FIOD0808PB', u'bimaster': u'0', u'sshpath': u'', u'register': [{u'datatype': u'normal', u'nbregister': u'', u'functioncode': u'', u'location': u'1'}], u'serialport': u'/dev/ttyUSB0', u'stopbits': u'1', u'sship': u'', u'sshdevice': u'', u'sshpass': u'', u'bytesize': u'8', u'sshport': u'', u'maitreesclave': u'local', u'type': u'rtu', u'id': u'1', u'unit': u'2'}
[2019-12-04 13:19:15][DEBUG] : Handling RTU for FIOD0808PB
[2019-12-04 13:19:15][DEBUG] : Handling local request read for FIOD0808PB
[2019-12-04 13:19:15][DEBUG] : Command to execute sudo /usr/bin/python /var/www/html/plugins/modbusrtu/resources/modbusrtud/modbus_rtu.py --slave 2 --device /dev/ttyUSB0 --baud 9600 --byte 8 --parity none --stop 1 --register '{"listdevice":[{"datatype": "normal", "nbregister": "", "functioncode": "", "location": "1"}]}' --action read
[2019-12-04 13:19:24][DEBUG] : MinimalModbus debug mode. Create serial port /dev/ttyUSB0
list index out of range
{}

[2019-12-04 13:19:24][DEBUG] : No JSON object could be decoded
[2019-12-04 13:19:24][DEBUG] : Handling RTU for FIOD0808PB
[2019-12-04 13:19:24][DEBUG] : Handling local request read for FIOD0808PB
[2019-12-04 13:19:24][DEBUG] : Command to execute sudo /usr/bin/python /var/www/html/plugins/modbusrtu/resources/modbusrtud/modbus_rtu.py --slave 2 --device /dev/ttyUSB0 --baud 9600 --byte 8 --parity none --stop 1 --register '{"listdevice":[{"datatype": "normal", "nbregister": "", "functioncode": "", "location": "1"}]}' --action read
[2019-12-04 13:19:33][DEBUG] : MinimalModbus debug mode. Create serial port /dev/ttyUSB0
list index out of range
{}

Je retrouve les 5 dernières lignes qui se répète en continue. D’ailleurs ou peut-on régler le poll sur ce plugins ?

Merci de votre aide !

Bonjour,
Je recherche le plugin Modbus RTU pour mon Jeedom sur mon Raspberry Pi.
Je ne le trouve ni sur le market, ni autre.
Ou puis-je le récupérer?
Merci.

Hello,
C’est indiqué sur cette page. Je cite :

Ahhhhhh! Alors si si… Mais il est bien sur le market. Mais le plugin est en beta.
Donc non visible de base.
Dans ton profil Market, il faut cocher “Activer l’accès aux plugins beta”.
Lors de la recherche, cliquer sur “beta”.

1 « J'aime »

Bonjour,

J’utilise le plugin Modbus TCP
Avez vous la solution pour lire 1 bit dans un mot? possibilité de mettre un masque?

merci

Bonjour ngm47,

Pour faire cela il te faut le plugin Virtuel, ajouter une nouvelle info et utiliser la synthaxe suivante :

Tu viens pointer ton mot via « rechercher équipement » et tu rajoutes « & X » ou X est le bit converti en décimal que tu souhaites lire. Dans la copie d’écran ci-dessus le premier bit. Ensuite 2 pour le bit 2, 4 pour le 3, 8 pour le 4… et ainsi de suite.

2 « J'aime »

Merci beaucoup pour l’info, je teste ça.

Hello la communauté.

Je galère pas mal avec le plugin Modbus (TCP donc). Les lectures sont correctes, mais impossible d’écrire quoi que ce soit. Dans les logs j’ai:
[2019-12-26 11:54:02][INFO] : Debut de l action /usr/bin/python /var/www/html/plugins/modbus/ressources/modbus_write.py -h 192.168.1.70 -p 502 --wsr=200 --value= 2>&1

Quelque soit la valeur que j’essai d’écrire … j’ai cette trace là.

Quand je passe la requete en lecture, je lis la bonne valeur, mais en écriture … rien.

Actuellement, je suis passé en MQTT pour palier au problème … mais bon, j’ai acheté ce plugin Modbus … donc :confused:

Si une âme charitable a une idée …

merci

Salut,

Peux-tu nous montrer la configuration de ton équipement?

Je pense que tu as omis de mettre une valeur dans la commande à envoyer.

Tu l’as mise directement dans la commande ou par un autre moyen?

1 « J'aime »

Hello, merci de ta réponse. C’est un scénario qui envoie la commande, via une action. Ma variable modbus est un Holding de type action.

EDIT: En effet, la valeur doit être mise dans le point Modbus et non pas dans le scenario en tant que valeur de commande … la valeur arrive bien sur mon simulateur modbus … reste à le faire arriver dans mon équipement final. Merci en tout cas :wink:

1 « J'aime »

Je me répond à moi même … le plug in semble ne vouloir faire des écritures que sur l’adresse esclave 1 … j’étais en 103, donc ça ne fonctionnait pas. j’ai basculé mon equipement en ID1 et ca marche :wink:

1 « J'aime »

Bonjour,
Je cherche actuellement à faire marcher ce plugin modbus sur un jeedom installé sur une VM Delta,
je n’arrive pas à lancer le demon qui refuse de démarrer ?
j’ai la version pyModbus 0.1.8
Qu’en pensez vous ?

As-tu défini un équipement avant de vouloir démarrer le deamon ?
Il ne démarrera pas sans en avoir minimum un de configuré.

Bonjour,
Oui, J’ai défini un équipement apres avoir modifié une ligne de modbus.php car j’avais une erreur due au fait que free utilise une version récente du PHP.

Finalement, le plugin Modbus est tombé en marche apres avoir ajouté 2 E/S sur mon équipement. Je poursuis les tests

Je confirme ce qui est dis dans ce message. Je dispose de plusieurs « grappes » de disjoncteurs 160A. Nous avons jusqu’à 8 disjoncteurs pour une passerelle Modbus TCP. Lorsque la mise à jour des donnes d’un disjoncteurs est faite sur Jeedom (voltage, puissance, ce sont les deux donnés qui m’intéressent), ce sont les donnés de tous les disjoncteurs qui sont sur une même passerelle Modbus TCP qui sont mises à jours dans Jeedom. C’est dommage

Bonjour à tous,

Ça fait un moment que je suis ces sujets sur les MODBUS.Je veux m’équiper d’une JeeDom avec des cartes l/O, mais quand je vois les difficultés que ça pose, je m’interroge !
Apparemment d’après ce que j’ai vu on peut également utiliser des cartes l/O en TCP/IP avec lesquelles on envoie des commandes dans un script. Mais je ne sais pas trop comment ça fonctionne pour les entrées. D’après le peu que j’ai compris il faut un plugin spécifique.

Bref, qu’en pensez-vous, pour un néophite comme moi qui ne sais pas taper une ligne de code et qui démare en domotique, que devrais-je acheter ?

Merci

commence avec un IPX c’est pas mal et en plus y’a un plugin dédié

Oui, j’y ai bien pensé mais c’est bizarre leur gamme ! Par exemple si on prend un module 8 sorties 8 entrées (X8R) les entrées ne sont pas intégrables dans le scénario de IPX800V4 !
Et en terme de coût on est quand même plus cher que des cartes chinoises.

Comme plus haut, je recommande l’IPX800 de GCE en carte I/O. Couplé à Jeedom, les possibilités sont énormes