J'ai déjà eu recours au forum afin de répondre à certaines de mes interrogations, et jusqu'à maintenant, je n'ai jamais eu besoin de poser une seule question (merci à toutes/tous
Mais là, je sèche.
Installation : le matos
Domoticz sur raspberry 1 rev B.
MCP23017pour 12 sorties relais (sur bus I2C)
DS2482-800 pour une interface I2C - 1Wire (j'ai préféré cette solution à celle du 1-wire intégrée au kernel pour des raisons de longueur de câble)
PCF8591 pour quelques entrées analogiques (toujours sur I2C)
le soft :
Raspian Strech
Installation des librairie python qui vont bien pour la gestion du PCF8591.
Et c'est à peu près tout, de mémoire (j'oublie peut-être quelque chose, mais bon ...)
Fonctionnement souhaité : rafraichissement des valeurs analogiques régulièrement.
Donc acquisition des valeurs du PCF via script Python :
Code : Tout sélectionner
#!/usr/bin/python
# -*- coding:utf-8 -*-
import smbus
import time
import urllib
import urllib2
import requests
# Message LOG de prise en compte du script python
url = 'http://192.168.1.31:8080/json.htm?type=command¶m=addlogmessage&message=Lancement%20script%20python'
try:
request = urllib2.Request(url)
response = urllib2.urlopen(request)
except urllib2.HTTPError, e:
print e.code; time.sleep(60)
except urllib2.URLError, e:
print e.args; time.sleep(60)
# Constantes
address = 0x48 # Adresse du PCF
AIN0 = 0x40 # Sortie ANA active, 4 entrées ANA séparées, pas d'auto incrément et voie 0
# AIN0 correspond au potentiometre
# Envoi requete I2C + lecture
bus = smbus.SMBus(1)
bus.write_byte(address,AIN0)
value = bus.read_byte(address)
time.sleep(0.1)
bus.write_byte(address,AIN0)
value = bus.read_byte(address)
# Mise en forme requete JSON pour écriture dans device virtuel
value = str(value)
url = 'http://192.168.1.31:8080/json.htm?type=command¶m=udevice&idx=19&svalue='+value
try:
request = urllib2.Request(url)
response = urllib2.urlopen(request)
except urllib2.HTTPError, e:
print e.code; time.sleep(60)
except urllib2.URLError, e:
print e.args; time.sleep(60)
Code : Tout sélectionner
commandArray = {}
print('Lancement du script lua d\'acquisition')
os.execute('python /home/pi/domoticz/scripts/python/script_acquisition_luminosite.py')
return commandArray
1 - J'ai été obligé de réaliser 2 lectures à la suite dans le script Python, la première lecture était toujours la valeur précédente
2 - Le temps de réponse du couple lua-python est horriblement long (supérieur à 10 secondes, sans parler du rafraichissement de Domoticz)
Questions:
1 - Pour les spécialistes, pourquoi cette double lecture ? Y-a t'il une erreur dans mon bout de code ?
2 - Est-ce que ce temps d'acquisition est normal ?
Je pourrais coder mon script en C puis compiler le tout, peut-être que ça serait plus rapide, mais j'achoppe sur le code (je suis plutôt codeur du dimanche), sur comment intégrer l'API JSON pour que le programme en C compilé écrive directement la variable, et comment lancer le programme régulièrement (j'ai bien une idée avec cron, mais j'ai peur que mon code se disperse partout et de ne plus m'y retrouver).
Si quelqu'un avait des pistes ...
Bonne soirée !