Raspberry Pi und DHT22 als Temperatur-Logger

So nach und nach wage ich mich auch an das Thema „Hausautomation“. Dabei verwende ich den Raspberry Pi und DHT22 als Temperatur-Logger. Da ich im Keller ohnehin einen Raspberry Pi laufen habe, der Strom und Wasserverbrauch logged, habe ich kurzerhand einen DHT22 Temperatursensor angeschlossen und lese alle 20 Minuten Temperatur und Luftfeuchtigkeit aus und speichere die Daten in einer Datenbank.

Hardwareaufbau

Bei dem Raspberry Pi handelt es sich um eine ältere Variante den „Raspberry Pi Model B Plus Rev 1.2“. Einen DHT22-Temperatursensor hatte ich noch in der Schublade. Dazu noch einen 10 kOhm Widerstand und drei Steckbrücken. Fertig.

Die Anschlüsse des DHT22 sind von links nach rechts (geriffelte Seite vorne):

  • Pin 1, VCC, hier gehören 3,3V dran
  • Pin 2, Data, das ist die Datenleitung
  • Pin 3, unbenutzt, den Pin braucht man nicht
  • Pin 4, GND, die Erde bzw. 0V oder Minuspol

Der Widerstand wird zwischen Pin 1 und 2, also VCC und Data geklemmt. VCC wird mit Pin 1 der Raspberry Pi GPIO Stiftleiste, Data mit Pin 6 und GND mit Pin 7 verbunden. Das war es schon mit dem Hardwareaufbau. Das Bild zeigt den Aufbau mit einem Pi zero. Das funktioniert aber mit jedem anderen Pi genauso.

Raspberry Pi und DHT22 als Temperatur-Logger

Software installieren – Raspberry Pi und DHT22 als Temperatur-Logger

Zuerst bereiten wir den Raspberry Pi vor in dem wir einige Pakete installieren und vorher alles auf den neuesten Stand bringen.

sudo apt update
sudo apt upgrade
sudo apt install python3-dev python3-pip
sudo python3 -m pip install --upgrade pip setuptools wheel
sudo pip3 install Adafruit_DHT

Jetzt legen wir ein neues Python Programm an z.B. mit „nano dht22_get_temp.py“ und geben folgenden Code ein.

#!/usr/bin/python3

import mysql.connector, datetime
from datetime import timezone
import time
import sys
import Adafruit_DHT

DHT_SENSOR = Adafruit_DHT.DHT22
DHT_PIN = 4 # Pin 7

# get data from sensor
dht22_humid, dht22_temp = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN)


if dht22_humid == None or dht22_temp == None:
	print("Es konnten keine Daten vom Sensor gelesen werden.")
	sys.exit(1) # exit with error code

print("Temperatur={0:0.1f}*C  Luftfeuchtigkeit={1:0.1f}%".format(dht22_temp, dht22_humid))

# write data to the database
try:
	connection = mysql.connector.connect(
		host='localhost', port=3306, database='raumklima',
		user='DEINUSER', password='DEINPASSWORT')

	# get current timestamp
	now = datetime.datetime.now()
	str_now = now.date().isoformat() + " " + now.time().isoformat()
	# get utc timestamp
	utc_now = datetime.datetime.now(timezone.utc)
	str_utc_now = utc_now.date().isoformat() + " " + utc_now.time().isoformat()

	sql = """INSERT INTO wetter ( id, stationID, zeit, zeitutc, temperatur, luftfeuchte )
			VALUES ( 0, 'keller', '%s', '%s', %f, %f );""" % (str_now, str_utc_now, dht22_temp, dht22_humid )

	cursor = connection.cursor()
	cursor.execute(sql)
	connection.commit()
	cursor.close()

except mysql.connector.Error as error:
	print("Failed to insert record {}".format(error))

finally:
	if connection.is_connected():
		connection.close()
Code-Sprache: PHP (php)

Die Datei speichern und mit „python3 dht22_get_temp.py“ starten. Jetzt wird einmal die aktuelle Temperatur und Luftfeuchtigkeit vom Sensor gelesen und in die Datenbank geschrieben.

Wer, wie ich, die Daten alle 20 Minuten in die Datenbank schreiben möchte, kann dies per Cronjob umsetzen indem eine Zeile in der Crontab mittels „crontab -e“ hinzugefügt wird:

*/20 * * * * /home/pi/dht22_get_temp.py > /dev/nullCode-Sprache: JavaScript (javascript)

Bei Interesse kann ich hier auch meine Strom- und Wassermesseinrichtungen beschreiben. Das funktioniert mittlerweile auch sehr stabil und zuverlässig.

Teile diesen Beitrag

Kommentar verfassen

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

:bye: 
:good: 
:negative: 
:scratch: 
:wacko: 
:yahoo: 
B-) 
mehr...
 


Diese Seite verwendet Cookies. Mit der Nutzung von tuxlog erklärst Du Dich mit der Verwendung von Cookies einverstanden. Detaillierte Informationen über die Verwendung von Cookies auf dieser Website findest Du in der Datenschutzerklärung.

Nach oben scrollen