Smarthome-BlogLuftfeuchtigkeit & Temperatur Sensor DHT22
Luftfeuchtigkeit & Temperatur Sensor DHT22
Verkabeln, Kalibrieren & Homeassistant einbinden
Lesezeit: 7 min
Veröffentlicht: 2024.04.26
Letztes Update: 2024.06.15
In diesem Artikel zeige ich euch, wie ihr mit einem ESP (z.B.: ESP8266) und einem DHT22-Sensor die Luftfeuchtigkeit und die Temperatur eurer Wohnung messen könnt.
Warum es wichtig ist, die Luftfeuchtigkeit zu messen und zu regulieren, habe ich hier beschrieben: Luftfeuchtigkeit smart regulieren
Voraussetzung für dieses Projekt ist ein ESP auf dem ihr ESPHome installiert und diesen mit Homeassistant verbunden habt.
Wie das funktioniert, habe ich bereits in diesem Artikel erklärt:
ESPHome mit Web Installer flashen
Aufbau und Verkabelung
Am einfachsten ist der Aufbau, wenn ihr einen DHT22 kauft, welcher bereits auf einer passenden Platine verlötet ist, z.B. wie hier:
Amazon DHT22 (Affiliate-Link)
Falls der Link, wenn ihr das hier lest, nicht mehr aktiv sein sollte, so sieht das Bauteil aus:
Der Vorteil ist, dass diese Platine praktische Pins hat, mit denen ihr eure Patch-Kabel verbinden könnt und zum anderen hat sie bereits den Pull-Up-Widerstand verbaut, welchen der DHT22 für den Betrieb benötigt.
Anschließend müsst ihr nur noch den DHT22 direkt mit eurem ESP verbinden. Für den DATA Pin könnt ihr einen beliebigen digitalen Eingang eures ESP verwenden. Hier als Beispiel mit Pin D2:
Mit einer einfachen Abzweigdose und ein wenig Heißkleber lässt sich ein einfaches Gehäuse bauen, welches unauffällig irgendwo im Raum platziert werden kann:
Einbindung Homeassistant
Sobald ihr euren ESP verkabelt und mit Spannung versorgt habt, könnt ihr zunächst folgende Konfiguration in ESPHome definieren:
YAML
sensor:
- platform: dht
pin: D2
model: DHT22
temperature:
name: "Wohnzimmer Temperatur"
humidity:
name: "Wohnzimmer Luftfeuchtigkeit"
update_interval: 60s
Wie auch im Schaltplan habe ich als Pin D2
definiert.
Die Namen könnt ihr natürlich euren Bedürfnissen gemäß anpassen.
Sobald ihr diese Konfiguration via ESPHome auf euren ESP übertragen habt, stehen euch die entsprechenden Entitäten in Homeassistant zur Verfügung:
Kalibrieren
Nach meiner Erfahrung sind die meisten DHT22 Sensoren nach der initialen Konfiguration sehr ungenau und müssen erst kalibriert werden, bevor man sinnvolle Werte messen kann.
Ich nutze dafür immer andere Luftfeuchtigkeits- & Temperatur-Sensoren und stelle diese gemeinsam mit dem DHT22 auf:
Der weiße Kasten rechts im Bild ist die Außenstation für den Wettermonitor, der ganz links steht. Der Wecker in der Mitte hat ebenfalls einen Temperatur- und Luftfeuchtigkeitssensor. Insgesamt haben wir also 3 Messpunkte.
Wie ihr seht, zeigen auch die "gekauften" Sensoren sehr unterschiedliche Werte an. Ich nutze meistens einfach den Mittelwert der anderen Sensoren als Richtwert für meinen DHT22.
Mir ist natürlich völlig klar, dass das keine hochpräzise Messmethode ist, aber wir bauen hier eine Messung für einen Wohnraum und nicht für eine Raketen-Abschussrampe ;-).
Falls ihr aber bessere Methoden kennt, euren DHT22 oder ähnliche Sensoren zu kalibrieren, lasst mich das gerne wissen.
Desto mehr Messpunkte ihr festhaltet, desto besser wird eure Kalibrierung.
Baut euer Mess-Setup also am besten in unterschiedlichen Bereichen auf. z.B. Im Wohnzimmer, im Keller, draußen oder im Badezimmer (Hohe Temperatur und viel Luftfeuchtigkeit nach dem Duschen)
Ich habe für dieses Beispiel an 3 Orten gemessen und folgende Werte festgehalten:
Man sieht, dass die Werte des DHT22 deutlich von den Mittelwerten der anderen Sensoren abweichen. Allerdings ist diese Abweichung nicht konstant. Einfach einen bestimmten Wert zum gemessenen Wert hinzuzurechnen oder abzuziehen wäre also nicht zielführend.
Um jetzt den DHT22 mit diesen Daten zu kalibrieren, nutzen wird den calibrate_linear Filter von ESP Home. Mehr Infos dazu hier:
ESPHome Calibrate Linear
Man sieht in den Messwerten, dass die relative Luftfeuchtigkeit für Draußen und dem Wohnzimmer ungefähr gleich sind, der DHT22 aber stark unterschiedliche Werte misst. Ich erkläre mir das so, dass die geringe Temperatur draußen den DHT22 auch bei der Luftfeuchtigkeitsmessung beeinflusst. Wie ich diesen Umstand in einer linearen Kalibrierung darstellen kann, weiß ich allerdings nicht. Mein Sensor ist sowieso für die Verwendung in Innenräumen vorgesehen und deshalb habe ich die Messung der Luftfeuchtigkeit von draußen für meine Kalibrierung ignoriert.
Um jetzt die Kalibrierung auf den ESP anzuwenden, müssen wir Wertpaare in den Filterregeln definieren. Links steht immer der vom DHT22 gemessene Wert und rechts der "korrekte" Wert:
YAML
sensor:
- platform: dht
pin: D2
model: DHT22
temperature:
name: "Wohnzimmer Temperatur"
filters:
- calibrate_linear:
method: least_squares
datapoints:
- 10.7 -> 10.33
- 20.6 -> 19.7
- 25.8 -> 23.27
humidity:
name: "Wohnzimmer Luftfeuchtigkeit"
filters:
- calibrate_linear:
method: least_squares
datapoints:
- 50 -> 50.33
- 65 -> 77.33
update_interval: 60s
Anschließend übertragt ihr wieder eure Konfiguration auf euren ESP. Von nun an solltet ihr brauchbare Messergebnisse in eurem Homeassistant erhalten.
Falls ihr wissen wollt, warum es wichtig ist, die Luftfeuchtigkeit im Auge zu behalten und ein paar Ideen für Automatisierungen, um sie entsprechend unter Kontrolle zu halten, lest hier weiter: Luftfeuchtigkeit smart regulieren
Verwendete Produkte:
(Affiliate-Links)?
- DHT22: https://amzn.to/3JT2sVl
- ESP8266 D1 Mini: https://amzn.to/4bsXN8s
- Jumper Kabel: https://amzn.to/3USMkJQ
- Wetterstation: https://amzn.to/44AwN4A
- Lötstation: https://amzn.to/3WBbjkI