Diese kleine Serie wendet sich an alle die selber eine kostengünstige SmartHome Lösung bauen möchten. Das Ziel ist es neben der Erhebung diverser Kennzahlen über die eigene Wohnung die Messdaten komfortabel anzuzeigen und die Daten nicht aus der Hand zu geben also in eine Cloud zu laden. Genau für diesen Zweck ist das kleine und wirklich günstige Entwicklerboard ESP8266 NodeMCU für ca. 3 € ideal. Mit einem oder mehreren DHT22 Sensoren lässt sich so eine flexible und günstige SmartHome Lösung realisieren.
Das Board mit dem ESP8266 verfügt über einen WIFI Chip nebst Antenne lässt sich so einfach in das eigene WLAN integrieren. Wie ihr die Software auf dem ESP8266 flashed und die DHT22 Sensoren schließt erkläre ich im nachfolgenden Artikel.
Materialliste
Für den Bau des Sensors wird ein ESP8266 NodeMCU, ein DHT22 Sensor, Jumper-Kabel und ein USB Kabel samt USB-Netzteil benötigt. Nachfolgend habe ich alles zusammengestellt damit Du die Materialien einfach findest.
Die nachfolgenden Links verweisen wie gewohnt von meinem Blog wieder auf das Amazon Afiliate Programm.
Der ESP8266 NodeMCU ist der kleine Computer der für dieses Projekt gebraucht wird.
Der DHT22 Sensor misst die Temperatur und die Luftfeuchte. Schön bei diesem Antebot ist, dass gleich die Jumper Kabel mit dabei sind.
Dieses Netzteil hat genug Leistung auch für weitere Projekte falls mal Bedarf besteht das Netzteil weiter zu verwenden.
Bei dem USB Kabel muss sich jeder selber überlegen wie lang dieses sein muss. Hier nur eine Empfehlung.
ESP8266 NodeMCU Programmierung
Der ESP8266 wird mit der Arduino IDE programmiert. Seit ca. 2018 ist der ESP866 auch offiziell in der Arduino IDE unterstützt. Die Arduino IDE bezieht ihr am besten von der folgenden Web-Seite und installiert diese auf eurem Rechner. Ich gehe in meiner Anleitung davon aus, dass Ihr an einem Windows PC arbeitet. Weiter habe ich die arduino-1.8.9-windows.exe Version für diese Anleitung verwendet.
Merke Dir den Installationspfad der Arduino IDE. Dieser wird in den folgenden Abschnitten noch mehrmals benötigt.
Download: Arduino IDE
PubSubClient Bibliothek:
Für die Programmierung des ESP8266 NodeMCU Boards müssen ein paar Vorbereitungen getroffen werden. Damit der ESP8266 über seine WIFI-Verbindung mit den MQTT Broaker kommunizieren kann wird die PubSubClient Bibliothek benötigt. Diese muss als erstes herunter geladen werden.
- Speichere die PubSubClient Bibliothek auf Deinem Rechner ab. Es sollte eine ZIP-Datei mit dem Namen pubsubclient-master.zip sein.
Download: PubSubClient
- Enpackte die ZIP-Datei pubsubclient-master.zip und nenne den Ordner von „pubsubclient-master“ in „pubsubclient“ um.
- Kopiere jetzt den Ordner „pubsubclient“ in das libraries Verzeichnis des Arduino IDE Installationsverzeichnisses. Dieses Verzeichnis sollte z. B. hier „C:\Program Files (x86)\Arduino>“ zu finden sein.
- Wie die PubSubClient Bibliothek verwendet werden kann ist anhand ein paar kleiner Beispiele ebenfalls erklärt. Diese kleinen Beispiele findest Du im Ordner „pubsubclient“ unter examples.
DHT Sensor Bibliothek
Mit der DHT Sensor Bibliothek gibt es für den ESP8266 eine einfach zu verwendende Bibliothek die es ermöglicht die Temperatur und Luftfeuchte auszulesen. Diese Bibliothek wird von Adafruit zur Verfügung gestellt und findet sich hier auf Git-Hub. So ist es ganz einfach die Grundlagen für eine SmartHome Lösung zu erlernen und die Sensoren selber zu bauen.
- Als erstes muss die DHT Bibliothek herunter geladen werden. Es ist wieder eine ZIP-Datei mit dem Namen master.zip.
Download: Adafruit DHT
- Entpacke die ZIP-Datei und Du solltest einen Ordner mit dem Namen „DHT-sensor-library-master“ erhalten.
- Nenne den Ordner „DHT-sensor-library-master“ in „DHT“ um.
- Kopiere den DHT Ordner wieder in das libraries Verzeichnis des Arduino IDE Installationsverzeichnisses.
Adafruit Unified Sensor
Weiter muss noch die Adafruit Unified Sensor Library installiert werden. Ich bekam ohne dieser Library die Fehlermeldung: Adafruit_Sensor.h: No such file or directory
Nach dem ich die Adafruit Unified Sensor Library installiert hatte konnte ich auch das Sketch kompellieren und auf den ESP8266 aufspielen.
Download: Adafruit Sensor
Kurze Zusammenfassung:
Jetzt ist die PubSubClient, die DHT Bibliothek und die Adafruit Unified Sensor Library in das libraries Verzeichnis der Arduino IDE kopiert. Aussehen sollte jetzt alles wie auf dem nachfolgenden Bild gezeigt. Wichtig ist jetzt das die Arduino IDE falls bereits geöffnet geschlossen und neu gestartet wird damit die beiden frisch hinzugefügten Bibliotheken auch in der IDE verfügbar sind.
Sketch anpassen
Jetzt ist auf Deinem Windows PC alles soweit vorbereitet, dass eigentlich die Software auf den ESP8266 hochgeladen bzw. geflashed werden kann. Allerdings müssen noch ein paar kleinere Anpassungen vorgenommen werden.
WIFI Zugangsdaten
Damit sich der ESP8266 mit Deinem W-LAN verbinden kann muss noch der Name des W-LANs also die SSID sowie das Passwort im Sketch selber hinterlegt werden. Nur wenn die Daten online verfügbar sind kann eine SmartHome Anwendung gebaut werden.
IP Adresse Raspberry Pi mit dem MQTT Broker
Nach dem das WIFI konfiguriert wurde muss noch die IP-Adresse des Raspberry Pi eingetragen werden auf dem der MQTT Broker läuft. Nur so kann der ESP8266 NodeMCU seine Daten (Temperatur / Luftfeuchte) an den MQTT Broker senden.
Anzahl DHT22 Sensoren
Ich verwende je nach Raum teilweise mehr als einen DHT22 Sensoren an meinem ESP8266. Daher stelle ich hier zwei Sketches zur Verfügung mit einem und zwei DHT22 Sensoren. So ist der Unterschied in der Programmierung gut zu sehen. Die beiden Sketches sind über den folgenden Download Link onine verfügbar.
Donwload: Sketch.zip
DHT22 Sensor anschließen
Bevor der Sensor angeschlossen werden kann ist zu klären um welches Modell es sich handelt. Denn es gibt verschiedene Bauarten der DHT22 Sensoren. Die mit drei Beinen verbaut auf einer kleinen Platine haben schon einen Wiederstand eingebaut und können direkt angeschlossen werden. Die Modelle mit vier Beinen haben den Widerstand nicht verbaut und können daher nicht direkt angeschlossen werden. Daher empfehle ich den Kauf der DHT22 Sensoren mit drei Beinen die schon auf einer kleinen Platine sitzen da sich so Fehler vermeiden lassen und der Aufwand beim Anschließen deutlich geringer ist.
Angeschlossen werden die Sensoren am EPS8266 NodeMCU direkt an den Pins. Wichtig ist, das der + Pol (VCC) am 5V Pin des NodeMCU angeschlossen wird. Da so der Sensor zuverlässig arbeitet auch wenn dieser schon mit 3,3V betrieben werden kann. Der Datenpin in der Mitte wird je nach Skatch Version bzw. eigener Vorliebe z. B. am Pin 12 angeschlossen. Der – Pol (GND) wird an einem der GND Pins des ESP8266 angeschlossen.
Die fertige Verkabelung für einen DHT22 Sensor sieht wie folgt aus.
ESP8266 NodeMCU flashen
Damit Ihr die Software, also das für euer Setup angepasste Sketch / Programm auf das ESP8266 Board schreiben könnt müsst Ihr den ESP8266 NodeMCU am Computer via USB Kabel anschließen.
Hinweis:
Manchmal wird der ESP8266 bzw. der USB Chip der auf dem Board verbaut ist nicht erkannt. Dann versucht es mal mit dem folgenden USB_serial_Adapter_CH Treiber. Der Chipsatz ist bei NocdeMCUs normalerweise CH341.
Treiber für die alte V2-Modell (CP2102)
Treiber für das Modell V3 (CH341)
- Download Windows: CH341
Nach dem das NodeMCU Board erkannt wurde geht es weiter. Jetzt müsst Ihr in der Arduino IDE noch das richtige Board auswählen. Wenn der ESP8266 angeschlossen ist, dann sollte auch schon der richtige COM-Port von der Arduino IDE ausgewählt worden sein.
Der folgende Screenshot zeigt welche Einstelllungen ich immer verwende.
Jetzt noch das Sketch laden falls nicht geschehen und den Upload auf den ESP8266 starten. Wenn das nicht klappen sollte dann z. B. die Geschwindigkeit der Übertragungsrate einmal prüfen. Aber es kann auch am verwendeten USB Kabel liegen hier hatte ich einmal Probleme obwohl es ein USB Daten-Kabel war.
Dein SmartHome
Bis jetzt kann diese Lösung nur Werte wie die Temperatur und Luftfeuchte messen und an einen MQTT Broker senden. Das macht noch kein SmartHome aus. Interessant wäre es ja jetzt die Lüftungsanlage zu steuern und z. B. für frische Luft zu sorgen oder auf die Klimatisierung einzuwirken. In diesem Bereich werde ich vielleicht die Serie fortsetzen.
Zusammenfassung
Ist man einmal mit den einzelnen Schritten vertraut, dann funktioniert der Zusammenbau und das Flashen des Sensors sehr recht einfach. Wichtig ist immer nur die Einstellungen in dem Sketch für jeden neuen Sensor individuell anzupassen. Nur so lassen sich die Daten über den MQTT Broker auseinander halten. Mit diesem Beitrag sind alle Voraussetzungen geschaffen um die Temperatur und Luftfeuchtedaten erfassen zu können.
Beitragsübersicht Smarthome ESP8266 NodeMCU
Hier folgt die Übersicht meiner Artikel rund um das Thema Smarthome mit dem günstigen ESP8266 NodeMCU Board. Das Ziel ist es selber eine Lösung zu bauen die ihre Daten nicht in der Cloud speichert sondern lokal und somit gehören einem selber die aufgezeichneten Daten.
SmartHome - Mosquitto Broker auf dem Raspberry Pi installieren
SmartHome - ESP8266 NodeMCU und DHT22 Sensor zusammenbauen und programmieren
SmartHome - Temperatur und Luftfeuchte Messung mit dem ESP8266
Hallo,
ich finde die Idee Klasse, die Bauteile auf Pappe zu montieren. Aber wie lautet die Bezeichnung für die „Distanzstücke“ für die NodeMCU?
Viele Grüße
Rolf-Achim