as tu 3 slash après script:
Code : Tout sélectionner
script:///home/pi/domoticz/scripts/python/cde_modbus.py 201 1Code : Tout sélectionner
script:///home/pi/domoticz/scripts/python/cde_modbus.py 201 1pour un compteur en modbus tcp à l'adresse 192.168.1.200, registres (16 bits) 204 et 205 (204,2)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
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) un script_time.py avec le code de mon post au dessus fonctionne très bienbonebuster 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 ...
j'ai besoin de lire 4 entréespapoo a écrit :un script_time.lua avec le code de mon post au dessus fonctionne très bienbonebuster 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 ...
seulement si les adresses 16 bits que tu souhaites lire sont contiguesbonebuster a écrit : j'ai besoin de lire 4 entrées
cette commande est-elle correct ? : client.read_coils(adresse, 4)