Ta dernière réflexion est la bonne, c’est ce que j’ai demander à rigolman de faire samedi soir, j’attend son retour.
C’est pour ça que je lui avais demandé de tester avec l’adresse 3 mais pour avoir le bit 3 il faut sans doute demander l’adresse 2…
Oui mais normalement ça devrait fonctionner saut que j’ai l’impression que la carte veut qu’on lui demande les 8 imputs d’un coup, et envoie l’état des 8. c’est ça où la réponse n’est pas codé sur un format qui plaît au plugin, mais normalement le modbus c’est standart je vois pas pourquoi ça serait pas le cas ici.
Pour ça que dans son cas mettre le i à 8 pourrait le faire mais après ça marcherait pas pour ceux qui ont un modbus standard…
Mettre à 8 ne fonctionnera pas car le plugin s’attend à recevoir un binaire et non un octet.
Je vais voir avec rigolman pour refaire des tests on va trouver.
Par contre les logs son pas normal il ne devrait pas avoir deux formats de sortie.
Tu pourrais refaire un log avec 1 seule ligne de discret input? Une fois avec adresse 0 et une fois avec 1 voir ce que ça change
Le dernier log me plaît bien, sauf qu’il n’y a aucune valeur en retour.
Il y a bien une erreur non?
File "/var/www/html/plugins/mymodbus/ressources/mymodbus_demond.py", line 175, in polling_thread
subprocess.Popen(['/usr/bin/php',mymodbus,'add='+host,'unit='+str(unit_id),'eqid='+str(eq_id),'type=discrete_inputs','sortie=1','inputs='+str(int(di_start)),'values='+str(rr.bits[:i])])
AttributeError: 'ReadInputRegistersResponse' object has no attribute 'bits'
L’erreur semble être dans le rr.bits mais là j’atteins mes limites…
Le retour devrait être un binaire 0ou 1 et la j’ai l’impression que la carte envoie un octet dans un registre.
Faut que je regarde ça sur l’install à Rigolman
le fait de demander rr.bits[:i] cela se traduit comment? Je ne connais pas les manip sur les bits en python mais si cela veut dire « dans le tableau en bits de rr je veux celui à la position :i » alors il y a un souci non? i étant à 1 alors que rr.bits ne doit contenir qu’un seul bit donc à la position 0 non? C’est sans doute une question con mais c’est pour essayer de comprendre
Et pourquoi l’erreur est sur un retour de " ReadInputRegistersResponse " alors qu’on l’interroge sur un discret input, la réponse devrait donc être via un " ReadDiscreteInputsResponse " non?
Je regarde ça aussi
juste pour faire avancer le schmilblick comme aurait dit un grand humoriste, lorsque tu compares la gestion des discret inputs de mymodbus_demond.py:
if 'dis' in globals() :
di_start=dis[0]
i=1
for di in dis:
if int(di) == int(di_start):
di_previous=di_start
if int(di) == int(dis[-1]):
rr = client.read_discrete_inputs(int(di_start),i,unit=unit_id)
subprocess.Popen(['/usr/bin/php',mymodbus,'add='+host,'unit='+str(unit_id),'eqid='+str(eq_id),'type=discrete_inputs','sortie=1','inputs='+str(int(di_start)),'values='+str(rr.bits[:i])])
Avec celle de demon.py:
if 'dis' in globals() :
di_start=dis[0]
i=1
for di in dis:
if int(di) == int(di_start):
di_previous=di_start
if int(di) == int(dis[-1]):
read_dis_list = c.read_discrete_inputs(int(di_start),i)
subprocess.Popen(['/usr/bin/php',mymodbus,'type=discrete_inputs','sortie=1','inputs='+str(int(di_start)),'values='+str(read_dis_list),'add='+host,'unit='+str(unit_id),'eqid='+str(eq_id)])
on voit bien que les arguments de read_discrete_inputs sont moins nombreux pour le 2ème (il n’y a pas de unit) et la réponse ne passe pas par rr.bits mais est simplement la valeur récupérée juste avant.
Sur ce je vais aller me pieuter, bonne nuit à tous
++
C’est lié au evolution de la bibliothèque , je te propose pour la suite de passer en MP car le sujet est déjà vraiment très chargé. Bon piotage
Salut @Rigolman69, en montant un client chez moi cela fonctionne parfaitement. Voici ma page de configuration, as tu la même chose?
j’obtiens le même genre d’erreur que toi lorsque je mets un bit en adresse qui n’est pas dans la plage du client
Tu as dormis entre deux
Oui si tu veux lire une imput qui n’est pas une imput, tu plante le demon, il est susceptible et pas très tolérant
Bounjour,
Ha oui la nuit à due etre courte !
J’ai une bonne nouvelle : t’as manip, @Noyax37, FONCTIONNE !
CONGRATULATION