Impressum Startseite Grund Installation Grundlagen Hilfreiches Projekte Querschläger Meckerecke

Grundlagen: Temperatur und Luftfeuchtigkeit mit dem Raspberry Pi messen

Ich habe viele Foren durchwühlt auf der Suche nach Temperatur Sensoren. Irgendwie bin ich immer wieder beim DHT22 hängen geblieben, der zum einen die Temperatur und Luftfeuchtigkeit messen kann und anderseits aus China recht günstig bei ebay zu finden ist (3-5 Euro).

Der DHT22 braucht nur +3,3V, Masse und einen 1 Wire GPIO. Also 3 Adern. Desweiteren muss noch etwas Software zum abfragen installiert werden.

Die Hardware:

Von Pin 1 (3,3V) geht es an Pin1 beim DHT22
Von Pin 6 (GND) geht es an Pin4 beim DHT22
Von Pin 7 (GPIO4) geht es an Pin2 beim DHT22
Ein 10 KOhm Widerstand wird zwischen Pin1 (+3,3V) und Pin2 (GPIO4) am DHT22 geschaltet.
 

Die Software:

Als erstes muss ein bischen was installiert werden, bitte die Befehle direkt so in der Reihenfolge so eingeben:

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

Jetzt kann man durch aufruf von

sudo ./loldht 7

die Temperatur und Luftfeuchtigkeit abfragen.

In etwa folgendes sollte jetzt zu sehen sein:

Raspberry Pi wiringPi DHT22 reader
www.lolware.net
Humidity = 61.40 % Temperature = 25.00 *C

Damit ein Bash Script das auch für uns erledigen kann machen wir noch folgendes:

sudo cp loldht /var/www/loldht

Das kopiert das eigentliche Programm in den www Ordner. Weiterhin geben wir dem Programm ALLE Rechte, ansonsten kann der User www-data nicht darafu zugreifen - das ist zwar nicht die saubere Art so etwas zu erledigen, aber es funktioniert.

sudo chmod 0777 /var/www/loldht

jetzt können wir durch:

cd /var/www

sudo /var/www/loldht 7

...die Temperatur abfragen. Zu beachten ist das der Sensor nur ca alle 2 Sekunden abgefragt werden kann.

Jetzt legen wir uns noch ein Bash Script an, welches wir durch einen Crontab alle 5 Minuten aufrufen lassen.

Datei: temp.sh

#!/bin/bash
sudo killall -q loldht > /dev/null 2>&1
temp=$(sudo /var/www/loldht 7)
echo "$temp" > /var/www/Temperaturen.txt

Die Rote Zeile "sudo killall -q loldht > /dev/null 2>&1" verhindert das sich ein Prozess "aufhängt" und dann weitere Abfragen blockiert, damit schießt man den betreffenden Prozess erst ab bevor man eine Messung macht, dadurch entstehen bei mir auch keine "Lockfiles" mehr die das ganze System blockieren.

Den passenden Cronjob einrichten:

sudo crontab -e

Und dort tippen wir folgendes ein:

*/5 * * * * /bin/bash /var/www/temp.sh >/dev/null 2>&1

Dieses Script ruft die Temperatur Abfrage loldht auf, und sichert die Ausgabe in einer Textdatei "Temperaturen.txt".Diese Textdatei enthält unsere aktuelle Temperatur und Feuchtigkeit, die wir jetzt z.b. mit PHP weiter verarbeiten können:

<?php
//File einlesen
$Ausgabe=file_get_contents('Temperaturen.txt');

//Temperatur Extrahieren
$Temppos=(strpos($Ausgabe,"Temperature = "));
if ($Temppos!==FALSE) {$Temppos=$Temppos+14;$Temppos2=strpos($Ausgabe,"*C",$Temppos);

$Temperatur=trim(substr($Ausgabe,$Temppos,$Temppos2-$Temppos));
} else {$Temperatur="Fehler";}

//Feuchtigkeit Extrahieren
$humpos=(strpos($Ausgabe,"Humidity = "));
if ($humpos!==FALSE) {$humpos=$humpos+11;$humpos2=strpos($Ausgabe," %",$humpos);
$Humi=trim(substr($Ausgabe,$humpos,$humpos2-$humpos));
} else {$Humi="Fehler";}

//Ausgabe
echo "<br>Temperatur : ".$Temperatur." C";
echo "<br>Feuchtigkeit : ".$Humi." %";
?>

Mittlerweile lasse ich alle Temperaturen des Kellers und der Wohnung hier archivieren - ausserdem auch wann welche Tür geöffnet wurde etc,pp... Bei gewissen Temperaturen ( mehr als 60 Grad !) lsse ich mich mittlerweile per SMS benachrichtigen, dann scheint es nämlich zu brennen 8-).

Impressum Startseite Grund Installation Grundlagen Hilfreiches Projekte Querschläger Meckerecke