Les plugins Modbus (RTU et TCP)

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

Bonjour,
Je débute sur JEEDOM. J’ai installé le plugin MODBUS RTU pour remonter les infos d’une VMC double flux thermodynamique NILAN.
J’ai un adaptateur RS485>USB que j’ai testé sur Windows, l’application MODBUS DOCTOR remonte bien les infos des différents registres.
J’ai ensuite essayé sur ma machine DEBIAN où est installé JEEDOM. Avec MODPOLL, j’arrive à remonter également les registre.

modpoll# linux_x86-64/modpoll -b 19200 -p even -m rtu -a 30 -t 3 -r 201 -c 23 -1 /dev/ttyUSB0
modpoll 3.6 - FieldTalk™ Modbus(R) Master Simulator
Copyright (c) 2002-2018 proconX Pty Ltd
Visit https://www.modbusdriver.com for Modbus libraries and tools.

Protocol configuration: Modbus RTU
Slave configuration…: address = 30, start reference = 201, count = 23
Communication…: /dev/ttyUSB0, 19200, 8, 1, even, t/o 1.00 s, poll rate 1000 ms
Data type…: 16-bit register, input register table

– Polling slave…
[201]: 1831
[202]: 1085
[203]: 1594
[204]: 0
[205]: 1129
[206]: 1636
[207]: 1112
[208]: 1594
[209]: 1085
[210]: 0
[211]: 1801
[212]: 0
[213]: 0
[214]: 0
[215]: 0
[216]: 1949
[217]: 0
[218]: 0
[219]: 0
[220]: 0
[221]: 0
[222]: 4422
[223]: 0

Par contre, avec le plugin MODBUS RTU, configuré comme MODPOLL, je n’ai aucun retour.
D’après le log, il y aurait un problème, mais je n’arrive pas à trouver.

[2019-12-30 22:52:33][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 http://127.0.0.1:80/plugins/modbusrtu/core/php/jeeModbusrtu.php --apikey G88gf1O6E0CnVWD3T29u0AWA4jVEn4UN --pid /tmp/jeedom/modbusrtu/deamon.pid
[2019-12-30 22:52:33][INFO] : Start modbusd
[2019-12-30 22:52:33][INFO] : Log level : debug
[2019-12-30 22:52:33][INFO] : Socket port : 55010
[2019-12-30 22:52:33][INFO] : Socket host : 127.0.0.1
[2019-12-30 22:52:33][INFO] : PID file : /tmp/jeedom/modbusrtu/deamon.pid
[2019-12-30 22:52:33][INFO] : Apikey : G88gf1O6E0CnVWD3T29u0AWA4jVEn4UN
[2019-12-30 22:52:33][INFO] : Callback : http://127.0.0.1:80/plugins/modbusrtu/core/php/jeeModbusrtu.php
[2019-12-30 22:52:33][INFO] : Cycle : 0.3
[2019-12-30 22:52:33][DEBUG] : Writing PID 26995 to /tmp/jeedom/modbusrtu/deamon.pid
[2019-12-30 22:52:33][DEBUG] : Init request module v2.12.4
[2019-12-30 22:52:33][DEBUG] : Starting new HTTP connection (1): 127.0.0.1
[2019-12-30 22:52:33][DEBUG] : http://127.0.0.1:80 « GET /plugins/modbusrtu/core/php/jeeModbusrtu.php?apikey=G88gf1O6E0CnVWD3T29u0AWA4jVEn4UN HTTP/1.1 » 200 0
[2019-12-30 22:52:33][DEBUG] : Socket interface started
[2019-12-30 22:52:33][DEBUG] : LoopNetServer Thread started
[2019-12-30 22:52:33][DEBUG] : Start listening…
[2019-12-30 22:52:33][DEBUG] : Listening on: [127.0.0.1:55010]
[2019-12-30 22:52:34][DEBUG] : Client connected to [127.0.0.1:58196]
[2019-12-30 22:52:34][DEBUG] : Message read from socket: {« apikey »:« G88gf1O6E0CnVWD3T29u0AWA4jVEn4UN »,« cmd »:« add »,« device »:{« id »:« 14 »,« type »:« rtu »,« name »:« VMC »,« maitreesclave »:« local »,« unit »:« 30 »,« serialport »:"/dev/ttyUSB0",« sship »:"",« sshport »:"",« sshuser »:"",« sshpass »:"",« sshpath »:"",« sshdevice »:"",« baudrate »:« 19200 »,« parity »:« even »,« bytesize »:« 8 »,« stopbits »:« 1 »,« register »:[{« location »:« 201 »,« datatype »:« normal »,« functioncode »:"",« nbregister »:""},{« location »:« 202 »,« datatype »:« normal »,« functioncode »:"",« nbregister »:""}],« bimaster »:« 0 »}}
[2019-12-30 22:52:34][DEBUG] : Client disconnected from [127.0.0.1:58196]
[2019-12-30 22:52:34][DEBUG] : Message received in socket JEEDOM_SOCKET_MESSAGE
[2019-12-30 22:52:34][INFO] : Received command from jeedom : add
[2019-12-30 22:52:34][DEBUG] : Add device : {u’sshuser’: u’’, u’parity’: u’even’, u’baudrate’: u’19200’, u’name’: u’VMC’, u’bimaster’: u’0’, u’sshpath’: u’’, u’register’: [{u’datatype’: u’normal’, u’nbregister’: u’’, u’functioncode’: u’’, u’location’: u’201’}, {u’datatype’: u’normal’, u’nbregister’: u’’, u’functioncode’: u’’, u’location’: u’202’}], 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’14’, u’unit’: u’30’}
[2019-12-30 22:52:38][DEBUG] : Handling RTU for VMC
[2019-12-30 22:52:38][DEBUG] : Handling local request read for VMC
[2019-12-30 22:52:38][DEBUG] : Command to execute sudo /usr/bin/python /var/www/html/plugins/modbusrtu/resources/modbusrtud/modbus_rtu.py --slave 30 --device /dev/ttyUSB0 --baud 19200 --byte 8 --parity even --stop 1 --register ‹ {« listdevice »:[{« datatype »: « normal », « nbregister »: «  », « functioncode »: «  », « location »: « 201 »}, {« datatype »: « normal », « nbregister »: «  », « functioncode »: «  », « location »: « 202 »}]} › --action read
[2019-12-30 22:52:54][DEBUG] : list index out of range
{}
[2019-12-30 22:52:54][DEBUG] : No JSON object could be decoded
[2019-12-30 22:52:54][DEBUG] : Handling RTU for VMC
[2019-12-30 22:52:54][DEBUG] : Handling local request read for VMC
[2019-12-30 22:52:54][DEBUG] : Command to execute sudo /usr/bin/python /var/www/html/plugins/modbusrtu/resources/modbusrtud/modbus_rtu.py --slave 30 --device /dev/ttyUSB0 --baud 19200 --byte 8 --parity even --stop 1 --register ‹ {« listdevice »:[{« datatype »: « normal », « nbregister »: «  », « functioncode »: «  », « location »: « 201 »}, {« datatype »: « normal », « nbregister »: «  », « functioncode »: «  », « location »: « 202 »}]} › --action read
[2019-12-30 22:53:10][DEBUG] : list index out of range
{}
[2019-12-30 22:53:10][DEBUG] : No JSON object could be decoded

Pouvez-vous m’indiquer la démarche à suivre pour résoudre le problème.
Je ne trouve aucune documentation concernant ce plugin.

Cordialement.

Une partie du problème résolu.
Je n’avais pas mis le nombre de décimales derrière l’adresse (200,0).
Maintenant j’ai bien des infos qui remontent.
Cependant, quand je change de « Type E/S », les valeurs ne changent pas.
Concrètement, dans mon tableau de registre, j’ai :

  • Input register 200 : Input.T0_Controller
  • Holding register 200 : Output.ExhaustSpeed
    Quoi que je choisisse dans « Type E/S », j’ai toujours la valeur « Holding register »
    Est-ce un problème sur le plugin ou ai-je loupé quelque chose ?

Petit tuto rapide pour une configuration qui fonctionne. Personnellement installation du plugin le 20/02/2020 (Beaucoup de 2) je n’ai pas eu de problème de dépendances ou autres.

Configuration générale:

  • Paramétrer le Unit ID qui correspond à l’adresse de l’esclave.
  • Sélectionner le port série, si vous utilisez un convertisseur USB/RS485, il doit l’afficher quand vous le branchez. Si ce n’est pas le cas c’est qu’il n’est pas détecté par le RPi ou autre.
  • Configurer la vitesse (en Bauds), la parité (Pair / Even/ E ou Impaire / Odd/ O), la taille de l’octet(souvent si pas spécifié c’est 8), le bit de stop (1 ou 2). C’est paramètres sont soit fournis dans la documentation soit configurable.
  • Sélectionner le type manuel si ce n’est pas un type standard
    *On retrouve en bas a gauche la date de création de l’équipement et la date de la dernière communication réussi. Ca peut vous aidez à savoir si ca communique toujours

Image récapitulative :

Configuration des données à lire : (Pour le moment j’ai juste configuré des lectures de numérique de base)

  • Type E/S 4 type différents (Coil binaire en lecture/ecriture en code 01 & ?, Discrete input Binaire en lecture seule code 02 , Holding register code 03&16 numérique en lecture/ecriture, Input register code 04 numérique en lecture seule.)
  • Adresse, Décimal. L’adresse correspond à celle de la table de communication modbus sur mon exemple 3010 qui retourne le mot de passe. Penser à mettre Décimale pour dire si vous voulez décaler la valeur lue. Par exemple si la valeur brute est 256 mais que ca correspond à 25,6°C vous pouvez mettre décimale 1. Si votre valeur peut devenir négative, penser à cocher la case en dessous.
    *Paramètres : Vous pouvez sélectionner Normal ou Flottant attention pour flottante c’est lu sur 32bit donc il faut penser à mettre le number registrer à 2. Si dans votre table de communication vous avez une spécification 32bit ou 4 Octets il faut penser à mettre number register à 2. Pour le fonction Code, je ne sais pas très bien a quoi cela sert puisqu’on le renseigne indirectement dans Type E/S
  • Requètes, je ne sais pas a quoi sert ce champs si quelqu’un a l’info.

Image récapitulative :

Quand vous avez finis de paramétrer cette partie, il faut aller redémarrer le Deamon sinon la configuration n’est pas prise en compte.
Vous pouvez en profiter pour cocher la case Debug dans les log.

Quand ca fonctionne dans les log en mode débug vous devez avoir quelque chose du genre.

Bon courage si vous voulez vous servir de ca pour monter une vrai doc pas de soucis.

1 « J'aime »

Arrives-tu à remonter les infos des registres type E/S input ?

Salut les gars, merci pour ton post efficace et désolé du délai de réponse. Correction apporté à l’instant et ça fonctionne, merci !

Bonjour à tous, et @Kyoshi et merci à la communauté pour vos partages et développements !
Je ne sais pas si je dois poster ma demande ici, je tente quand même…
Jusqu’à maintenant je n’ai fait qu’utiliser du matériel nativement compatible avec JEEDOM, et en ce temps de confinement je me suis lancé dans l’ajout d’une carte relais 2 voies Ethernet.
Celle ci fonctionne correctement lorsque je lui envoi des trames TCP via Putty par exemple.
Malheureusement je n’arrive pas à lui envoyer ces mêmes trames via le plugin MODBUS.
La carte est celle ci: lien Aliexpress
Le guide de démarrage rapide: Quick Start Guide
Le test de la carte via Putty : video test
J’ai trouvé ce programme en Python : sr-201-relay.py
A mon avis il y a deux approches, la première étant d’envoyer les valeurs 11 pour fermer le relais 1, 21 pour l’ouvrir directement sur le pour 6722 de l’adresse 192.168.1.100; la seconde approche est d’implémenter le programme sr-201-relay.py et d’y faire appel pour actionner les relais (chose que je ne sais pas faire pour le moment).

Est ce que l’un d’entre vous peut m’aider car je ne sais pas si ma première approche est réalisable via le plugin MODBUS?
Merci d’avance pour vos réponses !

Bonjour,

Cette carte est une carte Modbus qui fonctionne en TCP/IP. Donc en fait il faut que tu utilises le pluging MYMODBUS plustôt que MODBUS : Jeedom Market
(MODBUS utilise le protocole Modbus RTU. Donc par liaison série RS232/422/485 et non pas Ethernet)

Merci pour ta réponse mais je n’ai pas réussi avec le plugin MyModBus. J’ai néanmoins eu un resultat satisfaisant avec un script en PHP. J’arrive maintenant à chager l’état de mes relais, la phase suivant est le retour d’état.

1 « J'aime »

Salut mymodbus est vraiment top j’ai implémenter 3 modules Adam en TCP/IP avec le soutien de son dévellopeur qui maitrise bien sont outil :wink:
N’hesite pas à poster un message il te répondra rapidement.

Fab.

Bonjour à tous , merci pour ce plugin.

J’ai un pompe à chaleur RIBO t-one V2 avec connection USB.

A ce jour j’arrive bien à remonter les valeurs (uniquement info)= thermostat et température et état)

maintenant je voudrais lancer des commandes.
je n’y arrive pas.
voici les extrait de la doc


Comment faut il paramétrer ?

Merci

Idem, je viens de tester avec 2 ADAM6050, implacable !

L’ID des modules Adam est toujours « 1 », pull à « 1 »
Lectures des Input en « Discrete Input » adresses 0 à 11 et 16 à 21 (états DO)
Ecriture des Output en « coïl » adresses 16 à 21 avec valeur « 1 » et « 0 ».

Sans forcer, stable !

Bonjour,

j’utilise le MODBUS plugin avec un automate industriel Crouzet Millenium 3 et son extension XR05.

maintenant que j’ai des panneaux photovoltaiques j’aimerai mettre en place une com aussi en utilisant un USR 232 410S (convertisseur RS232 / RS485 en ethernet) avec un onduleur type PIP 5048 GK (dispo sous denomination voltronic, MPP solar,…) qui communique soit par Bluetooth soit par USB/RS232. j’ai réussi avec l’interface USR à simuler le port RS232 avec un PC en wifi (créer un port virtuel lié au boitier reseau USR) et donc arrive à connecter le logiciel de suivi WATCHPOWER avec ce moyen).

Maintenant, j’aimerai profiter de la liaison en place pour communiquer avec Jeedom.
par contre le moyen de com est assez optu… c’est du chinois.
Table comm Inverter

Est il possible d’envoyer de l’HEXA avec le plugin modbus ? il y a un port RS485 mais qui n’est pas documenté et j’ai l’impression que c’est du server et non client (car prévu pour piloter des batteries Lithium).

quequ’un est à l’aise pour cela ?

merci d’avance !!!

Salut oui on a identifié la même table d’adresse. Et pour bientôt d’après bebel une future modification qui va simplifier la tâche.


Il a de bonne idée ça fait plaisir. De mon côté je vais essayé de créer un client Arduino nano avec Shields ethernet en modbus pour piloter 16 Relais i/o de 250v - 10A.

Bon faut je prenne déjà le temps de comprendre comment ça marche

Tu peux ajouter les adresses des tes DO_x en lecture pour avoir un retour. Car perso j’utilise les routines plutôt que scénario pour les interactions direct en Di et Do. En ajoutant la lecture de l’adresse Do tu as son retour d’état en plus :wink:

Bonjour,

Il est annoncé un plugin modbus officiel pour ce mois, Avez vous des nouvelles?

Merci et bonne journée,

Bonsoir,

Je cherche à interfacer au plus simple un compteur Eastron SDM120CT dont la sortie est indiquée « RS485 Port modbus RTU or Mbus ».

Mon Jeedom étant loin du compteur, je cherche à savoir quel plugin utiliser et quelle interface car ce monde modbus m’a l’air bien compliqué et je m’y perd avec toutes les lectures.
Il y a 3 plugings, des beta, des en développement, des abandonnés,. modifiés ou non … Et visiblement de multiples convertisseurs rs485/ethernet du coup si quelqu’un pouvait avoir la gentillesse de me conseiller une référence et le bon plugin qui permettra de récupérer les informations de ce compteur ?

Merci beaucoup

Salut,

Pour véhiculer de l’Ethernet oui je connais bien le CPL mais dans le cadre du modbus je ne comprends pas.

Tu peux préciser stp ?

Sur le compteur qui a des bornes « G A B », à quel matériel peut on le raccorder et quel plugin utiliser exactement parmis les 3 qui sont proposés puisque chacun ne prend pas en charge tout les types de transport des trames ?

tu peux convertir le modbus RS485 en modbus TCP grâce à ça