Energie-
Verbrauch
Bewegungs-
melder
ioBroker-DHT22
ioBroker-
Laufschrift
ioBroker LED-
Thermometer
ioBroker-OLED
ioBroker
Multi-OLEDs
ioBroker
Mini-Mülltonne
Ball on Plate
Sonstige
Basteleien
Temperatur/Luftfeuchte-Messung DHT22 -> NodeMCU -> ioBroker | |
Nach meinem Einstieg in das Thema "Smart Home" und der Realisierung mittels ioBroker,
kam der Wunsch auf, die Temperatur- und Luftfeuchtigkeitswerte von mehreren Räumen des Hauses anzuzeigen.
Das wollte ich mit möglichst preiswerten Sensoren realisieren. Letztendlich schien die - für mich - preisgünstigste Lösung die Verwendung von DHT22 Temp-/Feuchte-Sensoren, die an NodeMCU's angeschlossen sind. Andere μController, wie z.B. WEMOS D1 mini würden auch funktionieren, aber die NodeMCU's lagen bei mir noch in der Bastelkiste. Die DHT22 Sensoren (AM2302 ist baugleich) kosten ca. 3,-€ bis 6,- €/Stck. Von Versandhändlern aus China sind sie u.U. noch günstiger zu bekommen. NodeMCU's kosten ca. 3,-€ bis 7,-€, je nachdem, wo man kauft. Zusätzlich ist noch eine Spannungsversorgung notwendig, die mit einem USB-Steckernetzteil (micro-USB) realisiert wurde ( ca. 2,-€ bis ca. 8,-€ ). Theoretisch könnte der Sensor auch mit einem Li-Ion Akku betrieben werden, aber aufgrund des rel. hohen Stromverbrauches der NodeMCU wäre die Betriebsdauer rel. kurz. Somit kostet ein kpl. Sensor ca. 15,-€. Ein kleines Gehäuse für die NodeMCU sollte man auch noch einplanen; meine Gehäuse habe ich mit einem 3D-Drucker selbst angefertigt. Der DHT22 wurde bewußt nicht am Gehäuse der NodeMCU befestigt, damit durch Wärmestrahlung die Meßwerte nicht verfälscht werden. Zusammenfassung:
![]() In manchen Foren wird die Genauigkeit des DHT22 bemängelt, wobei ich denke, daß es für meine Zwecke ausreicht. Hier mal ein Vergleich von verschiedenen Sensoren, der in einem Klimaschrank bei 23°C durchgeführt wurde. Der DHT22 schneidet - zumindest temperaturmäßig - gar nicht so schlecht ab. ![]() Elektrischer Aufbau Der elektrische Aufbau ist rel. einfach, wie aus nachfolgendem Schaltplan ersichtlich. Es sind nur die 3 PINs Vcc, Data und Ground mit der NodeMCU zu verbinden und natürlich das Steckernetzteil in die micro-USB-Buchse einzustecken. ![]() Software für NodeMCU Softwareäßig muß der Sketch DHT22-NodeMCU.ino mittels Arduino-IDE in die NodeMCU geflasht werden. Hier müssen vorab die Daten des WLAN-Netzwerkes eingetragen werden, sowie die lokale IP-Adresse der NodeMCU, bzw. des Temp-Feuchte-Sensors. Die IP-Adresse könnte zwar auch per DHCP automatisch vergeben werden, aber ich bevorzuge bei meinen fest installierten WLAN-Geräten statische IPs. Die notwendigen libraries, welche in den Sketch eingebunden sind, müssen (sofern noch nicht vorhanden) selbst im Internet gesucht und in Arduino installiert werden! Die NodeMCU startet einen internen Webserver, der seinerseits eine Seite zur Verfügung stellt, welche die Meßwerte als JSON enthält. Die Meßwerte werden intern alle 3 Sekunden abgefragt. Darstellung im Browser In einem Browser werden die Meßwerte bei Eingabe von z.B. http://192.168.192.60/dht22.json wie folgt dargestellt: Als Rohdaten, ![]() bzw. als JSON ![]() |
![]() ![]() |
Integration in ioBroker Soweit die Vorarbeit, jetzt gilt es nur noch die Meßwerte in ioBroker einzubinden. Dazu verwende ich folgendes JavaScript: JavaScript_DHT22_auslesen.zip Im Script müssen die Datenpunkte und Variablen für die IP-Adressen der Sensoren natürlich vorher an die eigenen Gegebenheiten, bzw. Temp-Sensoren angepasst werden! Das Script legt zuerst Datenpunkte für alle verfügbaren Sensoren unter javascript.0.DHT22. an. Anschließend fragt das Script dann in einem (einstellbaren) Intervall nacheinander die Adressen aller Temp-Sensoren ab. Ich habe bei mir ein Abfrage-Intervall von 2 Min. gewählt. Bei Erreichen des Intervall-Zeitpunktes werden die einzelnen Sensoren in einem Zeitabstand von 2 Sekunden abgefragt. Ich habe den 2 Sek. "Sicherheits-Abstand" gewählt, damit nicht alle Anfragen gleichzeitig gesendet werden. Darstellung in vis Zur optischen Darstellung der Meßwerte in vis, dem Visualisierungs-Adapter von ioBroker, kann man sog. Widgets verwenden. Ich habe zum Einen mehrere Widgets "basic-HTML" vewendet, welche die Werte dann als Tabelle anzeigen: ![]() und zum anderen mehrere Widgets "canvas-gauges - Radial", welche die Werte als virtuelle Instrumente darstellen: ![]() Die optische Darstellung kann natürlich jeder nach seinem eigenen Gusto gestalten. Nähere Erläuterungen würden hier zu weit führen, da schaut am besser in das ioBroker-Forum |