Raspberry Pi | Andreas Dumont | 4/2025 | 30. Mai 2025

Raspberry Pi als Messstation

Mit einem kleinen und preiswerten Sensor lässt sich der Raspberry Pi in eine Messstation verwandeln. Damit behalten Sie Temperatur und Luftfeuchtigkeit in der Wohnung auch aus der Ferne im Blick.

So schließen Sie den Temperatursensor DHT22 an den Raspberry Pi an. Sie benötigen die Pins 1, 32 und 34.

Mit dem Sensor DHT22 machen Sie den Rasp­berry Pi zu einem Messgerät. Der Sensor misst die Temperatur mit einer Genauigkeit von 0,5 Grad Celsius und die Luftfeuchtigkeit mit einer maximalen Abweichung von zwei Prozent. Als ideal gelten Temperaturen von 20 bis 22 Grad Celsius und eine Feuchte zwischen 40 und 60 Prozent. Die Messrate beträgt 0,5 Hz. Das bedeutet, dass sich Messwerte alle zwei Sekunden auslesen lesen. Die Datenübertragung erfolgt über das One-Wire-Protokoll. Am besten greifen Sie zu einem Komplettpaket, das Sensor und den benötigten Widerstand in einem Modul vereint und auch die Kabel enthält. Das Ganze gibt es etwa im Onlineshop von AZ-Delivery oder bei Amazon für rund neun Euro.

Den Sensor anschließen

Der Schaltungsaufbau zur Ansteuerung des DHT22 mit dem Raspberry Pi ist einfach. Sie verbinden die drei Pins des Sensors mit drei Pins auf dem Raspberry Pi. Dazu verwenden Sie die Female/Female Jumper Wires. Female bedeutet, dass sich am Ende Buchsen befinden und keine Stecker.

Der Sensor kann zwar mit 5 Volt Eingangsspannung umgehen, nutzt diese aber dann auch am digitalen Ausgang. Der Raspberry Pi verträgt an seinen GPIO-Pins jedoch maximal 3,6 Volt. Deshalb müssen Sie den Sensor mit 3,3 Volt versorgen. Verbinden Sie also Pin 1 des Sensors (der ganz linke) mit einem 3,3-Volt-Pin am Raspberry. Sie haben dort die Wahl zwischen Pin 1 und Pin 17.

Um später im Script keine Anpassungen erforderlich zu machen, verbinden Sie den mittleren Pin des Sensors mit Pin 32 auf dem Raspberry Pi. In der GPIO-Nummerierung trägt er die Nummer 12. Schließlich verbinden Sie noch den dritten Pin des Sensors mit dem Ground-Pin 34.

Die Sensordaten auslesen

Für das Auslesen der Sensordaten gibt es mehrere Möglichkeiten. In diesem Artikel übernimmt ein Python-Script diese Aufgabe. Dafür steht eine Bibliothek bereit, die den Umgang mit dem DHT22 deutlich vereinfacht. Führen Sie zunächst 

sudo apt install libgpiod2

durch, um den Umgang mit der GPIO-Leiste zu erleichtern. Dann laden Sie die Ada­fruit DHT-Bibliothek herunter und installieren sie:

pip3 install adafruit-circuitpython-dht --break-system-packages

Nun geht es daran, die Daten des Sensors auszulesen. Ein erstes Script „dht22.py“ (auf Heft-DVD und in Abbildung) dient dazu, die Messwerte im Terminal auszugeben. In den ersten drei Zeiln werden die benötigten Bibliotheken importiert, darunter auch die zuvor installierte Adafruit-Bibliothek. Die Zeile 

dhtDevice = adafruit_dht.DHT22(board.D12) 

legt fest, welchen Sensor und welchen GPIO-Pin man verwendet. Gemeint ist hier nicht die Pin-Nummer (32), sondern die GPIO-Nummer. In diesem Fall ist das Nummer 12. Anschließend liest das Script die Messwerte aus. Der Codeblock am Ende dient dazu, Fehler abzufangen, die beim Auslesen immer mal wieder vorkommen und andernfalls zu einem Abbruch des Scripts führen würden. Probieren Sie aus, ob das Script ordnungsgemäß funktioniert: Starten Sie die Datei im Terminal:

python3 dht22.py 

Sie erhalten alle 2,5 Sekunden neue Messwerte für Temperatur und Luftfeuchtigkeit. Das Script läuft so lange, bis Sie es mit Strg-C unterbrechen.

Ein Script liefert die aktuellen Werte Ihres Sensors. Den Code von „dht22.py“ und das zweite Script „dht22_log.py“ finden Sie auf Heft-DVD im Ordner „Software“.

Sensordaten online loggen

Für Projekte zur Überwachung der Temperatur und Luftfeuchtigkeit bietet es sich an, diese Werte in regelmäßigen Zeitintervallen zu speichern, um sie jederzeit analysieren zu können. Eine Möglichkeit wäre es, die Daten in einer lokalen Datenbank abzulegen. Besser und komfortabler ist es, die Daten auf einem externen Server zu speichern. Es gibt zahlreiche kostenlose Dienste, die Sensordaten speichern und grafisch aufbereiten. 

Ein solcher Service ist Thingspeak. Bevor Sie loslegen, benötigen Sie dort ein kostenloses Benutzerkonto. Klicken Sie auf der Webseite www.thingspeak.com auf „Get Started For Free“. Füllen Sie die Felder aus und loggen Sie sich nach der Bestätigung via E-Mail bei Thingspeak ein. Im nächsten Schritt legen Sie einen neuen Channel an. Dazu klicken Sie unter „Channels“ auf „New Channel“. Vergeben Sie einen Namen und schalten Sie zwei der bis zu acht möglichen Felder frei. Tragen Sie als Bezeichnung „Temperatur“ und „Luftfeuchtigkeit“ ein. Ein Klick auf „Save Channel“ speichert die Angaben. Sie gelangen automatisch zum Register „Private View“. Hier erscheinen die soeben angelegten Felder als Diagramme. 

Im Kopfbereich der Webseite steht Ihre „Channel ID“. Die wird gleich noch wichtig. Im Reiter „API Keys“ finden Sie einen „Write API Key“ und einen „Read API Key“. Sie sind notwendig, um die Sensordaten schrei­ben und abrufen zu können.

In das Python-Script „dht22_log.py“ müssen Sie die Channel-ID und den Write API Key von Thingspeak eintragen.

Für Python gibt es eine Bibliothek, die den Umgang mit Thingspeak deutlich erleichtert. Um sie zu installieren, verwenden Sie auf dem Raspberry Pi folgenden Terminalbefehl: 

pip3 install thingspeak --break-system-packages

Das vorbereitete Python-Script „dht22_log.py“ finden Sie auf der Heft-DVD. Kopieren Sie das Script in das Home-Verzeichnis auf dem Raspberry Pi und öffnen Sie es dort mit einem Editor. Zunächst tragen Sie in der Zeile, die mit „Channel_id =“ beginnt, Ihre siebenstellige Channel-ID von Thingspeak ein. In der Zeile darunter geben Sie den Write-API-Key an. Den API-Key zum Lesen benötigen Sie in diesem Fall nicht. Falls Ihnen das Zeitintervall zu kurz oder zu lang erscheint, können Sie es in der letzten Zeile verändern. Kürzer als 15 Sekunden darf es nicht sein. Voreingestellt sind 60 Sekunden. Abschließend speichern Sie das Script.

Raumklima online auf Thingspeak

Wenn Sie das Script mit 

python3 dht22_log.py

starten, gibt es einmal pro Minute die Messwerte des Sensors aus und schickt sie parallel zu Thingspeak. Die Daten erscheinen dort mit wenigen Sekunden Verzögerung auf Ihrer Thingspeak-Seite als Charts im Reiter „Private View“. Die Charts lassen sich bei Bedarf konfigurieren. Dazu klicken Sie auf das Bleistift-Symbol im Kopfbereich. Hier lässt sich etwa die Farbe des Hintergrunds und des Diagramms festlegen. Neben dem Liniendiagramm stehen auch Balken-, Säulen- oder Stufendiagramme zur Verfügung. Bei „Results“ können Sie festlegen, wie viele Datenpunkte im Chart zu sehen sein sollen. Wenn das Script alle 60 Sekunden Daten liefert, erhalten Sie im Chart den Verlauf von einer Stunde. Auf der rechten Seite lassen sich Höchst- und Tiefstwerte angeben und die Daten zusammenfassen.

Wenn Sie bei den Channel-Einstellungen den Längen- und Breitengrad des Ortes eingeben, an dem sich der Sensor befindet, dann erhalten Sie neben den Charts eine Kartenansicht, auf der der entsprechende Ort markiert ist. Das ist nur dann relevant, wenn Sie Ihren Channel öffentlich freigeben. Das gelingt dort unter „Sharing“, indem Sie die Option „Share channel view with everyone“ aktivieren. 

Die Thingspeak-Seite zeigt Ihre Messwerte für Temperatur und Luftfeuchtigkeit als Diagramme.