Naast de Dallas sensor was ik ook nog in het bezit van een DHT-22. Deze had ik altijd al in de meterkast om daar de temperatuur en luchtvochtigheid te meten. Om de DHT-22 met Domoticz te laten samenwerken is er meer nodig.
De DHT-22 heeft dezelfde 4 pinnen als de DHT-11, dus heb ik een rode draad op de +3,3V, een bruine draad op de data en een zwarte draad op de GND pin gesoldeerd. Tussen de rode spanning en de data op de bruine draad moet een 4K7 weerstand aangesloten worden.
Domoticz heeft een bestand van Adafruit nodig:
sudo wget https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code/ -O Adafruit_DHT
sudo cp Adafruit_DHT /usr/bin/
sudo chmod 777 /usr/bin/Adafruit_DHT
De bruine data draad sluit ik aan op GPIO 17 (Pin 11), rood op +3,3V (Pin 1 of 17) en zwart op GND (Pin 6,9,20,25,30,34 of39), vervolgens kun je via Putty testen of het werkt (22 staat voor DHT 22 sensor en 17 voor de gebruikte GPIO Pin):
sudo Adafruit_DHT 22 17
In Domoticz maakt je vervolgens een Dummy, Virtuele Temp&Hum sensor aan en je maakt het volgende bestand:
touch /var/tmp/temper.txt
Je maakt nu het bestand /home/pi/domoticz/scripts/dht22.sh en plakt onderstaand script er in. Verander je IP adres en Idx van de net aangemaakte virtuele sensor en GPIO17:
#!/bin/bash # Domoticz server SERVER="192.168.2.3:8080" # DHT IDX # le numéro de l IDX dans la liste des peripheriques DHTIDX="18" #DHTPIN # LE GPIO ou est connecte le DHT11 DHTPIN="17" # 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 22 $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¶m=udevice&idx=$DHTIDX&nvalue=0&svalue=$TEMP;$HUM;2" TEMP="" HUM="" rm $TMPFILE exit 0 fi #echo $cpt cpt=$(($cpt+1)) done exit 1
Nu maken we het bestand uitvoerbaar:
chmod +x /home/pi/domoticz/scripts/dht22.sh
Om regelmatig (iedere 5 minuten) de temperatuur en luchtvochtigheid uit te lezen voegen we onderstaande regel toe aan Domoticz:
crontab -e
*/5 * * * * /home/pi/domoticz/scripts/dht22.sh
Bron: http://easydomoticz.com/raspberry-et-dht11/#more-325
Bijgewerkt op 20 februari 2023
Hi,
Your explanation is very good. I would like only to ask you what is DHTIDX parameter?
Regards,
Paweł
DHTIDX is the number (IDX) of the Dummy Sensor in Domoticz.
Hi,
Thank you for the answer. If I add DHT22 as Dummy device I have Idx 2. After that I make virtual sensors (temp+humidity) and then on the list of devices I see Idx 7.
I changed in dht22.sh Idx for 2 and for 7 but I can’t see temp and humidity measurement. I still see 0.0 C and 50% humidity.
I’m sure that DHT22 is connected properly because I see measurements from other script.
What I make wrong?
Virtual sensor Idx 7 should work. Sensor connected properly you say. You could test the sensor connection first: sudo Adafruit_DHT 22 “number GPIO pin”
Did you chmod the script? Correct crontab? Run the script manually.
sorry:
sudo Adafruit_DHT 22 “17”
Using pin #17
Data (0): 0x0 0x0 0x0 0x0 0x0
Don’t use the ” “. sudo Adafruit_DHT 22 17 or sudo Adafruit_DHT 22 4
I switched to GPIO 4 if I run the script manually I have:
pi@raspberrypi ~/domoticz/scripts $ bash dht22.sh
dht22.sh: line 23: gt: command not found
Using pin #4
Did you do: touch /var/tmp/temper.txt ?
Did you adjust also the script to GPIO 4?
yes I did all your instructions
Now I’m back to 17 and it looks like:
pi@raspberrypi ~ $ sudo Adafruit_DHT 22 17
Using pin #17
Data (0): 0x0 0x0 0x0 0x0 0x0
Maybe I should make some other arrangements to let Domoticz to see GPIO’s?
I implemented your code once again and now I have:
pi@raspberrypi ~/domoticz/scripts $ bash dht22.sh
dht22.sh: line 27: gt: command not found
Using pin #17
In line 27, Adafruit_DHT is executed. Did you chmod it?
Sometimes in Domoticz i had trouble with script who were correct. Just a reboot worked.
Yes of course. I restarted and still the same.
Should I do this: https://www.domoticz.com/wiki/GPIO
?
No, i didn’t use that, and the French source website neither.
chmod +x /home/pi/domoticz/scripts/nom_du_script.sh
chmod: veranderen van toegangsrechten van ‘/home/pi/domoticz/scripts/nom_du_script.sh’: Bewerking niet toegestaan
Wat hier mee te doen..
in domoticz geen waarde te zien wel via putty.
Data (39): 0x26 0x0 0x14 0x0 0x3a
Temp = 20 *C, Hum = 38 %
Dat er geen waarden in Domoticz te zien zijn, is te verklaren doordat chmod +x niet werkt. Probeer het script anders te noemen en zonder “_”teken.
Leuk artikel. Ik heb de sensor inmiddels besteld. Nog een paar dingen die ik niet zo goed begrijp:
– “Tussen de rode spanning en de data op de zwarte draad moet ook weer een 4K7 weerstand aangesloten worden”. Die moet zijn op de rode draad en de bruine draad toch??
– Je sluit de data aan op pin 17, maar volgens jouw plaatje is dat 3.3V. Hoe zit dat precies?
Rick,
Goed gelezen. De weerstand moet tussen de rode (spanning) en bruine (data) draad. Ik heb het artikel aangepast.
Data gaat op GPIO17, dat is pin 11. Staat er wel goed, maar heb het voor de duidelijkheid nog aangepast.
Haha helemaal helder zo!
Dan heb ik nog 1 puntje gevonden:-) ik probeer het scriptje te begrijpen. Op regel 27 staat >, moet dat niet een ‘>’-teken zijn?
Geen idee. Het script werkt bij mij zoals het op deze pagina staat.
Pingback: Domotica wensenlijstje
Beste hr Oldenburger,
ik heb meerdere raspberry’s waarop verschillende applicaties draaien. Op 2 daarvan probeer ik een DHT22 werkend te krijgen. Op de pi zonder domoticz lukt dit maar ik krijg het niet werkend onder domoticz. Ik krijg steeds 2 meldingen:
a) Adafruit_DHT lib niet aanwezig
b) eea als root draaien.
Ik heb deze Pi diverse keren helemaal schoongemaakt en de instructies van uw site gevolg maar geen resultaat. Wat mis ik of doe ik niet goed?
Ik heb het via het stappenplan op twee RPI’s met Domoticz werkend.
Als Adafruit_DHT mist, die moet je in één van de eerste stappen downloaden.
Gebruik je de Domoticz SD image?
Hoi Gertjan,
Bedankt voor je beschrijving.
Hopelijk kan jij mij helpen, ik heb de stappen zoals hierboven vermeld staan doorgelopen.
Helaas krijg ik bij sudo Adafruit_DHT 22 27 (27 is mijn GPIO) een output van Data (0): 0x0 0x0 0x0 0x0 0x0. Het bestand de juiste permissies (gecheckt!).
Een ander DHT script van Adafruit (https://learn.adafruit.com/dht-humidity-sensing-on-raspberry-pi-with-gdocs-logging/software-install-updated) gaf wel output (Temp=9.1* Humidity=72.1%) dus aan de bekabeling/DHT22/GPIO zal het niet liggen.
Alvast heel hartelijk dank voor je reactie.
Gr.
Wouter
Vervelende dat het niet werkt bij jou. Waarom is moeilijk te achterhalen (reboot gedaan?).
Heb je meegestuurde link even kort bekeken. Je zou dat script ook kunnen gebruiken, alleen moet je dan nog zorgen dat het in Domoticz komt. Hoe dat moet, weet ik niet. Misschien even kijken op het Domoticz forum, of de vraag daar stellen. Lees graag het vervolg.
Hoi Gertjan,
Bedankt voor je bericht! Reboot idd gedaan ;-).
Ik al het forum eens bezoeken.
P.s. op lijn 27 moet > een dakje naar rechts zijn (>). Zie ook het Franse script.
Beste Gertjan,
Ik heb jouw stappen een aantal keer doorlopen en krijg het nog niet werkend ook niet met een reboot. Ik heb alle stappen in een pdf gezet. Zou je daar even naar kunnen kijken en mij een tip kunnen geven?
https://rikaltena.stackstorage.com/index.php/s/dh0gWbFGRgzcKI3
Bedankt!
Rik
Beste Gertjan,
Ik heb er een > bij gezet zoals een van de bovenstaande suggesties aangaf, en het script draait helemaal. (zie link) maar nu krijg ik geen warde melding in domoticx. Heb je hiervoor een tip?
Bedankt!
Rik
https://rikaltena.stackstorage.com/index.php/s/3cDU9CRN40y2XXq
In plaats van GPIO kiezen in Hardware van Domoticz, moet je een dummy switch aanmaken.
Beste Gertjan,
Volgens mij doe ik dat ook (zie pdf) wat doe ik verkeerd?
Bedankt!
Rik
Gertjan,
Ik probeer de DHT op de raspberry te plaatsen.
Onder een Arduino werht die sensor.
Maar Als ik jouw procedure volg krijg ik een fout
dat het bestand er niet is.
sudo wget http://goo.gl/oadpl -O Adafruit_DHT
klopt dat adres wel?
Dick
Nee, krijg een 404 error in de browser.
Hier moet je zijn: https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code/
procedure werkt nu met dit adres
Wat je misschien ook een optie is, is om ESP8266 te gebruiken voor de sensor(en).
Het enige wat je daarvoor nodig hebt is een micro-usb voeding en de data wordt over Wifi naar de Domoticz (Pi) gestuurd.
Beste Gertjan
grijg bij comando
sudo Adafruit_DHT 22 17
fout /usr/bin/Adafruit_DHT: Syntax error: newline unexpected
Zie de eerdere reacties op dit artikel.
Beste Gertjan,
Werkt dit script ook met Domoticz SD image?
Jazeker, bij mij wel in ieder geval.
Beste Gertjan,
Is het mogelijk dat je de procedure aanpast voor de raspberry pi 3.
Met de juiste commando’s.
Gr Peter
sudo wget http://goo.gl/oadpl -O Adafruit_DHT
sudo cp Adafruit_DHT /usr/bin/
sudo chmod 777 /usr/bin/Adafruit_DHT
Gertjan
klopt dit geheel wel ik krijg foutmeldingen over
-O
wget
enz.
dick
Eerste regel moet nu zijn: sudo wget https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code/ -O Adafruit_DHT
Stond ook al bij de reacties, nu aangepast in artikel!