Inhaltsverzeichnis:

Temperatur- und Luftfeuchtigkeitsüberwachung mit Raspberry Pi - Gunook
Temperatur- und Luftfeuchtigkeitsüberwachung mit Raspberry Pi - Gunook

Video: Temperatur- und Luftfeuchtigkeitsüberwachung mit Raspberry Pi - Gunook

Video: Temperatur- und Luftfeuchtigkeitsüberwachung mit Raspberry Pi - Gunook
Video: [Tutorial] Raspberry Pi - Temperatur & Luftfeuchtigkeit messen (DHT22) 2024, November
Anonim
Temperatur- und Feuchtigkeitsüberwachung mit Raspberry Pi
Temperatur- und Feuchtigkeitsüberwachung mit Raspberry Pi
Temperatur- und Feuchtigkeitsüberwachung mit Raspberry Pi
Temperatur- und Feuchtigkeitsüberwachung mit Raspberry Pi

Der Sommer kommt, und diejenigen ohne Klimaanlage sollten darauf vorbereitet sein, die Atmosphäre in Innenräumen manuell zu regulieren. In diesem Beitrag beschreibe ich die moderne Art, die wichtigsten Parameter für das menschliche Wohlbefinden zu messen: Temperatur und Luftfeuchtigkeit. Diese erhobenen Daten werden an die Cloud gesendet und dort verarbeitet.

Ich verwende ein Raspberry Pi 1 Board und den DHT22 Sensor. Sie können dasselbe auf jedem Computer tun, der über Internet, GPIO und Python verfügt. Der billigere DHT11-Sensor funktioniert auch einwandfrei.

Schritt 1: Hardware vorbereiten

Hardware vorbereiten
Hardware vorbereiten
Hardware vorbereiten
Hardware vorbereiten

Fangen wir von vorne an, da ich meinen Raspberry Pi schon lange nicht mehr benutzt habe.

Wir brauchen:

  • Raspberry Pi-Board (oder eine andere IoT-orientierte Plattform).
  • SD- oder microSD-Karte (je nach Plattform).
  • 5V/1A über Micro-USB.
  • LAN-Kabel, das die Internetverbindung bereitstellt.
  • HDMI-Display, RCA-Display oder UART-Port (um SSH zu aktivieren).

Der allererste Schritt ist das Herunterladen von Raspbian. Ich habe mich für die Lite-Version entschieden, da ich SSH anstelle von Display verwenden werde. Seit dem letzten Mal haben sich die Dinge geändert: Jetzt gibt es eine großartige Brennsoftware namens Etcher, die perfekt funktioniert und ein atemberaubendes Design hat.

Nachdem das Brennen des Images abgeschlossen war, legte ich die SD-Karte in meinen Pi ein, steckte die LAN- und Stromkabel ein und nach einer Weile registrierte mein Router das neue Gerät.

Schritt 2: Aktivieren von SSH

Aktivieren von SSH
Aktivieren von SSH
Aktivieren von SSH
Aktivieren von SSH
Aktivieren von SSH
Aktivieren von SSH

SSH ist standardmäßig deaktiviert. Ich kann entweder einen UART-USB-Konverter verwenden oder einfach ein Display anschließen, um auf die Shell zuzugreifen und SSH zu aktivieren.

Nach dem Neustart bin ich endlich drin. Das Wichtigste zuerst, lass uns aktualisieren:

sudo apt update && sudo apt upgrade -y

Verbinden wir nun dieses neue Gerät mit der Cloud.

Schritt 3: Cloud4RPi. installieren

Installieren von Cloud4RPi
Installieren von Cloud4RPi

Ich beschloss, die Cloud-Plattform namens Cloud4RPi auszuprobieren, die für IoT entwickelt wurde.

Laut Dokumentation benötigen wir die folgenden Pakete, um es zum Laufen zu bringen:

sudo apt install git python python-pip -y

Die Clientbibliothek kann mit einem einzigen Befehl installiert werden:

sudo pip install cloud4rpi

Jetzt brauchen wir etwas Beispielcode, um sicherzustellen, dass es funktioniert.

Git-Klon https://github.com/cloud4rpi/cloud4rpi-raspberrypi-python && cd cloud4rpi-raspberrypi-python Git-Klon https://gist.github.com/f8327a1ef09ceb1ef142fa68701270de.git e && mv e/minimal.py minimal.py && rmdir -re

Ich habe mich für minimal.py entschieden, aber ich mag die gefälschten Daten nicht. Glücklicherweise ist mir in diesem Beispiel eine einfache Möglichkeit aufgefallen, die Diagnosedaten real zu machen. Fügen Sie dem Abschnitt "Importe" einen weiteren Import hinzu:

aus rpi-Import *

Löschen Sie dann diese Funktionen, die gefälschte Daten bereitstellen (die rpi.py definiert sie jetzt):

def cpu_temp():

Rückgabe 70 def ip_address(): Rückgabe '8.8.8.8' def host_name(): Rückgabe 'hostname' def os_name(): Rückgabe 'osx'

Jetzt brauchen wir einen Token, der es Cloud4RPi ermöglicht, die Geräte mit den Konten zu verknüpfen. Um eines zu erhalten, erstellen Sie ein Konto auf cloud4rpi.io und klicken Sie auf dieser Seite auf die Schaltfläche Neues Gerät. Ersetzen Sie die Zeichenfolge _YOUR_DEVICE_TOKEN_ in der Datei minimal.py durch das Token Ihres Geräts und speichern Sie die Datei. Jetzt sind wir bereit für den ersten Start.

python minimal.py

Öffnen Sie die Geräteseite und prüfen Sie, ob die Daten vorhanden sind.

Kommen wir nun zu realen Daten.

Schritt 4: Anschließen des Sensors

Anschließen des Sensors
Anschließen des Sensors

Wir brauchen:

  • Feuchtigkeitssensor DHT22 oder DHT11
  • Pull-up-Widerstand (5-10 KΩ)
  • Drähte

Der DHT22-Sensor misst gleichzeitig Temperatur und Luftfeuchtigkeit. Das Kommunikationsprotokoll ist nicht standardisiert, daher brauchen wir es nicht in raspi-config zu aktivieren - ein einfacher GPIO-Pin ist mehr als genug.

Um die Daten zu erfassen, werde ich die großartige Bibliothek von Adafruit für DHT-Sensoren verwenden, aber sie funktioniert möglicherweise nicht so, wie sie ist. Ich habe mal eine seltsame ständige Verzögerung im Code festgestellt, die bei meiner Hardware nicht funktioniert hat, und nach zwei Jahren steht mein Pull-Request immer noch aus. Ich habe auch die Board-Erkennungskonstanten geändert, weil mein Raspberry Pi 1 mit BCM2835 überraschend als Raspberry Pi 3 erkannt wurde. Ich wünschte, es wäre wahr… Daher empfehle ich, meinen Fork zu verwenden. Wenn Sie Probleme damit haben, versuchen Sie es bitte mit dem Original-Repository, vielleicht funktioniert es für jemanden, aber ich gehöre nicht dazu.

git-Klon https://github.com/Himura2la/Adafruit_Python_DHT…. Adafruit_Python_DHT

Da die Bibliothek in C geschrieben ist, muss sie kompiliert werden, sodass Sie die Pakete build-essential und python-dev benötigen.

sudo apt install build-essential python-dev -ysudo python setup.py install

Während die Pakete installiert werden, schließen Sie das DHT22 wie in der Abbildung gezeigt an.

Und teste es:

cd ~python -c "Importiere Adafruit_DHT als d; drucke d.read_retry(d. DHT22, 4)"

Wenn Sie so etwas wie (39.20000076293945, 22.600000381469727) sehen, sollten Sie wissen, dass dies die Luftfeuchtigkeit in Prozent und die Temperatur in Celsius ist.

Jetzt bauen wir alles zusammen!

Schritt 5: Senden von Sensormesswerten an die Cloud

Senden von Sensormesswerten an die Cloud
Senden von Sensormesswerten an die Cloud

Ich verwende die minimal.py als Basis und füge die DHT22-Interaktion hinzu.

cd cloud4rpi-raspberrypi-python

cp minimal.py ~/cloud_dht22.py cp rpi.py ~/rpi.py cd vi cloud_dht22.py

Da DHT22 sowohl Temperatur als auch Luftfeuchtigkeit in einem einzigen Aufruf zurückgibt, speichere ich sie global und aktualisiere sie nur einmal in einer Anfrage, vorausgesetzt, die Verzögerung zwischen ihnen beträgt mehr als 10 Sekunden. Betrachten Sie den folgenden Code, der die DHT22-Daten erfasst:

Adafruit_DHT importieren

temp, hum = None, None last_update = time.time() - 20 def update_data(): global last_update, hum, temp if time.time() - last_update > 10: hum, temp = Adafruit_DHT.read_retry(Adafruit_DHT. DHT22, 4) last_update = time.time() def get_t(): update_data() return round(temp, 2) wenn temp nicht None else None def get_h(): update_data() return round(hum, 2) wenn hum nicht Keine sonst Keine

Fügen Sie diesen Code nach den bestehenden Importen ein und bearbeiten Sie den Variablenabschnitt, damit er die neuen Funktionen verwendet:

Variablen = {

'DHT22 Temp': { 'type': 'numeric', 'bind': get_t}, 'DHT22 Humidity': { 'type': 'numeric', 'bind': get_h }, 'CPU Temp': { 'type ': 'numerisch', 'bind': cpu_temp } }

Drücken Sie den roten Knopf, um die Datenübertragung zu starten:

python cloud_dht22.py

Dann können Sie die Geräteseite überprüfen.

Sie können es so lassen, wie es ist, aber ich bevorzuge einen Service für alles. Dadurch wird sichergestellt, dass das Skript immer ausgeführt wird. Erstellen eines Dienstes mit dem vollautomatischen Skript:

wget -O https://github.com/cloud4rpi/cloud4rpi-raspberrypi-python/blob/master/service_install.sh | sudo bash -s cloud_dht22.py

Starten des Dienstes:

sudo service cloud4rpi starten

Und überprüfen Sie es:

pi@raspberrypi:~ $ sudo service cloud4rpi status -l

● cloud4rpi.service - Cloud4RPi-Daemon Geladen: geladen (/lib/systemd/system/cloud4rpi.service; aktiviert) Aktiv: aktiv (läuft) seit Mi 2017-05-17 20:22:48 UTC; vor 1min Main PID: 560 (python) CGroup: /system.slice/cloud4rpi.service └─560 /usr/bin/python /home/pi/cloud_dht22.pyMay 17 20:22:51 raspberrypi python[560]: Publishing iot -hub/messages: {'type': 'config', 'ts': '2017-05-17T20…y'}]}17. Mai 20:22:53 raspberrypi python[560]: Veröffentlichung von iot-hub/messages: {'type': 'data', 'ts': '2017-05-17T20:2…40'}}17. Mai 20:22:53 raspberrypi python[560]: iot-hub/messages veröffentlichen: {'type': 'system', 'ts': '2017-05-17T20….4'}}

Wenn alles wie erwartet funktioniert, können wir weitermachen und die Fähigkeiten der Cloud4RPi-Plattform nutzen, um mit den Daten zu manipulieren.

Schritt 6: Diagramme und Alarme

Diagramme und Alarme
Diagramme und Alarme
Diagramme und Alarme
Diagramme und Alarme
Diagramme und Alarme
Diagramme und Alarme

Lassen Sie uns zunächst die Variablen grafisch darstellen, um zu sehen, wie sie sich ändern. Dies kann durch Hinzufügen einer neuen Systemsteuerung und Einfügen der erforderlichen Diagramme erfolgen.

Eine andere Sache, die wir hier tun können, ist das Setzen eines Alerts. Mit dieser Funktion können Sie den sicheren Bereich für eine Variable konfigurieren. Sobald der Bereich überschritten wird, sendet er eine E-Mail-Benachrichtigung. Auf der Bearbeitungsseite der Systemsteuerung können Sie zu Warnungen wechseln und eine einrichten.

Gleich danach begann die Luftfeuchtigkeit in meinem Zimmer ohne erkennbaren Grund rapide zu sinken, und bald folgte der Alarm.

Sie können Cloud4RPi kostenlos mit jeder Hardware verwenden, die Python ausführen kann. Was mich betrifft, weiß ich jetzt immer, wann ich den Luftbefeuchter einschalten muss, und kann ihn sogar über Cloud4RPi an ein Relais zur Fernsteuerung anschließen. Ich bin auf die Hitze vorbereitet! Willkommen Sommer!

Empfohlen: