Wemos ESP8266 (D1 MINI) Sensor mit MQTT

Während der zwangsweisen Coronapause bin ich dem Raspperry Pi ein bisschen untreu geworden und habe mich weiter mit  ESP8266 basierenden Microcontrollern beschäftigt. Im Prinzip habe ich da weiter gemacht, wo ich mit dem Adafruit Huzzah aufgehört habe. Für grundsätzliche Informationen über die Arduino-artigen Microcrontoller bitte dort nachsehen.

Das Wemos D1 Mini Node MCU WiFi Board ist supergünstig und eignet sich für allerlei lustige Experimente mit Sensoren. Es kann mit einem Micro-USB Anschluss mit dem PC bzw. dem Arduino IDE verbunden werden, läuft mit 5V oder auch mit 3V. Die Teile gibt es praktisch überall. z.B. bei AZ-Deliveries für ca. 7€ oder günstiger, wenn man mehrere kauft. Reichelt, Conrad oder zur Not auch Amazon haben die Dinger meist auch.  Die Pro Version hat eine externe Antenne für größere Reichweite.

Temperatur-/Luftfeuchtigkeitssensor

Da ich einen feuchten Keller habe, wollte ich schon immer eine bezahlbare Lüftungs- und Trocknungssteuerung dafür. Was lag da näher, als einen bzw. zwei Temperatur- und Luftfeuchtigkeitssensoren auf Basis des DHT22 zu basteln und damit die Lüftung und Trocknung des Kellers zu steuern.

Hardware

Der elektrische Aufbau ist fast identisch zu dem in meinem ESP8266 Basisartikel. Die Stromversorgung und Programmierung erfolgt über den Mico-USB Anschluss am Board.

Nach dem Testen können wir das Ganze auf eine Lochplatine übertragen. Beim Verlöten darauf achten, einen Jumper (Steckbrücke) zwischen D0 und RST einzubauen (in obigem Fritzing Diagramm nicht dargestellt). Da der Controller im Dauerbetrieb relativ warm wird, lege ich ihn nach getaner Arbeit (Messen und Werte übermitteln) wieder schlafen. So wird der Controller nicht warm, die Messwerte werden nicht verfälscht. Die Brücke D0-RST sorgt für den Reset nach dem Aufwachen. Während des Programmierens ist der Kontakt offen, im Betrieb ist die Brücke gesteckt. Auf diese Weise  resetted sich der Controller beim zeitgesteuerten Aufwachen.

Ferner habe ich den D1 Mini “upside down” eingebaut, d.h. der silberfarbene ESP Chip liegt unten. Das hat in Bezug auf die Leiterbahnen-Entflechtung ein paar Vorzüge. Die Verlötung ist also spiegelverkehrt zum obigen Fritzing Diagramm.

Als Gehäuse habe ich das BOPLA ET-206 Gehäuse Serie Euromas II, 65 x 50 x 37 mm, IP65 verwendet und ein paar Löcher für den Sensor gebohrt. Da der Deckel leider nur diagonal und nicht an allen 4 Ecken verschraubt wird, ist das Gehäuse nur bedingt wasserdicht und  muss mit Isolierband zusätzlich abgedichtet werden, wenn man es draußen einsetzen will. Die Luftlöcher zeigen beim Außeneinsatz logischerweise nach unten damit kein Wasser eindringt!

Leider habe ich in den letzten Jahrzehnten beim Löten etwas die Übung verloren. Meine Lötarbeiten sehen nicht besonders professionell aus. Auch die Platine könnte etwas sauberer abgeschnitten sein. Den Anblick der Rückseite der von mir verlöteten Platine will ich euch deshalb ersparen. Dafür habe ich ein Layout der Lötseite auf eine Dreier Punkt-Streifen Raster Platine gezeichnet. Achtung: wie oben beschrieben ist der D1 MINI Upside-Down gesteckt.

Software

Jetzt liegt es an euch: Wenn ihr alles komplett selbst entwickeln wollt, also eine Logik mit Python und einer selbst gebauten Web-Oberfläche, dann haltet euch an den Beitrag WLAN fähigen Sensor bauen mit ESP8266.

Inzwischen haben sich aber einige IoT Standards etabliert, die uns eine Menge (Programmier-) Arbeit abnehmen. Ich habe meinen Sensor deshalb über das MQTT Protokoll mit meiner Steuerung verbunden.

MQTT!

Der Vorteil von MQTT (Message Queuing Telemetry Transport) ist, dass damit eine Vielzahl von unterschiedlichen Geräten Daten untereinander austauschen können – Angefangen von unserem Sensor, hin zu WiFi Schaltsteckdosen, Kameras und so weiter.

Allen, die sich (so wie ich vor Corona) damit noch nicht auskennen, empfehle ich den kostenlosen MQTT Online Videokurs von haus-automatisierung.com – Matthias Kleine hat eine ganze Reihe sehr guter und hochprofessioneller Tutorials zum Thema IoT geschrieben bzw. gedreht. Ich kann ihm dabei mit meinem kleinen Blog kaum das Wasser reichen.

Mit MQTT können wir später den zweiten Sensor, zwei WLAN Schaltsteckdosen und die Steuerungslogik basierend auf Node-Red ohne riesengroßen Programmieraufwand integrieren.

Der Arduino Sketch ist eine Kombination aus dem Sketch in meinem Huzzah Artikel und einem Sketch aus dem sehr guten und umfassenden FHEM Tutorial Wemos ESP8266 Temperatur per MQTT an FHEM senden von Mathias Kleine in haus-automatisierung.com.
Auch wenn es in dem Tutorial primär um FHEM geht, ist der MQTT und Arduino Teil wunderbar auf unseren Fall anwendbar. Das Tutorial enthält auch eine Anleitung zur Installation des MQTT Brokers auf einem Raspberry Pi.

Unser Programm läuft genau einmal durch und legt sich dann eine bestimmte Zeit schlafen um anschließend wieder von vorne anzufangen. d.h. es spielt sich alles in der Setup() Routine ab. Loop() bleibt hier leer.

Wenn ihr den MQTT Broker ohne User und Passwort aufgesetzt habt, dann anstatt (!mqtt.connect(host, mqttuser, mqttpwd))  einfach (!mqtt.connect(host))  verwenden.

Batteriebetrieb

Möglicherweise werden sich ein paar Elektronik Spezialisten darüber aufregen, aber ich betreibe den Außensensor (bisher) erfolgreich mit 3 Volt mit Hilfe von zwei handelsüblichen AAA Lithium Batterien. Bisher 4 Wochen Laufzeit ohne Probleme. Ich werde das weiter beobachten.

Für den Sensor innen im Keller (USB Stromversorgung) habe ich einen 10 Minuten timeout gewählt. Natürlich muss das Sleep-Intervall bei Batteriebetrieb entsprechend länger sein.  Der Sensor außen wacht nur alle 30 Minuten für ein paar Sekunden auf – wenn das nicht reichen sollte, gehe ich auf 60 Minuten.

Der Batterieanschluss geschieht denkbar einfach: Das rote Pluskabel des Batteriehalters wird mit 3.3V verlötet, das schwarze Massekabel mit GND. Sicherheitshalber habe ich noch einen Jumper in die Plusleitung eingelötet, der abgezogen werden sollte, wenn der Controller am USB Kabel hängt und damit gespeist bzw. programmiert wird.

Die Steuerungslogik erkläre ich im nächsten Beitrag.

2 Gedanken zu „Wemos ESP8266 (D1 MINI) Sensor mit MQTT

  1. Sehr schöner Beitrag zum Einstieg in das mqtt-Thema.
    Eine Sache ist mir unklar. Warum wird das Pin RST mit A0 (analog Input) und nicht mit D0 (GPIO16) verbunden ist ?

    1. Huch!!! Du hast vollkommen recht! Natürlich ist das D0 das mit RST verbunden werden muss. Altersbedingte Fehlsichtigkeit wahrscheinlich. Danke für de Hinweis, ist bereits korrigiert. Sachen gibts….

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Wordpress Anti-Spam durch WP-SpamShield