Digitaler Raumluftsensor. Home Assistant Anbindung via MQTT.

Über das Projekt

Ausreichend lüften ist wichtig für die Gesundheit. Der MQ-135 Sensor überwacht die Raumluft. Präziser ausgedrückt: Laut Datenblatt des Herstellers überwacht er die Raumluft auf CO2, Alkohol, Benzene, NOx, NH3.

Den MQ-135-Sensor gibt es in zwei Varianten:

Das MQ-135 Modul für Breadboards besitzt eine eigene Logik und kann daher auch digitale Werte ausgeben. Zum Einstellen des Schwellenwerts für die digitale Ausgabe besitzt das Modul einen Potentiometer. Am digitalen Pin gibt der Sensor im Arduino-Sketch via digitalRead den Wert 1 (alles OK) oder den Wert 0 (schlechte Luft) aus, je nachdem, ob der am Potentiometer eingestellte Schwellenwert überschritten wird.

Ist die Raumluft OK, so leuchtet unsere Indikator-LED grün. Sollte gelüftet werden, so blinkt unsere Indikator-LED rot.

Die Kalibrierung mithilfe des Potentiometers erfolgt auf Basis des subjektiven Luftqualitätsempfindens. Also z.B. indem man dieses so justiert, dass an frischer Luft (draußen) die Indikator-LED grün anzeigt und in einer länger nicht gelüfteten Wohnung rot blinkt.

Die digitalen Werte werden auch via MQTT ausgegeben und können somit an gängige Smart Home Systeme (wie z.B. Home Assistant) übertragen werden.

Der Aufbau erfordert gewisse Elektronik- und PC Kenntnisse. Zum Aufspielen der Software ist ein Computer mit installierter Arduino IDE erforderlich.

Disclaimer: Es handelt sich hier um ein Tutorial für Hobbybastler, die sich für IOT begeistern. Für die Funktionsfähigkeit der Luftqualitätsmessung kann daher keine Verantwortung übernommen werden. Der MQ-135-Sensor selbst wird warm und sollte daher nur betrieben werden, wenn man anwesend ist. Außerdem hat der MQ- 135-Sensor eine gewissen Einbrennzeit, in der die Werte noch schwanken können. 

Hardware

Bauteile

Zum Aufbau werden folgende Bauteile benötigt:

  • MQ-135 Sensor Modul
  • WEMOS D1 Mini NodeMCU
  • Breadboard, 400 Pin
  • 40 x Jumper Kabel 10 cm, male male
  • 5mm RGB LED, 4 Pin, gemeinsame Kathode
  • 3 x 220 Ohm Widerstände

Das komplette Set an Bauteilen in unserem Shop:

Löten

Damit der „D1 Mini NodeMCU“ mit der Leipterplatte verlötet werden kann, muss er zuerst mit den PINs verlötet werden. Dabei bitte darauf achten, dass die PINs rechtwinklig angelötet werden, damit sie später auch zur Leiterplatte passen.

Stecken

Im nächsten Schritt werden alle Bauteile auf das Breadboard gesteckt. Das folgende Fritzing-Schaubild gibt einen guten Überblick.

Die folgenden Fotos zeigen den Ablauf im Detail.

Zum Biegen der Widerstände können die nicht benötigten Pins des D1 Mini genutzt werden, um den gewünschten Abstand zu erhalten.

Das Einsetzen der Widerstände in das Breadboard ist etwas knifflig. Am besten die Widerstände an den Seiten halten, damit die Drähte nicht all zu sehr verbiegen. Eventuell nach Einsetzen der Widerstände die Drähte noch etwas korrigieren, wenn sie beim Einsetzen verbogen wurden.

Bei der LED bitte unbedingt auf korrekte Polung achten, da sonst der "D1 Mini NodeMCU" zerstört werden kann. Der längste Pin (Kathode) wird mit dem schwarzen Jumperkabel verbunden. Die anderen drei Pins mit den Widerständen.

Abschließend werden die Jumper-Kabel in das Breadboard gesteckt.

Erster Test

Werden die Bauteile falsch verlötet und der NodeMCU an den PC angeschlossen, so kann dies zur Beschädigung des USB-Ports des PCs führen. Daher testen wir erst einmal, indem wir den NodeMCU an ein klassisches USB-Ladegerät oder eine Powerbank mit USB-Kabel anschließen. Wird dort nichts zu heiß, ist das schon einmal ein gutes Zeichen.

ARDUINO PROGRAMMIERUNG

Arduino IDE herunterladen und installieren

Wir benötigen die Arduino IDE, welche hier kostenlos heruntergeladen werden kann: https://www.arduino.cc/en/Main/Software

Noch einfacher geht es auf Windows PCs, dort kann die Arduino IDE über den Microsoft Store installiert werden.

ESP 8266 Board hinzufügen

Zunächst ist folgende "Zusätzliche Boardverwalter URL" in den Voreinstellungen zu ergänzen: http://arduino.esp8266.com/stable/package_esp8266com_index.json

Dazu gehen wir wie folgt vor:

1. Wir rufen die Voreinstellungen auf:

2. Wir ergänzen die URL: http://arduino.esp8266.com/stable/package_esp8266com_index.json

"ESP8266" Board installieren

Dazu navigieren wir zu "Werkzeuge -> Board -> Boardverwalter".

Nun suchen wir nach "ESP8266" und installieren das Board.

"Generic ESP8266 Module" als Board auswählen

Dazu gehen wir wie folgt vor:

1. Wir navigieren über "Werkzeuge -> Board -> ESP8266 Boards"

2. Wir wählen "Generic ESP8266 Module" als Board aus

Upload Speed auswählen

Unter „Werkzeuge -> Upload Speed“ wählen wir 115200 aus.

Bibliotheken verwalten

Wir benötigen die folgenden Arduino Bibliotheken:

  • ESP8266WiFi.h
  • PubSubClient.h
  • ArduinoJson.h

Die Bibliothek "ESP8266WiFi.h" ist durch das Auswählen des "Generic ESP8266 Module" als Board automatisch verfügbar (siehe vorheriger Schritt).

Die anderen beiden Bibliotheken installieren wir wie folgt:

Unter „Werkzeuge -> Bibliotheken“ können wir die erforderlichen Bibliotheken installieren.

1. Wir suchen nach "PubSubClient" und wählen die Bibliothek von Nick O'Leary aus und klicken auf "installieren":

2. Wir suchen nach "ArduinoJason" und wählen die Bibliothek von Benoit Blanchon aus und klicken auf "installieren":

Arduino-Sketch von GitHub kopieren

Nun rufen wir den folgenden Arduino-Sketch von GitHub auf und kopieren ihn per "Kopieren / Einfügen" in einen neuen Sketch in unserer Arduino IDE:

https://github.com/NEOE-IO/NEOE-IOT-Kit-7

Nun müssen wir im Arduino Sketch noch individuelle Informationen ergänzen (siehe Kommentare im Sketch), z.B. für

  • WLAN Zugangsdaten
  • MQTT-Server Daten

Bitte dazu sämtliche Kommentare im Sketch sorgfältig lesen.

Arduino-Sketch auf NodeMCU hochladen

Nun schließen wir unseren Luftqualitätssensor über ein USB-Kabel an unseren Computer an.

Anschließend wählen wir über "Werkzeuge -> Port" die relevante USB-Schnittstelle (z.B. COM3 oder COM4) aus.

Nun klicken wir auf "Sketch -> Hochladen" und wenn keine Fehler mehr im Sketch sind, kann er erfolgreich hochgeladen werden und wir können nun unseren „digitalen Raumluftsensor“ nutzen.

Kalibrierung

Wie zu Beginn dieses Tutorials erwähnt, erfolgt die Kalibrierung mithilfe des Potentiometers am MQ-135 Modul auf Basis des persönlichen subjektiven Luftqualitätsempfindens.

Das MQ-135 Modul selbst besitzt zwei kleine LEDs:

  • Rote LED: zeigt an, dass das MQ-135 Modul in Betrieb ist.
  • Grüne LED: zeigt an, der Sensor auslöst. Also die Luftqualität den via Potentiometer eingestellten Schwellenwert (schlechte Luft) erreicht hat.

Zur Kalibrierung benötigt man einerseits einen "Bereich mit frischer Luft" (offenes Fenster, Balkon, Garten) und andererseits einen "Bereich mit schlechter Luft" (z.B. kleiner Raum, in dem sich eine Personen eine Stunde aufgehalten hatte und welcher in dieser Zeit nicht gelüftet wurde).

Nun setzt man den Sensor zunächst frischer Luft aus und stellt das Potentiometer durch Drehung nach rechts so ein, dass die grüne LED am Sensor aus ist. Nun sollte die Indikator-LED auf dem Breadboard grün leuchten.

Danach nimmt man den Sensor in den Raum mit schlechter Luft und dreht das Potentiometer ganz langsam nach links, bis die grüne LED am Sensor angeht. Nun sollte die Indikator-LED auf dem Breadboard anfangen, rot zu blinken.

Nun verlässt man den Raum mit schlechter Luft wieder und setzt den Sensor frischer Luft aus. Nun sollte die gründe LED am Sensor wieder ausgehen und die Indikator-LED auf dem Breadboard grün leuchten.

Nun wechselt man so lange zwischen "Bereich mit frischer Luft" und "Bereich mit schlechter Luft", bis man den gewünschten Schwellenwert richtig justiert hat.

Da der MQ-135 Sensor zunächst bis zu 48 Stunden Einbrennzeit benötigt, ist während bzw. nach dieser Zeit eine Wartezeit und / oder Nachkalibrierung erforderlich, bis die Anzeige wie gewünscht funktioniert.

Bitte um Beachtung: es handelt sich hier um ein Tutorial für Hobbybastler, die sich für IOT begeistern. Daher sollte das Spielerische (Schaffe ich es, den Sensor auszulösen? Reagiert die Indikator-LED? Werden die Daten via MQTT übertragen?) im Vordergrund stehen. Für eine professionelle Raumluftüberwachung, wo z.B. gesundheitliche oder medizinische Faktoren im Vordergrund stehen, ist der Aufbau nicht geeignet (dafür gibt es von anderen Anbietern spezielle, professionell kalibrierte, Messgeräte).

Anbindung an Smart Home System

Die NEOE IOT-Kits werden für Home Assistant entwickelt und getestet, da dieses das aufgrund der umfangreichen und ausgereiften Funktionalitäten aktuell von uns präferierte Smart Home System ist. Weitere Informationen zu Home Assistant siehe https://www.home-assistant.io.

Home Assistant

Zur Grundeinrichtung von Home Assistant siehe https://www.home-assistant.io/getting-started/.

Wir haben den Arduino Sketch so entwickelt, dass er die MQTT Discovery Funktionalität von Home Assistant unterstützt. Dadurch wird der Sensor automatisch von Home Assistant erkannt und die via MQTT übermittelten Daten können direkt in den Dashboards angezeigt werden. Zur Aktivierung der MQTT Discovery Funktion in Home Assistant siehe https://www.home-assistant.io/docs/mqtt/discovery/.

Wir empfehlen zur Anzeige in Home Assistant "Schaltfläche" Karte, weil sie schön groß ist und optisch gut für den digitalen Sensor passt. 

Ist die Raumluft OK, wird ein weißer Haken vor blauem Hintergrund angezeigt:

Sollte gelüftet werden, wird ein weißes Ausrufezeichen vor gelbem Hintergrund angezeigt:

Andere Smart Home Systeme

Dank Nutzung des MQTT-Protokolls sollte eine Anbindung auch an alle anderen Smart Home Systeme, welche MQTT unterstützen, möglich sein. Jedoch können wir aufgrund der Vielzahl unterschiedlicher Systeme dafür keine Garantie übernehmen. Zur Anbindung via MQTT an weitere Smart Home Systeme bitte die Dokumentationen der jeweiligen Smart Home Systeme konsultieren.

Indikator-LED

Abhängig vom Systemzustand verändert sich die Indikator-LED wie folgt:

  • Systemstart: blau
  • Raumluft OK: grün
  • Zeit zu Lüften: rot (blinkend)

    Weitere mögliche Ausbaustufen

    Über den Home Assistant könnte man immer dann, wenn der Sensor "dicke Luft" meldet, eine Lüftung so steuern, dass diese automatisch den Raum belüftet, bis die Luftqualität im Raum wieder in Ordnung ist.

    Häufige Fragen

    Die Indikator-LED leuchtet gar nicht

    • Wurden die WLAN-Zugangsdaten korrekt hinterlegt? Achtung: Groß-Kleinschreibung ist wichtig.

    Der Arduino-Programmcode funktioniert nicht und es erscheint eine Fehlermeldung in der Arduino IDE

    • In manchen Browsern ist eine automatische Übersetzung von Englisch auf Deutsch aktiviert. Dies führt dazu, dass der Arduino-Programmcode auf GitHub automatisch auf Deutsch übersetzt und daher falsch angezeigt wird. In diesem Fall bitte vor dem Kopieren und Übertragen des Arduino-Programmcodes die automatische Übersetzung deaktivieren. 

     

     

    Disclaimer - alle Angaben ohne Gewähr:

    Die in diesem Tutorial (Beitrag) enthaltenen Informationen wurden nach bestem Wissen und Gewissen recherchiert und zusammengetragen. Jedoch können auch uns Fehler passieren. Und genauso kann bei der Umsetzung des Tutorials etwas schief gehen oder können Inhalte missverstanden werden. Für eventuelle Schäden durch das Befolgen dieses Tutorials können wir daher keine Haftung übernehmen. Wir entwickeln unsere Tutorials laufen weiter. Sollte etwas unstimmig oder unklar sein, bitte Bescheid geben, damit wir den betroffenen Punkt korrigieren oder ergänzen können. Vielen Dank.

      Hinterlassen Sie einen Kommentar

      Bitte beachten Sie, dass Kommentare vor der Veröffentlichung freigegeben werden müssen