Page 1 sur 1

Python-raspberry-DHT11 arduino I²C

Publié : 12 nov. 2015, 21:11
par gaspah
Bonjour à tous,

Je suis face à un problème de "fin de course de marathon " :-)
je m'explique;

Je voulais un système qui mesure la T° et l' humidité et sauvegarde tous les X afin de d'avoir un graphe sur plusieurs jours.

Le système en question:

-un raspberry pi2 avec domoticz
- un arduino avec une sonde DHT11

L'arduino est connecté au raspberry en I²C

Le code en python, demande à mon arduino de lui envoyer la T° et Humidité => fonctionne très bien .

Par contre mon souci est sur la partie du code qui doit envoyer ces info à domoticz ,les info ne passe pas: voir code ci-dessous:

Code : Tout sélectionner

# -*-coding:Latin-1 -*
import smbus
import time
import urllib2
import json
import requests


bus = smbus.SMBus(1)
address = 0x12

# Pause de 1 seconde pour laisser le temps au traitement de se faire
time.sleep(1)
#lecture du la température
TEMP = bus.read_byte(address)

bus.write_byte(address,1 )

time.sleep(1)
#lecture de l'humidité
HUM = bus.read_byte(address)
      
json_url='/json.htm?type=command%26param=udevice&idx='
requete='http://192.168.1.30:8080/json.htm?type=command&param=udevice&idx=1&nvalue=0&svalue=TEMP;HUM;2'
r=requests.get (requete)

Lorsque que je remplace TEMP et HUM par des nombre ex: 24,45 la requête fonctionne bien , le widget de domoticz se met à jour.
Je pré-sens que les variables TEMP et HUM (du code python) ne passe pas dans requête de json.

Est que quelqu'un pourrait éclairer ma lanterne ?

Comment fait-on pour placer une variable qui est modifié par python pour l'envoyer sur domoticz ?

Merci d'avance

Re: Python-raspberry-DHT11 arduino I²C

Publié : 12 nov. 2015, 21:52
par patrice
Bonsoir
Tu as plusieurs trucs qui clochent
1- la ligne json_url='/json.htm?type=command%26param=udevice&idx=' ne sert à rien car tu n 'utilise pas la variable ensuite, a supprimer
2 - tu n'a pas besoin de la libraire urllib : a supprimer
3 - en tête du fichier mets sur EN 1ERE ligne

Code : Tout sélectionner

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

et supprime la ligne latin....

Ca te permettra de taper directement ./nomtetonscript.py pour le lancer au lieu de python nomdetonscript.py

4 - et c'est le principal, tu as des VARIABLES TEMP et HUM qui CONTIENENT tes valeurs de Temp et hum , il faut donc les placer dans ta chaine d caracteres de l'url pour composer une chaine qui sera comprise par Domoticz

Dans ton script supprime les 3 lignes depuis la fin

Code : Tout sélectionner

json_url='/json.htm?type=command%26param=udevice&idx='
requete='http://192.168.1.30:8080/json.htm?type=command&param=udevice&idx=1&nvalue=0&svalue=TEMP;HUM;2'
r=requests.get (requete)
Tu va chercher dans Domoticz la valeur de idx de ton Widget Temp+Hum (c'est 1 dans le code que tu as mis en exemple , mais je doute que cela soit effectivement 1) et tu le note dans le idx=''XXX , 178 dans mon cas

et colle ca à la place

Code : Tout sélectionner

idx='178'

#/json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=TEMP;HUM;HUM_STAT

requete='http://192.168.1.81:8080/json.htm?type=command&param=udevice&idx='+idx+'&nvalue=0&svalue='
requete=requete+TEMP+';'+HUM+';2'
print requete

Quand tu aura vu que cela marche supprime la ligne print requete

Bonsoir

Re: Python-raspberry-DHT11 arduino I²C

Publié : 12 nov. 2015, 22:24
par gaspah
Bonsoir,

merci pour une réponse aussi rapide ;

j'ai effectué les changements recommandé par vos soins,

et il semble qu'il y a encore une coquille, mais je commence à voir le problème..

voici la réponse de l'interpréteur :

Code : Tout sélectionner

Traceback (most recent call last):
  File "i2c.py", line 30, in <module>
    requete=requete+TEMP+';'+HUM+';2'
TypeError: cannot concatenate 'str' and 'int' objects
dans tous les cas, vous m'avez donnez une nouvelles piste !

Re: Python-raspberry-DHT11 arduino I²C

Publié : 12 nov. 2015, 22:28
par patrice
Je me suis laissé emporter par mon enthousiasme natuel
modifie la ligne comme cela

requete=requete+str(TEMP)+';'+str(HUM)+';2'

Re: Python-raspberry-DHT11 arduino I²C

Publié : 12 nov. 2015, 22:38
par gaspah
MERCI !!! :D

pour info la ligne :

Code : Tout sélectionner

r=requests.get (requete)
=> est nécessaire pour envoyer la requête j'imagine ,
je débute dans ce domaine, il me reste du pain sur la planche...

bonne soirée

Re: Python-raspberry-DHT11 arduino I²C

Publié : 12 nov. 2015, 22:42
par patrice
gaspah a écrit :MERCI !!! :D

pour info la ligne :

Code : Tout sélectionner

r=requests.get (requete)
=> est nécessaire pour envoyer la requête j'imagine ,
Oui en effet c'est pour cela que je n'avais ps dit de la supprimer ;)