Résolu :Adapter un script pour recuperer les données dans un capteur virtuel

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
samourai47
Messages : 286
Inscription : 04 déc. 2018, 19:44

Résolu :Adapter un script pour recuperer les données dans un capteur virtuel

Message par samourai47 »

Hello
J'ai installé ce script pyton pour tester les infos d'un capteur tsl2561en ligne de commande
-> https://raspberrytips.nl/tsl2561-licht- ... spberry-pi

Code : Tout sélectionner

# TSL2561
import smbus
import time

# Get I2C bus
bus = smbus.SMBus(1)

# TSL2561 address, 0x39(57)
# Select control register, 0x00(00) with command register, 0x80(128)
#		0x03(03)	Power ON mode
bus.write_byte_data(0x39, 0x00 | 0x80, 0x03)
# TSL2561 address, 0x39(57)
# Select timing register, 0x01(01) with command register, 0x80(128)
#		0x02(02)	Nominal integration time = 402ms
bus.write_byte_data(0x39, 0x01 | 0x80, 0x02)

time.sleep(0.5)

# Read data back from 0x0C(12) with command register, 0x80(128), 2 bytes
# ch0 LSB, ch0 MSB
data = bus.read_i2c_block_data(0x39, 0x0C | 0x80, 2)

# Read data back from 0x0E(14) with command register, 0x80(128), 2 bytes
# ch1 LSB, ch1 MSB
data1 = bus.read_i2c_block_data(0x39, 0x0E | 0x80, 2)

# Convert the data
ch0 = data[1] * 256 + data[0]
ch1 = data1[1] * 256 + data1[0]

# Output data to screen
print "Full Spectrum(IR + Visible) :%d lux" %ch0
print "Infrared Value :%d lux" %ch1
print "Visible Value :%d lux" %(ch0 - ch1)
Ayant de grosses différences de valeur entre domoticz et les données de ligne de commande, je souhaiterai pouvoir récupérer dans un capteur virtuel (ou autre) les données de ce script ou du moins la principale.

C'est là que j'ai besoin d'aide car cela me parait à la fois simple mais aussi très compliqué pour moi qui n'ai jamais programmé, si ce n'est en basic sur un vieux zx81..... Lol

Si vous pouviez me donner un coup de main
Merci d'avance
Dernière modification par samourai47 le 11 mars 2019, 09:44, modifié 1 fois.
samourai47
Messages : 286
Inscription : 04 déc. 2018, 19:44

Re: Adapter un script pour recuperer les données dans un capteur virtuel

Message par samourai47 »

Je tourne en rond et je deviens fou....
J'ai créé un dummy sensor en IDX46
J'ai rajouté cette ligne à la fin du script précédent

Code : Tout sélectionner

httpurl = 'http://192.168.0.120/json.htm?type=command&param=udevice&idx=46&svalue=ch0'
Mais bien évidemment rien ne s'affiche.... Je pense que cela doit être plus complexe que ca... Creer un fichier de valeur? Puis aller puisser dans ce fichier.... Je sèche

Merci pour votre aide
samourai47
Messages : 286
Inscription : 04 déc. 2018, 19:44

Re: Adapter un script pour recuperer les données dans un capteur virtuel

Message par samourai47 »

Bon j'essaye d'avancer seul.. ne trouvant pas de solution encore...
Alors j'ai rajouté dans l'entete du script

Code : Tout sélectionner

import urllib
Puis a la fin

Code : Tout sélectionner

httpresponse = urllib.urlopen('http://192.168.0.120:8080/json.htm?type=command&param=udevice&idx=45&nvalue=0&svalue=ch0')
Mon capteur virtuel (texte)est mis a jour par par du texte :ch0 mais pas par la valeur correspondante, par exemple 3850 qui par contre s'affiche bien en ligne de commande lors de l'execution du script

Comment faire.....pour recuperer cette valeur lors de l'execution du script. C'est la qu'il doit me manquer un truc
Merci
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: Adapter un script pour recuperer les données dans un capteur virtuel

Message par patrice »

Bonjour
Ton url doit etre mal formatee

regarde ici
https://easydomoticz.com/ajout-dun-text ... al-sensor/
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
samourai47
Messages : 286
Inscription : 04 déc. 2018, 19:44

Re: Adapter un script pour recuperer les données dans un capteur virtuel

Message par samourai47 »

Bon finalement avec un peu d'aide sur le forum de domoticz, je vous propose la solution si elle peut aider d'autre

Code : Tout sélectionner

# TSL2561
import smbus
import time
import urllib

# Get I2C bus
bus = smbus.SMBus(1)

# TSL2561 address, 0x39(57)
# Select control register, 0x00(00) with command register, 0x80(128)
#		0x03(03)	Power ON mode
bus.write_byte_data(0x39, 0x00 | 0x80, 0x03)
# TSL2561 address, 0x39(57)
# Select timing register, 0x01(01) with command register, 0x80(128)
#		0x02(02)	Nominal integration time = 402ms
bus.write_byte_data(0x39, 0x01 | 0x80, 0x02)

time.sleep(0.5)

# Read data back from 0x0C(12) with command register, 0x80(128), 2 bytes
# ch0 LSB, ch0 MSB
data = bus.read_i2c_block_data(0x39, 0x0C | 0x80, 2)

# Read data back from 0x0E(14) with command register, 0x80(128), 2 bytes
# ch1 LSB, ch1 MSB
data1 = bus.read_i2c_block_data(0x39, 0x0E | 0x80, 2)

# Convert the data
ch0 = data[1] * 256 + data[0]
ch1 = data1[1] * 256 + data1[0]


# Output data to screen
# print "Full Spectrum(IR + Visible) :%d lux" %ch0
# print "Infrared Value :%d lux" %ch1
# print "Visible Value :%d lux" %(ch0 - ch1)

httpresponse = urllib.urlopen('http://192.168.0.120:8080/json.htm?type=command&param=udevice&idx=45&nvalue=0&svalue='+str(ch0)+'')
httpresponse = urllib.urlopen('http://192.168.0.120:8080/json.htm?type=command&param=udevice&idx=44&nvalue=0&svalue=Full Value: '+str(ch0)+'; Visible Value: '+str(ch0 - ch1)+'; Infrared Value: '+str(ch1)+'')


En gros j'ai créé deux capteur virtuel. Un en "Lux " (idx=44) qui m'affiche la valeur cumulée du TSL2561
L'autre (Idx= 45) en Txt qui m'affiche les 3 valeurs proposées par ce capteur
Puis j'aicréé un crontab qui lance le script toute les minutes
Répondre