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