Sensoren auslesen
In diesem Kapitel lernen Sie, wie Sie mit Flask Sensoren auslesen können. Dazu verwenden Sie diesmal einen sehr bekannten Temperatur- und Luftfeuchtigkeitssensor, den DHT11. Er liefert digitale Messwerte für Temperatur und Luftfeuchtigkeit, ist günstig und einfach zu verwenden. Dafür ist er nicht sehr genau.
Hardware vorbereiten
Schließen Sie den DHT11-Sensor wie in der folgenden Abbildung gezeigt an den Raspberry Pi an:
.](/itbh/einfuehrung-in-die-informationstechnik/einheiten/webanwendungen-mit-flask/sensoren-auslesen/2025-12-02-dht11-auslesen_Steckplatine_hub187b6b6ecfe652cd9ae6e5b7fc31658_84153_61566335b8aca916af4b3fcdb6ba306b.webp)
Wichtig: Der DHT11 ist in unterschiedlicher Bauweise erhältlich. Der abgebildete ist als Modul mit integriertem Widerstand ausgeführt. Er ist mit der gezeigten Belegung am Institut vorhanden und muss wie abgebildet angeschlossen werden.
Software vorbereiten
Installieren Sie die benötigten Bibliotheken für den DHT11-Sensor in Ihrer virtuellen Umgebung. Wenn Sie im Ordner Codeprojekte sind:
Außderdem brauchen Sie noch die Bibliothek libgpiod2, die Sie mit folgendem Befehl installieren können:
|
|
Skript: Sensor mit Flask auslesen
Legen Sie einen neuen Ordner sensoren-auslesen im Ordner Codeprojekte. Erstellen Sie darin eine neue Datei dht.py mit folgendem Inhalt:
#!/usr/bin/env python3
from flask import Flask
import board
import adafruit_dht
app = Flask(__name__)
# Sensor initialisieren
sensor = adafruit_dht.DHT11(board.D4) # oder DHT11
@app.route('/')
def index():
try:
temperature = sensor.temperature
humidity = sensor.humidity
return f'''
<!DOCTYPE html>
<html>
<head>
<title>DHT11 Sensor</title>
<meta http-equiv="refresh" content="5">
</head>
<body>
<h1>Temperatur & Luftfeuchtigkeit</h1>
<p><strong>Temperatur:</strong> {temperature:.1f}°C</p>
<p><strong>Luftfeuchtigkeit:</strong> {humidity:.1f}%</p>
</body>
</html>
'''
except RuntimeError as e:
# DHT Sensoren können Lesefehler haben
return f'<h1>⚠️ Lesefehler: {e}</h1>'
if __name__ == '__main__':
try:
app.run(host='0.0.0.0', port=5000)
finally:
sensor.exit()
Anwendung starten
Starten Sie das Skript mit folgendem Befehl:
|
|
Rufen Sie nun die Anwendung im Browser auf. Die Seite aktualisiert sich alle 5 Sekunden und zeigt die aktuellen Messwerte an.