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:

Auslesen eines Temperatur- und Luftfeuchtigkeitssensors DHT11 mit Flask. Abbildung hergestellt mit fritzing. [Quelle zum Editieren in GitLab](https://collaborating.tuhh.de/itbh/oer/informatik/einfuehrung-in-die-informationstechnik-i-wise-2021_22/-/tree/main/content/de/einheiten/webanwendungen-mit-flask/sensoren-auslesen).
Auslesen eines Temperatur- und Luftfeuchtigkeitssensors DHT11 mit Flask. Abbildung hergestellt mit fritzing. Quelle zum Editieren in GitLab.

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:

1
2
./venv/bin/pip install adafruit-circuitpython-dht
./venv/bin/pip install board

Außderdem brauchen Sie noch die Bibliothek libgpiod2, die Sie mit folgendem Befehl installieren können:

1
sudo apt install libgpiod3

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:

1
../venv/bin/python -m flask --app dht.py run --host=0.0.0.0

Rufen Sie nun die Anwendung im Browser auf. Die Seite aktualisiert sich alle 5 Sekunden und zeigt die aktuellen Messwerte an.

Aufgaben und Fragestellungen

Können Sie die Seite mit CSS formatieren, sodass sie ansprechender aussieht?
Zurück
Weiter