Sonde humidité et température.


9 posts
by baba » Sun May 14, 2017 3:08 pm
Bonjour,

Il y a 6 mois j'ai monté ma box et tout fonctionne parfaitement sauf l'humidité et la température.

J'ai 2 sonde de type DHT 22 (AM2302) et 1 sonde AM2305. Et aucune fonctionne correctement sur mon RPI 3.

j'ai que des résultat comme ça:
Image

Et des fois ça marche.
Étant un quiche dans le domaine et en ai un peu marre d'acheter des sondes pour rien.
Depuis 6 mois j'en suis au même point. Y aurait t'il une méthode fiable pour faire marcher ces sondes ?

Merci à vous.

Baba.
Posts: 3
Joined: Sun May 14, 2017 2:51 pm
by totoharibo » Sun May 14, 2017 7:31 pm
J'ai essayé un DHT11 : mesure pas très stable : rangé dans un placard.
Peut-être que je vais le ressortir :-)

J'utilisais DHTxxD chez :
http://abyz.co.uk/rpi/pigpio/examples.html

Mais d'autres posts existent
Posts: 3063
Joined: Thu Jan 24, 2013 8:43 am
by danjperron » Sun May 14, 2017 9:08 pm
J'ai 2 sonde de type DHT 22 (AM2302) et 1 sonde AM2305. Et aucune fonctionne correctement sur mon RPI 3.


Il ne marche jamais ou quelque fois?

Les DHT22 sont très demandant sur le cpu. Si tu as un usage cpu élevé, il y a de forte chance d'avoir une erreur de lecture.

Il faut donc vérifier et si la réponse donne une erreur il faut la relire.

Ma version qui utilise le SPI est de loin la meilleure méthode mais J'ai longtemps changé pour l'utilisation d'un Arduino avec un nRF24L01 dont le Raspiberry Pi devient un serveur.

https://www.raspberrypi.org/forums/view ... 38#p720838
Last edited by danjperron on Mon May 15, 2017 10:27 pm, edited 1 time in total.
Posts: 2614
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada
by jelopo » Mon May 15, 2017 8:13 am
Bonjour,

De mon coté, pour un relevé de données sur un site Internet, j'ai dû mettre une boucle de quelques essais car le site ne répond pas toujours.

voici à quoi ça ressemble en Python :
Code: Select all
 # fonction de recuperation des données
def get_data ():
    req = Request(url)
    try:
        rep = urlopen(req)
    except HTTPError as e:
        print 'The server couldn\'t fulfill the request.'
        print 'Error code: ', e.code
        data = 1
    except URLError as e:
        print 'We failed to reach a server.'
        print 'Reason: ', e.reason
        data = 1
    else:
        data = json.load(rep)
    return data

    # nombre d'essais max
    max_cnt = 5
    # mise à 0 du compteur
    cnt = 0
    # Boucle de max_cnt essais de recupereration des donnees
    while cnt < max_cnt :
        data = get_data()
        # Gestion des erreurs
        # data = {u'message': u'Error: Not found city', u'cod': u'404'}
        if type(data) == dict:
           cnt += 1
           # Affichage donnees si code retour OK (200)
           if (data['cod']) == 200:
              # Generation message OK si erreur precedente
              if cnt > 1:
                 sys.stderr.write("Try %s : OK - return code = %s \n" % (cnt, data['cod']))
              print_data(data)
              ec = 0
              break
           else:
              sys.stderr.write("Try %s : %s - return code = %s \n" % (cnt, (data['message']), (data['cod'])))
              time.sleep(5)
              ec += 1
              # Generation message de fin si max_cnt atteint
              if cnt == max_cnt :
                 sys.stderr.write("Max try (%s) occured: end." % (max_cnt))
        else:
           cnt += 1
           time.sleep(30)


Bien sûr ce bout de code est écrit dans un cas bien particulier. Il faut le reprendre pour l'adapter au mesure des capteurs.

Bon courage.
Posts: 1073
Joined: Wed Oct 17, 2012 7:53 pm
by baba » Tue May 16, 2017 4:04 pm
Merci à toute vos réponses.

@totoharibo: j'ai réussi à build mais n'arrive pas a avoir de valeur.

danjperron wrote:
Il ne marche jamais ou quelque fois?

ça peut marcher pendant 2 heures et après ça déconne.
Des fois je dois débrancher la sonde pour que ça refonctionne.

Je vais éditer après les testes de autres solutions.
Posts: 3
Joined: Sun May 14, 2017 2:51 pm
by totoharibo » Tue May 16, 2017 7:26 pm
la solution serait arduino avec les sondes et Rpi pour traiter : pas simple.
ou alors des sondes pas en 1-wire (i2c ou spi) :
http://www.lextronic.fr/P32717-module-h ... board.html
pas essayé bien sûr
Posts: 3063
Joined: Thu Jan 24, 2013 8:43 am
by baba » Sat May 20, 2017 2:07 pm
Salut,

Merci pour totoharibo pour ta solution. J'en avais commander une chez les chinois. Mais impossible de trouvé le numéro IC2.
ça fesait des trait sur toute les lignes. Alors j'avais abandonné.

J'ai mis à jour Adafruit ça à été les 2 premiers jour et ça recommence :evil: :evil: :evil:.
Image

On voit que la température n'a pas été modifier depuis un moment. par rapport à l'heure de mon pc.
Et quand je lance la commande:
Code: Select all
 sudo ./AdafruitDHT.py 22 18
Failed to get reading. Try again!


Je suis pas à la minute près mais 20 min c'est un peu beaucoup.

Il n'y a pas moyen de coupé la pin du 5volt pour 10 seconde. Car quand ça bug comme ça quand je débranche et j'attends un peu avant de rebrancher ça repart.
Posts: 3
Joined: Sun May 14, 2017 2:51 pm
by totoharibo » Sat May 20, 2017 2:26 pm
< Il n'y a pas moyen de coupé la pin du 5volt pour 10 seconde. Car quand ça bug comme ça quand je débranche et j'attends un peu avant de rebrancher ça repart.
>

le 5V c'est une alim. il faut du hard commandé pour un GPIO pour avoir un 5V "coupable" (interruptible).

fais attention le signal sur les GPIO c'est du 3.3V, généralement il faut alimenter en 3.3V
Posts: 3063
Joined: Thu Jan 24, 2013 8:43 am
by danjperron » Sat May 20, 2017 6:48 pm
Si tu utilises pigpio de Joan il y a du code pour couper le 5V en utilisant un GPIO.

C'est la deuxième méthode efficace si tu ne veux pas utiliser le SPI. C'est celle que j'utilisais avant de tout changer avec des capteurs sans fils.(nRF24L01 + Arduino).

http://abyz.co.uk/rpi/pigpio/examples.html#Python%20code

https://www.raspberrypi.org/forums/viewtopic.php?p=889896#p889896
Posts: 2614
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada