Page 2 sur 3
Re: protocole Modbus
Publié : 10 déc. 2017, 19:33
par papoo
fonctionne correctement chez moi
as tu 3 slash après script:
Code : Tout sélectionner
script:///home/pi/domoticz/scripts/python/cde_modbus.py 201 1
?
Re: protocole Modbus
Publié : 10 déc. 2017, 19:58
par papoo
vinz276 a écrit :Bonjour a tous,
J'arrive sous Domoticz à écrire des bits sur un automate en modbus via un script python mais je ne vois pas comment lire les entrée et à les écrire sur un capteur virtuel sou s Domoticz. Si quelqu'un à une idée, je suis preneur.
Merci
pour un compteur en modbus tcp à l'adresse 192.168.1.200, registres (16 bits) 204 et 205 (204,2)
Code : Tout sélectionner
#domoticz settings
domoticz_host = '192.168.1.240' # Url domoticz
domoticz_port = '8080' # port
domoticz_url = 'json.htm' # Ne pas modifier
idx_compteur1 = ''
from pymodbus.client.sync import ModbusTcpClient
import urllib, urllib2
client = ModbusTcpClient('192.168.1.200')
client.connect()
result = client.read_input_registers(204,2) # Lire 2 compteurs 16 bits adresse de début 204 (16 Least et 16 Most)
compteur1 = ((result.registers[0]*65536)+result.registers[1]) # (Least*65536)+ Most
print compteur1
client.close()
if idx_compteur1 != None:
#uploading values to domoticz
url = "http://" + domoticz_host + ":" + domoticz_port + "/" + domoticz_url + "?type=command¶m=udevice&idx=" + idx_compteur1 + "&nvalue=0&svalue=" + str(compteur1)
urllib2.urlopen(url , timeout = 5)
Re: protocole Modbus
Publié : 10 déc. 2017, 20:47
par bonebuster
erci
J'ai trouvé en fait par rapport au tuto la bonne rédaction de la commande script est :
script:///usr/bin/python /home/pi/domoticz/scripts/python/cde_modbus.py 0 1 (pour mettre a 1 l'adresse 0)
c'est différent du tuto qui doit être un peu ancien ?
ça marche super bien avec des sorties déportés industriels type Wago, Phoenix contact, ou Turck
Re: protocole Modbus
Publié : 10 déc. 2017, 20:49
par papoo
bonebuster a écrit :
l'étape suivante serait de lire l'état d'une entrée, et encore lire un registre (entier) d'une entrée analogique
mais il faut pouvoir interroger régulièrement le bit ou le registre et ça ...
un script_time.py avec le code de mon post au dessus fonctionne très bien
Re: protocole Modbus
Publié : 14 déc. 2017, 21:02
par bonebuster
papoo a écrit :bonebuster a écrit :
l'étape suivante serait de lire l'état d'une entrée, et encore lire un registre (entier) d'une entrée analogique
mais il faut pouvoir interroger régulièrement le bit ou le registre et ça ...
un script_time.lua avec le code de mon post au dessus fonctionne très bien
j'ai besoin de lire 4 entrées
cette commande est-elle correct ? : client.read_coils(adresse, 4)
et comment commencer un evenement LUA et intégrer ma commande modbus ?
(je débute en LUA, il faut commencer au début pour m'expliquer)
Merci d'avance
Re: protocole Modbus
Publié : 14 déc. 2017, 22:54
par papoo
bonebuster a écrit :
j'ai besoin de lire 4 entrées
cette commande est-elle correct ? : client.read_coils(adresse, 4)
seulement si les adresses 16 bits que tu souhaites lire sont contigues
exemple : si ta première adresse est 200, tu va lire avec cette commande les adresses 200, 202, 204, 206
attention, si il n'y a que 3 adresses de lisibles, cela provoquera une erreur et la requete ne retournera aucun résultat.
il faut donc bien étudier la table modbus pour ne tenter de lire que les adresses existantes
Re: protocole Modbus
Publié : 15 déc. 2017, 07:07
par bonebuster
Bonjour
Mon équipement accepte les commandes MODBUS accepte les commandes suivantes (4 entrés/4sorties exactement 4 bits lecture/4 bits écriture ou encore 2 mots)
01 Lecture de sorties (bit)
02 Lecture d'entrées (bit)
03 Lecture de n mots
04
05 Ecriture d'une sortie (bit)
06 Ecriture de un Mot
...
j'arrive bien a écrire les sorties via ecriture de bits rr = client.read_coils(adresse, 1) (le module accepte aussi par ecrite d'un mot mais avec Domoticz c'est plus pratique un inter = une sortie)
par contre pour la lecture de l'état d'une entrée je ne peux pas utilise la commande client.read_input_registers(204,2) qui correspond a la commande modbus 03 car je juste létat binaire de capteur et pas une donnée.
et surtout comment lié le resultat a une varialble dans Domoticz ou un voyant virtuel ?
je vous l'ai dit je demarre (désolé)
Re: protocole Modbus
Publié : 26 févr. 2018, 17:53
par Tonio16
Bonsoir
Ce
topic peut aider, non?
Tchao
Antoine
Re: protocole Modbus
Publié : 26 févr. 2018, 21:57
par papoo
@Tonio16, ton lien est invalide
tu parles peut etre de ce plugin pour lire du modbus?
http://www.domoticz.com/forum/viewtopic ... &start=100
@bonebuster
pour moi 03 c'est Read Holding Registers
et 04 Read Input Registers
que dis ta table modbus pour ton registre 204, holding ou input?
Re: protocole Modbus
Publié : 04 mars 2018, 18:59
par bonebuster
Bonjour
quelqu'un peut'il m'orienter
j'utilise ce script pour allumer un éclairage avec un automate aillant le protocol MODBUS TCP :
j'écris un bit a l'adresse 237
script:///usr/bin/python /home/pi/domoticz/scripts/python/cde_modbus_v350.py 237 1
avec le script cde_modbus.py avec l'adresse IP de mon automate
tout fonctionne et réagi bien malgré une erreur qui remonte dans les logs domoticz :
Error: Error executing script command (/usr/bin/python). returned: 256
quelqu'un a t'il un idée pour éviter cette erreur qui n'affecte pas le bon déroulement de ma commande modbus ?
Merci d'avance