Page 3 sur 3

Re: protocole Modbus

Publié : 04 mars 2018, 19:10
par papoo
je suppose que ton script ne contient pas que cela?
poste nous ton script complet, histoire que l'on puisse t'aider

Re: protocole Modbus

Publié : 04 mars 2018, 20:22
par bonebuster
voici mon script

Code : Tout sélectionner

#!/usr/bin/python
# -*- coding: utf-8 -*-

# cde_modbus.py arg:adresse arg:valeur
# adresse = adresse modbus 
# valeur = 0 forcé le coil à 0 / 1 forcé le coil à 1 / 2 inversé le coil apres lecture de l'état

import sys
from pymodbus.client.sync import ModbusTcpClient as ModbusClient

#ouverture de la communication Modbus
#l'adresse de l'automate Serveur Modbus TCP 
client = ModbusClient('192.168.1.251')

#si le nombre d'argument est supérieur à 2 prise en compte de la commande via Modbus TCP
if len(sys.argv) > 2:
	# argument 1 -> l'adresse du coil sur le serveur
	adresse = int(sys.argv[1])
	# argument 2 -> Etat du coil souhaité
	valeur = int(sys.argv[2])
	
	#en mode bouton enOcean
	if (valeur == 2):
		#lecture de l'état avant inversion de la commande
		rr = client.read_coils(adresse, 1)
		# inversion en fonction de l'état	
		if (rr.bits[0] == 1):
			rq = client.write_coil(adresse, 0)
		else:
			rq = client.write_coil(adresse, 1)
			
	#en mode bouton Domoticz , ecriture de l'état souhaité
	else:
		rq = client.write_coil(adresse,valeur)

#fermeture de la connexion Modbus TCP
client.close()
chaque appel genère la même erreur

Re: protocole Modbus

Publié : 04 mars 2018, 22:28
par papoo
ajoute un "&" a la fin de ta ligne de commande afin de retourner à Domoticz sans attendre

Code : Tout sélectionner

script:///usr/bin/python /home/pi/domoticz/scripts/python/cde_modbus_v350.py 237 1 &

Re: protocole Modbus

Publié : 05 mars 2018, 07:11
par bonebuster
@papoo

Merci beaucoup
effectivement plus d'erreur

c'est nickel