raspberry et DHT11

Cet article est ABSOLUMENT, COMPLETEMENT PERIME, OBSOLETE, HS.

NE L’UTILISEZ PAS,

je le conserve par attachement sentimental.

Un nouveau tuto est ici https://easydomoticz.com/?p=3824 qui utilise un nouvelle bibliothèque Adafruit fonctionnelle.

Alors ouste !


Voyons ici comment connecter un capteur de température et de % d’humidité DHT11 à notre Raspberry. la procédure est identique pour un DHT22.

  • Mon expérience de la lecture, des plus délicates de ce composant avec un Raspberry, me fait vous conseiller de ne pas utiliser ce composant avec votre Raspberry, tournez vous vers des Ds18b20 de Dallas pour la température ou alors installez un Arduino dédié au DHT11 car  la lecture y fonctionne bien mieux.
  • We noticed that both examples has a chance to lose data. This is because Raspberry Pi is not running at a real-time system, the delay in the program is not accurate enough, and sometimes that leads to a failure of transmission. Because C is a lower level language, it controls the GPIO pin in a more direct way, so the example in C has less chance to fail.As a work around, we can run the program for several times can pick the correct result.  This should also be possible to be done programmatically.
  • En français : Notons que les deux exemples ont des chances de perdre des données. C’est parce que le Raspberry n’a pas de système temps réel, les délais dans les programmes ne sont pas assez précis, ce qui provoque des incidents de transmission. Parce que le C est un langage de plus bas niveau et contrôle les GPIO de façon plus directe, le programme C aura moins de change d’échouer.
  • En solution de contournement nous pouvons lancer ce programme plusieurs fois en espérant avoir un résultat correct.

Vous voyez donc que la lecture des DHT n’est pas, loin s’en faut, facile et reproductible.

L’exemple de script shell ci dessous tente de contourner les problèmes de lecture en interrogeant plusieurs fois le DHT jusqu’a obtenir un résultat de température. Cette méthode surcharge le Raspbery, parfois jusqu’a saturation du CPU.

Ces précautions étant prises et pour les téméraires, voici l’explication de la mise en place.

Merci de ne pas utiliser les commentaires pour dire « Ca marche pas, ça marche pas bien » , vous êtes prévenus.

Un DHT 111

 

Connexion d’un DHT11 au raspberry

    Câblage

  • 1 du DHT au 3.3 V,
  • 2 du DHT au gpio que vous voulez,
  • 3 rien,
  • 4 GND

Entre 1 et 2 une résistance 4.7K Ohm-10 K

300px-RaspberryPiDHT11

http://www.wurst-wasser.net/wiki/index.php/RaspberryPi_Humidity_and_Temperature_Sensor

  • Software

C’est la partie la plus délicate car il semble que le mode de lecture via GPIO ne réponde pas correctement tout le temps(pas de valeurs correctes ,pas de datas).

  • Il y a une librairie ADAFRUIT qui pour moi donne de meilleurs résultats que d’autres programmes en c trouvés sur le net.

Détaillons l’installation.

sudo wget http://goo.gl/oadpl -O Adafruit_DHT
sudo cp Adafruit_DHT /usr/bin/
sudo chmod 777 /usr/bin/Adafruit_DHT 



Pour tester cela, on exécute la commande suivante (pour un  DHT11, un DHT 22 sera interrogé par Adafruit_DHT 22 XX)

sudo Adafruit_DHT 11 4
Using pin #17Data (40): 0x28 0x0 0x18 0x0 0x40
Temp = 24 *C, Hum = 40 %
 
OK tout est bon on a température et humidité
 
Attention : Le DHT11 et le  DHT22 ne répondent que 1 fois par seconde, inutile donc de les interroger plus rapidement.

Oui mais  c’est quoi les 2 derniers chiffres (XX)  Adafruit_DHT 22 XX: c’est le GPIO auquel vous avez connecté votre DHT. GPIO 4 dans l’exemple ci dessus.

Voila , maintenant il faut lancer cela régulièrement et placer les valeurs dans Domoticz.

J’ai donc un script bash qui interroge le dht et qui ne renvoie une valeur QUE SI la valeur de TEMP contient qq chose (cf ci dessous)

  • Domoticz ensuite

On  crée un virtual device puis dans ce virtual device. 2014-09-05 18_59_42-Domoticz

On ajoute un virtual sensor Temp+Humidité ,2014-09-05 19_01_10-Domoticz Maintenant on revient dans les periphériques  on clique sur la flèche verte pour ajouter puis on on relève le IDX dans Domoticz (44) dans mon cas

2014-09-05 19_03_06-DomoticzPuis un script tel que celui ci attend le retour d’une valeur de température valable puis alimente Domoticz par le biais de l’IDX.

Tout d’abord

mkdir /var/tmp
touch /var/tmp/temper.txt

Placez vous ensuite dans domoticz/scripts, puis créez le fichier qui contiendra le script de lecture des tempèratures.

sudo pico nom_du_script.sh

Puis copiez/collez  (clic droit dans putty) ce script shell.

#!/bin/bash

# Domoticz server
SERVER="192.168.1.81:8080"

# DHT  IDX
# le numéro de l IDX dans la liste des peripheriques
DHTIDX="44"


#DHTPIN
# LE GPIO ou est connecte le DHT11
DHTPIN="4"

# si vous avez un DHT22 modifiez plus bas sur la ligne Adafruit_DHT 11 par Adafruit_DHT 22


# TMPFILE : chemin pour fichier temporaire a placer dans le RAMDRIVE pour eviter les
# ecritures sur la SD card
# sinon chemin ou sera ecrit le fichier contenant les temperature
#  /tmp/temper.txt est un bon choix si pas de RAMDRIVE installe
# consultez www.easydomoticz.com pour tout savoir 

TMPFILE="/var/tmp/temper.txt"
# modif de patrick du 08/03/15 pour interroger que 5 fois maxi
cpt=0
while [ $cpt -lt 6 ]
do
TEMP=""
sleep 5
sudo nice -20 Adafruit_DHT 11 $DHTPIN > $TMPFILE
TEMP=$(cat $TMPFILE|grep Temp |awk '{print $3}')
if [ $TEMP ]
then
TEMP=$(cat $TMPFILE|grep Temp |awk '{print $3}')
HUM=$(cat $ $TMPFILE |grep Temp |awk '{print $7}')
#echo $TEMP
#echo $HUM
# Send data
curl -s -i -H  "Accept: application/json"  "http://$SERVER/json.htm?type=command&param=udevice&idx=$DHTIDX&nvalue=0&svalue=$TEMP;$HUM;2"
TEMP=""
HUM=""
rm $TMPFILE
exit 0
fi
#echo $cpt
cpt=$(($cpt+1))
done
exit 1
 chmod +x /home/pi/domoticz/scripts/nom_du_script.sh

puis on lance le script en question,

Et victoire

2014-09-05 19_25_51-Domoticz

 Lancement  du script via cron

Maintenant lançons ce script à intervalles réguliers

Plaçons le dans un crontab pour être exécuté à la fréquence que vous désirez

Pour cela un petit crontab -e  http://fr.wikipedia.org/wiki/Crontab

et placer une ligne comme celle ci tout à la fin
*/10 * * * * /home/pi/domoticz/scripts/dhtsend.sh

Qui dit que toutes les 10 minutes (*/10)

tous les jours * * * *

j’exécute le script nommé dhtsend.sh de /home/pi/domoticz/scripts/

Enregistrez vos modifs (CTRL x)

Vous constaterez que toutes les 10 minutes le composant domoticz se met à jour.

Mise à jour du 08/03/2015 : le script bash à été modifié (merci à Patrick pour sa proposition de correction) afin de n’interroger au maximum que 5 fois le DHT en attente d’une réponse. En cas d’échec de récupération d’une température, le script s’arrête. On attendra donc le prochain lancement via crontab pour réinterroger le DHT 5 fois.

Comme cela nous sommes surs de ne pas surcharger le Raspi.

Je vous conseille donc de placer ce script dans le crontab toutes les 5 ou 10 minutes.

 

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/
Posted in Débutants, domoticz, domotique, raspberry and tagged , , , , , , .

78 Comments

  1. Bonjour, tout d’abord merci pour toutes les astuces que l’on peut trouver sur votre blog.
    Je souhaite refaire ce que vous expliquer ci-dessus, lorsque je demande en ligne de commande la température/humidity grâce à la library adafruit ça fonctionne.
    J’ai installé Domotictz, mais impossible de comprendre comment lier Domoticz et le dht11 et quoi faire avec votre script bash… Pouvez vous détailler comment ajouter un virtual device (j’ai uniquement la sonde temp du raspberry dans la liste >Setup>Device) et quoi faire de votre script bash (l’intégrer dans domoticz ?).
    Merci par avance.
    JD

  2. Bonjour, tout d’abord merci pour toutes les astuces que l’on peut trouver sur votre blog.
    Je souhaite refaire ce que vous expliquer ci-dessus, lorsque je demande en ligne de commande la température/humidity grâce à la library adafruit ça fonctionne.
    J’ai installé Domotictz, mais impossible de comprendre comment lier Domoticz et le dht11 et quoi faire avec votre script bash… Pouvez vous détailler comment ajouter un virtual device (j’ai uniquement la sonde temp du raspberry dans la liste >Setup>Device) et quoi faire de votre script bash (l’intégrer dans domoticz ?).
    Merci par avance.
    JD

  3. Bonsoir
    Merci pour vos commentaires, j’ai modifié l’article en question pour détailler davantage l’ajout de composants virtuels et l’utilisation du script bash suivant mon usage
    N’hésitez pas si vous avez besoin de plus d’infos

  4. Bonsoir
    Merci pour vos commentaires, j’ai modifié l’article en question pour détailler davantage l’ajout de composants virtuels et l’utilisation du script bash suivant mon usage
    N’hésitez pas si vous avez besoin de plus d’infos

  5. hi

    can you explain how integrade dht11 on domoticz? with adafruit software i can see but when i create a virtual sensor dont see.
    can you put the script at code format?

    thanks

  6. hi

    can you explain how integrade dht11 on domoticz? with adafruit software i can see but when i create a virtual sensor dont see.
    can you put the script at code format?

    thanks

  7. Hello
    In the virtual sensor just add a Temp+Humidity virtual sensor and call it like you want (DHT11 seems a good name)
    Just read this in the chapter called « Domoticz ensuite »

    Hope this helps

  8. Hello
    In the virtual sensor just add a Temp+Humidity virtual sensor and call it like you want (DHT11 seems a good name)
    Just read this in the chapter called « Domoticz ensuite »

    Hope this helps

  9. thanks patrice, but i cant install the adfruit.

    when i do:
    wget http://goo.gl/oadpl -O Adafruit_DHT
    sudo cp Adafruit_DHT /usr/bin/

    appear this error :
    pi@domoticzpi ~ $ sudo Adafruit_DHT 11 4
    sudo: Adafruit_DHT: command not found

    i dont understand why?

  10. thanks patrice, but i cant install the adfruit.

    when i do:
    wget http://goo.gl/oadpl -O Adafruit_DHT
    sudo cp Adafruit_DHT /usr/bin/

    appear this error :
    pi@domoticzpi ~ $ sudo Adafruit_DHT 11 4
    sudo: Adafruit_DHT: command not found

    i dont understand why?

  11. Salut patrice
    Super ton tuto c’est ce que je recherchai lié DHT 22 a domoticz
    Par contre je début dans la framboise et j’ai fais un petit peu linux
    n’ayant toujours pas acheté le matos je ne peux mettre en œuvre ce tuto
    Toute foi j’ai une question: As tu un plan détaillé pour avoir 5 DHT 22 sur le rasp ?
    Merci

  12. Salut patrice
    Super ton tuto c’est ce que je recherchai lié DHT 22 a domoticz
    Par contre je début dans la framboise et j’ai fais un petit peu linux
    n’ayant toujours pas acheté le matos je ne peux mettre en œuvre ce tuto
    Toute foi j’ai une question: As tu un plan détaillé pour avoir 5 DHT 22 sur le rasp ?
    Merci

  13. Bonjour,
    Merci pour cette astuce.
    J’ai commandé les composants. Mais avant de faire une boulette, une question me vient 😉
    En effet, sur le GPIO 4, j’ai déjà mes signaux 1-wire . Puis-je cabler, en plus, le DHT11 dessus ? L’ensemble fonctionnera-t-il sous Domoticz ?
    Sinon, sur quel(s) GPIO puis-je brancher les pins du DHT11 ?
    merci,

  14. Bonjour,
    Merci pour cette astuce.
    J’ai commandé les composants. Mais avant de faire une boulette, une question me vient 😉
    En effet, sur le GPIO 4, j’ai déjà mes signaux 1-wire . Puis-je cabler, en plus, le DHT11 dessus ? L’ensemble fonctionnera-t-il sous Domoticz ?
    Sinon, sur quel(s) GPIO puis-je brancher les pins du DHT11 ?
    merci,

  15. Bonjour,
    Dans le script il y a une variable nomme DHTPIN qui fait reference au GPIO associé, il faut juste y indiquer ton GPIO

  16. Bonjour,
    Dans le script il y a une variable nomme DHTPIN qui fait reference au GPIO associé, il faut juste y indiquer ton GPIO

  17. Bonjour
    Non pas de plan détaillé pour cela , mais il te suffit de connecter tes 5 DHT sur 5 GPIO differents et de rapporter toutes les masses et tous les 5V au meme endroit

    Toutefois au vu de la stabilité du DHT sur le rasp je ne tenterais pas l’expérience si tu attends des résultats fiables

    Si tu cherches à mesurer uniquement des temperatures tournes toi vers le one-wire,
    Si tu cherches temp et humdité , bon courage avec les 5 DHT…

  18. Bonjour
    Non pas de plan détaillé pour cela , mais il te suffit de connecter tes 5 DHT sur 5 GPIO differents et de rapporter toutes les masses et tous les 5V au meme endroit

    Toutefois au vu de la stabilité du DHT sur le rasp je ne tenterais pas l’expérience si tu attends des résultats fiables

    Si tu cherches à mesurer uniquement des temperatures tournes toi vers le one-wire,
    Si tu cherches temp et humdité , bon courage avec les 5 DHT…

  19. Pour ceux comme moi qui ont repris le script dhtsend.sh dans Notepad++ sous W7/W8 pour le pousser à la framboise avec WinSCP, vous risquer l’erreur « unexpected end of file – expecting ‘then' »…

    J’ai commencé à m’arrancher le peu de cheveux qu’il me reste, en fait, Windows et Debian ne formatte pas le fichier de la même façon, ainsi, pour rendre l’exécution possible, il y a lieu d’exécuter :
    sed -i ‘s/\r$//’ dhtsend.sh
    Et ça devrait du coup passer.
    PS : Si Adafruit_DHT n’est pas dans /usr/bin (variable PATH), ça ne passer pas non plus.

  20. Bonsoir,
    En effet je confirme les 2 points
    Ce qui as posé problème avec notepad++ est sans doute le format d’enregistrement choisi (Menu Encodage puis unicode sans BOM devrait être ok de mémoire)

  21. bonjour
    svp j’ai un raspberyy pi et un dHT11 et je cherche seulement a mesurer la temperature .En fait, j’ai installé le langage python mais j’arrive pas comprendre la librairie Adafruit et j’ai pas bien saisi les codes necessaire pour l’affichage de la valeur de temperature parce que je veux pas utiliser le code betement!!

  22. Bonsoir
    Sur l’article du site
    j’ai utilisé la librairie python de Adafruit sans me preoccuper de ce qu’elle fait réellment à l’intérieur, j’ai juste utilisé la fonction de lecture du DHT fournie par cette lib puis crée le script sh en fonction.

    Quelques explications pour débuter, si cela n’est pas suffisant, je détaillerai plus tard suivant
    Dans le script les chose a savoir sont ces lignes, le reste est du shell puis python dans ADAFRUIT_DHT

    Donc les trucs à modifier en fonction de ton installation sont :
    #!/bin/sh
    # Domoticz server
    SERVER= »192.168.1.81:8080″
    ici c’est l’adresse ip de ton domoticz

    # DHT IDX
    # le numero de l4IDX dans la liste des dispositifs Domoticz
    DHTIDX= »44″
    ici c’est le numéro que possede ton virtual device crée juste avant (voir mes copies d’écran)

    #DHTPIN
    # LE GPIO ou est connecte le DHT11
    DHTPIN= »27″
    la broche du raspberry ou la broche datas de ton DHT est connecté
    puis
    TMPFILE= »/var/tmp/temper.txt »
    qui dit ou est le fichier echangé entre le dht et domoticz
    tu peux mettre /tmp si tu n’a pas de /var/tmp qui existe

    Voila les indispensables a adapter pour ta config
    Dis moi si cela te convient comme explications j’essaierai de compléter si besoin

  23. bonjour,
    je vous remercie infiniment
    en fait je vais vous expliquer encore plus mon probléme…j’ai reussi a installer python sous windows et a demarrer mon rasberry pi .maintenant j’ai un capteur DHT11 mais j’ai pas pu installer adafruit wget http://goo.gl/oadpl -O Adafruit_DHT
    sudo cp Adafruit_DHT /usr/bin. svp pour pour que je puisse mesurer la temperature qu’est ce que vous me conseiller de faire en premiere etape et avec plus de details et merci encore une fois 🙂

  24. Aie !! Windows

    Je ne comprends pas pourquoi tu parle de python sous windows puis d’un raspberry pi

    Il faut que tu installe python sur le raspberry par sudo apt-get install python puis sudo apt-get intall pip

    ensuite un sudo wget http://goo.gl/oadpl -O Adafruit_DHT

    puis un sudo cp Adafruit_DHT /usr/bin

    Lance tout ca un par un en faisant attention aux messages d’erreurs eventuels et tiens nous au courant de la progression du truc etape par etape

  25. bonjour
    svp j’ai un raspberyy pi et un dHT11 j’installe le language python dans mon raspberry pi mon buttt est de mesuré la temperature avec un capteur hdt11 svp svpp je besoins d’aide svp aidezz moi avec des etapes sv^p
    et merci

  26. Il faut lire les articles du site avec attention et regarder les sites tels que learn.adafruit.com

    Je viens de poster des réponses equivalentes à celle que tu cherches il y a quelques heures ici

  27. bonjour
    je vous remercie amplement ,je vais vous tenir au courant de la prgression de truc etape par etape 🙂

  28. SVP ENVOYER MOI ETAPE PAR ETAPE LETAPE D’INSTALLATION DU PYTHON A RASPBERRY PI EST TERMINE ET ENSUITE?

  29. Ensuite j’ai ecrit un article qui détaille tout cela , merci de prendre le temps de le lire

  30. When i run this script on my DHT 22 i have a bug:

    pi@raspberrypi ~/domoticz/scripts $ sudo ./dhtsend
    cat: $: No such file or directory
    HTTP/1.0 200 OK
    Content-Length: 24
    Content-Type: text/html;charset=UTF-8
    Cache-Control: no-cache
    Pragma: no-cache

    {
    « status » : « ERR »
    }
    cat: $: No such file or directory
    HTTP/1.0 200 OK
    Content-Length: 24
    Content-Type: text/html;charset=UTF-8
    Cache-Control: no-cache
    Pragma: no-cache

    {
    « status » : « ERR »
    }
    cat: $: No such file or directory
    HTTP/1.0 200 OK
    Content-Length: 24
    Content-Type: text/html;charset=UTF-8
    Cache-Control: no-cache
    Pragma: no-cache

    {
    « status » : « ERR »
    }
    ^Cpi@raspberrypi ~/domoticz/scripts $

    And data not send to my sensor in domoticz. Still have temp 0 and humidity 50%.
    Please help me. In script i type my IP address Domoticz and my PIN GPIO and IDX.

    When run this is OK:
    pi@raspberrypi ~ $ sudo ./Adafruit_DHT 22 4
    Using pin #4
    Data (40): 0x1 0x21 0x0 0xe7 0x9
    Temp = 23.1 *C, Hum = 28.9 %
    pi@raspberrypi ~ $

  31. Hello

    Reasons
    the first one is : you don’t have a TMPFILE directory /var/tmp , create this directory with mkdir

    the second is : you don’t have a file temper.txt in this directory , create it with touch temper.txt

    To check this points please try a sudo ./Adafruit_DHT 22 4 > /var/tmp/temper.txt and make a cat /var/tmp/temper.txt then you have your datas in this file so the script runs fine now

  32. Bonsoir
    un pb de création de fichier ou dossier fais un
    mkdir /var/tmp puis
    touch /var/tmp/temper.txt
    et relance le script
    Dis moi si OK
    Merci

  33. Champion du DHT bravo !!!! après 1 semaine d’essais et 23 reinstall ça fonctionne presque en faisant sudo Adafruit_DHT 11 4 j’ai en valeur 21° 38% et dans domoticz 25° et 60% pourquoi cette différence?

  34. Grrr fausse joie pas de remontée d’info entre la sonde et domoticz pourtant le fichiert emper.txt est bien créer.
    quand je fais un chmod 777 /home/pi/domoticz/scripts/dhtsend.sh il n’y a pas d’ erreur et pas de remontée non plus

    une idée grans chef?

  35. salut
    enfin j’ai reussi a mesurer la temperature et l’humidité 🙂 svp ,j’ai besion d’un fichier en français qui explique le principe de fonctionnement du capteur dht1??

  36. Mon problème était finalement très simple; le signal n’était pas connecté au bon pin, le tuto est assez trompeur aussi, sur le dessin il est montré qu’il faut choisir le GPIO 4 et dans la console on utilise le 27, d’ailleurs choisir ce dernier est assez étrange car il ne semble exister qu’a partir du raspberry b+ alors que ce tuto est sorti en fevrier 2014 donc bien avant le b+.
    Et sur le dht11 que j’ai, c’est une résistance 10k donc pour ceux qui veulent utiliser ce capteur sans montage supplémentaire avec le raspberry et arduino acheter ce même type de dth, il y en a d’autre encore plus complet avec 1 led et la même résistance.

  37. Bonjour,
    En effet il y avait discordance entre l’image et les scripts, c’est réglé
    Merci de l’info

  38. Bonjour,
    J’ai installé adafruit mais impossible de lire le capteur pourtant bien connecté au GPIO 4,quand j’écris : sudo Adafruit_DHT 11 4
    j’ ai ces réponses :
    Using pin #4
    Data (39) : 0x4c 0x0 0x26 0x0 0x39

    comment faire en sorte de voir la température et l’ humidité ?
    Merci d’avance.

  39. Bonsoir

    Si tu as bien lu l’article cela ne fonctionnera pas bien

    Ceci étant vérifie ton câblage attention au numéro de la pin c’est le numéro donné par Wiring pi qui nous intéresse ici
    , ressaaye plusieurs fois parfois on récupérè des températures ou pas…

  40. re bonsoir ,

    finalement problème du script résolu, J’AI COMPRIS !! En revanche je me retrouve avec le même problème que « doubleve »
    –> « Grrr fausse joie pas de remontée d’info entre la sonde et domoticz pourtant le fichiert emper.txt est bien créer.
    quand je fais un chmod 777 /home/pi/domoticz/scripts/dhtsend.sh il n’y a pas d’ erreur et pas de remontée non plus

    une idée grans chef?  »

    une idée?

  41. Bonsoir
    Bon je redis ici une fois de plus que le DHT11/22 ne fonctionnera jamais bien avec le raspberry mais tu as du le voir dans l’article !!

    We noticed that both examples has a chance to lose data. This is because Raspberry Pi is not running at a real-time system, the delay in the program is not accurate enough, and sometimes that leads to a failure of transmission. Because C is a lower level language, it controls the GPIO pin in a more direct way, so the example in C has less chance to fail.

    pour lancer le script il ne faut pas faire chmod ….
    mais ./dhtsend.sh

    Dans tous les cas tu dois obtenir qq chose en sortie :
    soit des valeurs en hexa ,
    soit une température, sous réserve que tu sois branché sur la bonne PIN du Raspi
    soit iun message de valeurs incorrectes

    Dis nous ce qu’il en est précisément et …
    Y’a pas de mal à débuter

    Patrice

    :

  42. Bonsoir,
    Merci pour ta réponse si rapide,j’ai réessayé quelques heures après et effectivement apres plusieurs tentatives j’ai réussi a récupérer les données !
    merci pour ton tuto !!!

  43. Bonjour, et merci pour ce script !

    Pour résoudre les problèmes de lancements en multiples exemplaires, je propose ce petit script qui, au lieu de lancer une boucle infinie, ne teste que 5 fois à chaque lancement puis quitte s’il a échoué.

    [code]
    #!/bin/bash

    # Domoticz server
    SERVER= »192.168.1.81:8080″

    # DHT IDX
    # le numéro de l IDX dans la liste des peripheriques
    DHTIDX= »44″

    #DHTPIN
    # LE GPIO ou est connecte le DHT11
    DHTPIN= »27″

    # si vous avez un DHT22 modifiez plus bas sur la ligne Adafruit_DHT 11 par Adafruit_DHT 22

    # TMPFILE : chemin pour fichier temporaire a placer dans le RAMDRIVE pour eviter les
    # ecritures sur la SD card
    # sinon chemin ou sera ecrit le fichier contenant les temperature
    # /tmp/temper.txt est un bon choix si pas de RAMDRIVE installe
    # consultez http://www.easydomoticz.com pour tout savoir

    TMPFILE= »/var/tmp/temper.txt »
    # modif de patrick du 08/03/15 pour interroger que 5 fois maxi
    cpt=0
    while [ $cpt -lt 6 ]
    do
    TEMP= » »
    sleep 5
    sudo nice -20 Adafruit_DHT 11 $DHTPIN > $TMPFILE
    TEMP=$(cat $TMPFILE|grep Temp |awk ‘{print $3}’)
    if [ $TEMP ]
    then
    TEMP=$(cat $TMPFILE|grep Temp |awk ‘{print $3}’)
    HUM=$(cat $ $TMPFILE |grep Temp |awk ‘{print $7}’)
    #echo $TEMP
    #echo $HUM
    # Send data
    curl -s -i -H « Accept: application/json » « http://$SERVER/json.htm?type=command&param=udevice&idx=$DHTIDX&nvalue=0&svalue=$TEMP;$HUM;2″
    TEMP= » »
    HUM= » »
    rm $TMPFILE
    exit 0
    fi
    #echo $cpt
    cpt=$(($cpt+1))
    done
    exit 1
    chmod +x /home/pi/domoticz/scripts/nom_du_script
    [/code]

  44. Merci pour toutes vos explications très détaillées, cela marche bien je récupère les datas du Dht22 sans problèmes. Cependant toutes les 48 h environ j’ai un plantage avec plusieurs Dhtsend qui tournent en mémoire. N’étant pas un spécialiste linux pouvez-vous approfondir « Il faudrait dans le script vérifier si il y a un autre script qui tourne en mémoire, le flinguer, avant de relancer une nouvelle dhtsend
    Merci par avance…
    ecubitus

  45. Bonjour
    Un lecteur à proposé un correction que j’ai incluse dans le script afin de n’interroger le DHT que 5 fois, tu peux donc reprendre le script bash modifié ci-dessus.

  46. Merci Patrice pour ce nouveau script.
    Enfait si je comprends on va tenter de le lire 5 fois au maximum, mais on ne tue pas le process qui ne réponds pa ?

    Ecubitus

  47. Oui en effet tu as raison
    Comme le script sort maintenant proprement au bout de 5 tentatives de lecture, il n’y a plus de script zombie qui traine, donc plus rien a tuer

  48. Merci Patrice pour ces précisions et ta très grande rapidité de réponse.
    A très bientôt pour d’autres questions.

  49. Merci pour le partage de ce tuto qui fonctionne parfaitement bien chez moi. Juste deux remarques qui se veulent constructives et qui concernent les noob dans linux… tu devrais préciser dans ton tuto, avant la partie création du script, que celui ci sera enregistré dans /domoticz/scripts
    Ensuite, ce script, c’est un sh ou bien? Si oui, il faudrait aussi le préciser (ou si c’est une autre extension)… Ce serait plus clair je pense… en tout cas pour moi… 😉

    Enfin, il y a toujours une incohérence (rahhh zut, ça fait 3 remarques… :-p ), entre la partie test de la sonde où tu utilises le gpio 4 et la définition du pin dans le script où tu utilises le gpio 27 (?)… dailleurs, sur mon raspberry B, je n’ai pas de gpio 27…

    Voilà, encore un super tuto… je ne sais pas si tu prévois d’en faire avec l’utilisation de modules wifi (ESP8266) et pleins de capteurs… mais ce serait super….

  50. Bonjour
    En effet les points que tu cites sont corrigés, merci de la relecture attentive. (Pourquoi ai je écrit 27 ??)

    Pour le ESP8266, faut voir, je suis toujours dans ma période intense Mysensors.org et j’ai plein de bricolages en cours avec ça, alors …

  51. En fait je demande ce type de tutos car hormis le classique tuto sur le wiki de domoticz avec une ds18b20, il n’y a rien d’autre et j’avoue pas mal galérer pour d’autres types de sondes…. même en essayant d’adapter le tuto initial…. :p
    En tout cas, merci encore pour ce site… je l’ai mis dans mes favoris et dans ma veille RSS… comme ça je perd rien….

  52. Pingback: Domoticz en DHT-22 sensor

  53. bonjour
    j’ai suivis le tuto mais domoticz ne se met pas à jour.
    lorsque j’exécute mon script j’ai un message qui s’affiche:
    cat : aucun fichier ou dossier d ece type
    HTTP/1.0 401 Unautorized
    Content-Length: 91
    Content-Type: text/html

    au secours je ne comprends plus rien du tout^^’

  54. Bonjour,

    Avez vous déjà tester la réception des données au travers d’un autre raspberry PI (qui n’est pas serveur Domoticz)?

    je m’explique, je dispose de caméra de surveillance via RPi j’aurais souhaité leur greffer une sonde DHT22 ou DS18B20 pour récupérer de la données domotique.

    en gros:

    CamPi1 + Sonde RPi Domoticz CamPi2 + Sonde

    Donc interrogation des sonde distantes par le le LAN (on peut aussi passer par du RF pk pas)

    Dans l’attente d’un retour

    Cordialement,

  55. Pingback: Domoticz met DHT-22 sensor

  56. Bonjour,

    je cherche à pouvoir rendre mon rpi autonome de toute connection internet mais ceci m’est pour l’instant impossible car l’envoi des données de la DHT se fait par json qui appel un URL avec un adresse IP.

    Ma question est donc la suivante, puis je me passer de json (ou l’utiliser dans mes conditions) pour que mon rpi puisse continuer à faire tourner ces scénario tout en récoltant les informations de la sonde?

    En vous remerciant

  57. Bonjour,

    Tu te trompes car même si le programme utilise l’adresse IP de ton PI, il n’utilise pas internet, mais juste une adresse réseau locale au sein de ton domicile, sans accès vers l’extérieur.

    Fais le test en débranchant la PRISE TELEPHONIQUE ADSL et tu verras que cela continue a fonctionner.

  58. Bonjour,

    Dans ce cas tu as raison mais je ne veux pas juste me passer de connexion internet, je me suis mal exprimé. Je souhaite me apsser de connexion au routeur. c’est ce que j’entend par « autonomie »

     

    Merci de m’avoir lu

  59. Bonjour
    Si ton DHT est sur le meme pi que Domoticz , tu peux remplacer l’adresse ip par 127.0.0.1

  60. Bonjour a tous, j’ai deja suivi ce tuto et tout a fonctionné.

    Suite à un réinstallation aujourd’hui, plus rien ne répondait ! la copie du fichier « Adafruit_DHT » faisait 0 octet pour commencer une fois ce problème résolu, le script n’arrivait plus a extraire les données !
    pour résoudre c’est petit soucis :

    les drivers:

    sudo wget http://goo.gl/oadpl -O Adafruit_DHT = 0 octet ! (erreur 404 : Not Found.)
    sudo apt-get install git-core
    git clone https://github.com/adafruit/Adafruit_Python_DHT.git 
    cd Adafruit_Python_DHT
    git pull origin
    sudo python setup.py

    la on a créer Adafruit_DHT 🙂 et on le copie comme au dessus

    sudo cp Adafruit_DHT /usr/bin/
    sudo chmod 777 /usr/bin/Adafruit_DHT

    le script

    une copie vaudra mieux qu’un long discourt, les modifications apportées:

    j’ai remplacé les « awk », par des « cut », les awk ne revoyais plus rien, et le sleep à la fin pour attendre que dans le cas ou il n’y a pas de réponse et 2 sec au lieu de 5. Voila !

    #!/bin/bash
    
    # Domoticz server 
    SERVER="192.168.0.32:8080"
    
    # DHT IDX 
    # le numéro de l IDX dans la liste des peripheriques 
    DHTIDX="2"
    
    #DHTPIN 
    # LE GPIO ou est connecte le DHT11 
    DHTPIN="24"
    
    # si vous avez un DHT22 modifiez plus bas sur la ligne Adafruit_DHT 11 par Adafruit_DHT 22 
    # TMPFILE : chemin pour fichier temporaire a placer dans le RAMDRIVE pour eviter les 
    # ecritures sur la SD card # sinon chemin ou sera ecrit le fichier contenant les temperature 
    # /tmp/temper.txt est un bon choix si pas de RAMDRIVE installe 
    # consultez www.easydomoticz.com pour tout savoir
    
    TMPFILE="/var/tmp/temper.txt" 
    # modif de patrick du 08/03/15 pour interroger que 5 fois maxi 
    cpt=0 
    while [ $cpt -lt 6 ] 
    do 
    TEMP="" 
    sudo nice -20 Adafruit_DHT 22 $DHTPIN > $TMPFILE 
    TEMP=$(cat $TMPFILE|grep Temp |cut -c 6-9) 
    if [ $TEMP ] 
    then 
    TEMP=$(cat $TMPFILE|grep Temp |cut -c 6-9) 
    HUM=$(cat $TMPFILE |grep Temp |cut -c 22-25) 
    #echo $TEMP 
    #echo $HUM 
    # Send data 
    curl -s -i -H "Accept: application/json" "http://$SERVER/json.htm?type=command&param=udevice&idx=$DHTIDX&nvalue=0&svalue=$TEMP;$HUM;2" TEMP="" HUM="" 
    rm $TMPFILE 
    exit 0 
    fi 
    #echo $cpt 
    cpt=$(($cpt+1)) 
    sleep 5
    done 
    exit 1

    en espérant que ce sera utile à d’autre.

  61. Je crois qu’il y une erreur.

    Il ne manque pas le « install » à la fin de la ligne « sudo python setup.py »

    Bon, de mon côté cela n fonctionne pas.

    Je ne peux effectuer cette commande. sudo cp Adafruit_DHT /usr/bin/

    Voici l’erreur.

    cp: omitting directory ‘Adafruit_DHT’

     

    Merci pour votre aide

  62. Bonjour
    L’erreur que tu as te dis qu’il ne trouve pas Adafruit_DHT , tu ne l’a peut être pas telechargé, il a peut être changé de nom …
    fait un ls pour voirr tous les fichiers et ainsi trouver le bon nom pour faire ton cp ensuite

  63. Salut

    ca fait plusieurs fois que j’essai d’installer un DHT22

    J’ai beau recommencer tout sur domoticz il n’apparait pas.

    J’ai bien mon Idx brancher aussi le port 4

    Quand je lance sudo ./testdht_22.sh

    ca tourne en rond et au bout de 2mn il s arrete et meme pas de message d’erreur!

    Par contre si je vais consulter le fichier temper.txt, il est bien mis a jour et comporte la temp et l’humidite!

    Je comprends plus

     

    #!/bin/bash

    # Domoticz server
    SERVER= »127.0.0.1:8080″

    # DHT  IDX
    # le numéro de l IDX dans la liste des peripheriques
    DHTIDX= »24″

    #DHTPIN
    # LE GPIO ou est connecte le DHT11
    DHTPIN= »4″

    # si vous avez un DHT22 modifiez plus bas sur la ligne Adafruit_DHT 11 par Adafruit_DHT 22

    # TMPFILE : chemin pour fichier temporaire a placer dans le RAMDRIVE pour eviter les
    # ecritures sur la SD card
    # sinon chemin ou sera ecrit le fichier contenant les temperature
    #  /tmp/temper.txt est un bon choix si pas de RAMDRIVE installe
    # consultez http://www.easydomoticz.com pour tout savoir

    TMPFILE= »/var/tmp/temper.txt »
    # modif de patrick du 08/03/15 pour interroger que 5 fois maxi
    cpt=0
    while [ $cpt -lt 6 ]
    do
    TEMP= » »
    sleep 5
    #sudo nice -20 AdafruitDHT.py 2302 $DHTPIN > $TMPFILE
    sudo nice -20 Adafruit_DHT 22 $DHTPIN > $TMPFILE
    TEMP=$(cat $TMPFILE|grep Temp |cut -c 6-9)
    if [ $TEMP ]
    then
    TEMP=$(cat $TMPFILE|grep Temp |cut -c 6-9)
    HUM=$(cat $TMPFILE |grep Temp |cut -c 22-25)

    #echo $TEMP
    #echo $HUM
    # Send data
    curl -s -i -H  « Accept: application/json »  « http://$SERVER/json.htm?type=command&param=udevice&idx=$DHTIDX&nvalue=0&svalue=$TEMP;$HUM;2″
    TEMP= » »
    HUM= » »
    rm $TMPFILE
    exit 0
    fi
    #echo $cpt
    cpt=$(($cpt+1))
    sleep 5
    done
    exit 1

     

    Merci de votre aide

  64. Bonjour
    Donnes moi une copie du contenu de temper.ttx et decommente les 2 lignes
    echo $TEMP
    echo $HUM
    et dis moi ce que ca affiche (rien)

  65. Bonjour,

    Merci pour ce tuto…

    je dois recevoir mon DHT22 ce jour et je compte le câbler ce soir sur ma Rasp…

    J’ai 2 questions :

    j’ai lu quelque part que la résistance n’était pas nécessaire, est-ce vrai ?
    Le capteur est prévu pour fonctionner de 3.3 V à 6 V, pourquoi le brancher sur le 3.3 V et pas sur le 5 V directement (qui peut le plus etc..) ?

  66. Bonsoir

    Non, il faut la résistance
    Si tu en a commandé plusieurs DHT essaye donc sur le 5 V et tu me diras si ca marche 🙂

    non je déconne ça roule sur du 5V en effet

  67. Bonjour et merci pour ta réponse…

    J’ai essayé hier soir (avec une résistance de 4k7 et sur le 3,3 v…) mais ça ne fonctionne pas…

    Je n’ai pas d’erreur particulière lorsque je lance la commande

    sudo Adafruit_DHT 22 7 (mon DHT est relié à la GPIO 7...)
    

    Mais je ne reçois aucune réponse, rien, que dalle, nada, nib…

    Je vais refaire l’essai ce midi avec une résistance de 10k, puis j’essaierai sur une autre broche GPIO…

    Je suis avec un Rasp B+, mais normalement ça ne doit pas changer grand chose…

  68. Bon c’est beaucoup mieux, en fait j’ai tout recommencé à partir de 0 et j’y suis presque !

    Il me reste à résoudre une dernière difficulté : le cron ne lance  pas mon script…

    Si je le lance manuellement en ligne de commande, domoticz est bien mis à jour…

    Je vais aller faire un tour sur internet pour voir ce qu’il peut se passer.

  69. Voilà c’est ok…

    en fait, j’avais fait un

    crontab -e

    alors qu’il fallait un

    sudo crontab -e

    pour garder le même environnement bash…

    Peut-être faudrait-il préciser cela dans cet excellent tuto…

  70. bonjour,
    il y a une différence entre les 2 , sudo devant prends les droits root alors que crontab -e utilise les droits du user , ce qui n’est pas la même chose et qui dépends du compte avec lequel tu as écrit le script : root ou user des chown,chgrp ….

  71. Ah ok, merci pour la précision…

    En tout cas ça fonctionne comme ça pour moi, je ne touche plus à rien !

  72. Bonjour,

    je me suis exprimé un peu vite, en fait ça march…ouille !

    Mon script semble bien se lancer toutes les 5 minutes, mais domoticz n’est pas mis à jour, sauf de temps en temps, aléatoirement…

    Par exemple ce matin je constate que la dernière mise à jour date d’hier soir à 23h05 et depuis plus rien…

    Lorsque je lance le script manuellement plusieurs fois de suite (en attendant un peu entre chaque lancement), quelques fois j’ai des erreurs http, comme si il ne parvenait pas à se connecter au serveur domoticz, qui est pourtant sur la même rasp, et qui fonctionne puisque j’y accède par mon explorateur du PC de bureau…

    Bizarre…

  73. Bonjour, tout d’abord un grand merci pour ce tuto.

    Le lien pour la librairy adafruit est Hs, serait-il possible de le mettre à jour svp?

    J’ai essayé la librairie trouvable sur github mais impossible de faire fonctionner le script. J’arrive a lire la température, le fichier temporaire est bien mis à jour, lorsque je met l’adresse json dans un navigateur il me met ok et je vois une mise à jour dans domoticz mais la température et l’humidité reste à 0. Du coup j’aurais bien essayé avec la libraire que vous proposez.

  74. bonsoir,

    Je n’arrive pas à faire fonctionner mon DTH11 dans domoticz car je n’arrive pas à aboutir votre procédure à 100%

     

    Ce lien ne fonctionne plus:

    sudo wget http://goo.gl/oadpl -O Adafruit_DHT

    Auriez-vous un autre lien à jour svp?

    Merci,

  75. Bonjour
    En effet Adafruit à mis sur github une nouvelle bibliothèque utilisable en python, j’ai donc refait tous l’article et les scripts liés, cela fonctionne correctement maintenant
    et c’est ici que ce trouve le nouveau tuto https://easydomoticz.com/?p=3824

  76. Bonjour
    En effet Adafruit à mis sur github une nouvelle bibliothèque utilisable en python, j’ai donc refait tous l’article et les scripts liés, cela fonctionne correctement maintenant
    et c’est ici que ce trouve le nouveau tuto https://easydomoticz.com/?p=3824

Comments are closed.