RaspberryPi: DHT11/22 in MySQL Datenbank

Posted by julian In: Raspberry Pi No comments

Ich nutze Zuhause meinen Raspberry Pi mit einem DHT22 Sensor um die Temperatur und Luftfeuchtigkeit in eine MySQL Datenbank zu schreiben. Wie dies funktioniert wirst Du kurz und knapp in diesem Eintrag lesen können!

Datenbankstruktur

Als erstes müssen wir die Datenbank aufbauen. Dazu legen wir eine neue MySQL Tabelle nach folgendem Schema an.

Skript

Nun kommen wir auch schon zum Skript welches die Speicherung in die MySQL Datenbank ermöglicht. Voraussetzung für dieses Skript ist die Adafruit Python DHT Library welche Du auf Github findest. Ebenfalls benötigen wir die MySQL Python Library. Diese kannst Du mit „sudo apt-get install python-mysqldb“ installieren.

#!/usr/bin/python
import sys
import MySQLdb
import Adafruit_DHT
 
# MySQL Settings
db = MySQLdb.connect(host="", # your host, usually localhost
user="", # your username
passwd="", # your password
db="") # name of the data base
 
cur = db.cursor()
 
# Parse command line parameters.
sensor_args = { '11': Adafruit_DHT.DHT11,
'22': Adafruit_DHT.DHT22,
'2302': Adafruit_DHT.AM2302 }
if len(sys.argv) == 3 and sys.argv[1] in sensor_args:
sensor = sensor_args[sys.argv[1]]
pin = sys.argv[2]
else:
print('usage: sudo ./Adafruit_DHT.py [11|22|2302] GPIOpin#')
print('example: sudo ./Adafruit_DHT.py 2302 4 - Read from an AM2302 connected to GPIO #4')
sys.exit(1)
 
# Try to grab a sensor reading. Use the read_retry method which will retry up
# to 15 times to get a sensor reading (waiting 2 seconds between each retry).
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
 
# Un-comment the line below to convert the temperature to Fahrenheit.
# temperature = temperature * 9/5.0 + 32
 
# Note that sometimes you won't get a reading and
# the results will be null (because Linux can't
# guarantee the timing of calls to read the sensor).
# If this happens try again!
if humidity is not None and temperature is not None:
print('Temp={0:0.1f}* Humidity={1:0.1f}%'.format(temperature, humidity))
cur.execute("INSERT INTO temp VALUES (NULL, 'Wohnzimmer', NULL, %s, %s)", (temperature, humidity))
db.commit()
else:
print('Failed to get reading. Try again!')
sys.exit(1)
db.close()

Bitte nicht vergessen das Skript auf deine Zugangsdaten anzupassen!

Fragen?

Dann schreib doch einfach einen Kommentar oder eine kurze Mail und ich antworte so schnell ich kann!

8 Likes

julian
Ich bin Julian, 23 Jahre alt und vom Beruf SysAdmin. Dadurch das ich ein Quereinsteiger bin habe ich mir all mein Wissen durch 'learningbydoing' selbst angeeignet.

Comments: 0

There are not comments on this post yet. Be the first one!

Leave a comment