Mein Datenhaufen zu IT und Elektronik Themen.

Temperaturmessung mit dem Raspberry Pi und dem DHT22. Aber bitte mit Cacti Graphen.

Meine Wetterstation hat aufgegeben 🙁 OK, wirklich interessant war für mich immer nur Luftfeuchtigkeit und Temperatur draußen. Diese Aufgabe sollte doch von meinem Raspberry Pi erfüllt werden können, oder? Dann hätte ich die Daten zusätzlich direkt in meinem Cacti!

Ich setzte dabei auf den DHT22 / AM2302. Über Amazon war dieser für 2€ schnell bestellt. Ein 4,7kΩ Widerstand hatte ich selbstverständlich noch. Das eigentliche Schaltbild ist nicht weiter der Rede wert, ich habe da ein Bild für euch weiter unten…

Zur Software…

Nötig ist git für wiringPi und lol_dht22

Erstmal eine root Konsole auf dem Raspberry Pi öffnen:

$ sudo /bin/bash

Alle Tools für git installieren:

$ apt-get install git-core

Dann einen clone von wiringPi ziehen und kompilieren:

$ git clone git://git.drogon.net/wiringPi
$ cd wiringPi
$ ./build
$ cd ..

Jetzt noch schnell lol_dht22, dieses Programm liest den eigentlichen Sensor aus.

$ git clone https://github.com/technion/lol_dht22
$ cd lol_dht22
$ ./configure
$ make

Damit sollte sich bereits der Sensor auslesen lassen:

$ ./loldht 7
Raspberry Pi wiringPi DHT22 reader
www.lolware.net
Data not good, skip
Humidity = 73.90 % Temperature = 9.30 *C

Perfekt 😀 Nun benötige ich natürlich nur die beiden Zahlen. Daher habe ich den Code etwas angepasst. So bekomme ich jetzt nur noch die beiden Werte beim Aufruf:

$ /lol_dht22/loldht 7
73.90
9.30

Diese sammle ich nun per Bash-Script über einen Cron-Job ein und lege sie in zwei Files.

$ crontab -l
* * * * * /var/scripts/getsensor.sh

Hier das vom Cron aufgerufene Script:

$ cat /var/scripts/getsensor.sh
#!/bin/bash

/lol_dht22/loldht 7 > /home/pi/both.txt

 
while [ ! -s "/home/pi/both.txt" ]
do
        sleep 5
        /lol_dht22/loldht 7  > /home/pi/both.txt
 
done

sed '2d' /home/pi/both.txt > /home/pi/humid.txt
sed '1d' /home/pi/both.txt > /home/pi/temp.txt

Damit liegen nun immer die aktuellen Werte für Temperatur und Luftfeuchtigkeit in den beiden Textfiles unter /home/pi.

Jetzt sollen diesen Daten natürlich noch per snmp abgerufen werden können, damit ich sie in Cacti einbinden kann. Also zuerst snmp auf dem Raspberry Pi installieren:

$ apt-get install snmp snmpd

Unter „Pass-through“ MIB extension command lege ich nun zwei weitere an, für Temperatur und Luftfeuchtigkeit:

pass .1.3.6.1.2.1.25.1.8.2      /bin/sh         /usr/local/bin/temp
pass .1.3.6.1.2.1.25.1.8.1      /bin/sh         /usr/local/bin/humid

Wird nun per snmp diese OID abgefragt, wird das zugehörige Script ausgeführt:

$ cat /usr/local/bin/temp
#!/bin/bash
echo .1.3.6.1.2.1.25.1.8.2
echo gauge
cat /home/pi/temp.txt
$ cat /usr/local/bin/humid
#!/bin/bash
echo .1.3.6.1.2.1.25.1.8.1
echo gauge
cat /home/pi/humid.txt

Als kleiner Test:

$ snmpget -c public -v1 errorpi .1.3.6.1.2.1.25.1.8.1
iso.3.6.1.2.1.25.1.8.1 = Gauge32: 76

$ snmpget -c public -v1 errorpi .1.3.6.1.2.1.25.1.8.2
iso.3.6.1.2.1.25.1.8.2 = Gauge32: 9

Dieses lässt sich nun im Cacti einbinden und so aufzeichnen. Ok, etwas von hinten durch die Brust ins Auge… Sicher optimiere ich dieses noch 😀

Ach ja,  wer es braucht… Die Template-Exports für Cacti sind hier: cacti-temp.tar.gz


Und wohin mit dem Teil? Diese Frage hat mich etwas beschäftigt. Ich wollte es draußen haben, denn ich brauche ja die Daten von draußen 😀 Dafür muss es geschützt vor Wasser sein. Um die Luftfeuchtigkeit messen zu können darf es denn noch nicht komplett verschlossen sein. Ebenfalls sollte es an einer Stelle hängen, an welcher es nicht zu schlecht aussieht und vor allem, an welcher es nicht zerstört wird.

Ich habe einfach ein Rohr genommen, den Sensor dort mit etwas Silikon „eingeklebt“ und das Rohr an einer Seite mit einem Deckel verschlossen. So sollte kein Wasser an den Sensor laufen können. Angebracht habe ich dieses Rohr an meinem Pfosten der Satellitenschüssel. Dort oben „steht“ die Luft eher selten und es kommt niemand ran. Zusätzlich fällt es dort nicht weiter auf.

Mal abwarten wie es sich dort oben macht. Vielleicht hänge ich es später noch mal um! Sobald sich die eigentliche Position gefestigt hat, wird dann auch der Raspberry PI ordentlich verstaut ;-P


1 Kommentar

  1. Torsten Haucke

    Hallo und danke für die Vorstellung.
    wie und wo muss ich das einstellen?

    Perfekt 😀 Nun benötige ich natürlich nur die beiden Zahlen. Daher habe ich den Code etwas angepasst. So bekomme ich jetzt nur noch die beiden Werte beim Aufruf:

    $ /lol_dht22/loldht 7
    73.90
    9.30

    Möchte das genauso gerne einstellen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

© 2024 -=Kernel-Error=-

Theme von Anders NorénHoch ↑