ESPEasy – Einfacher CO2-Sensor für ioBroker

In diesem Artikel zeige ich Dir, wie man mit ESPEasy und dem MH-Z19-Sensor einen einfachen CO2-Sensor für ioBroker aufbauen kann. Mit ESPEasy können wir zumindest für einfache Sensoranbindungen an ioBroker auf die Programmierung verzichten. In meinem Beispiel verwenden wir einen einfachen ESP8266 Mikroprozessor sowie einen MH-Z19-Sensor.

Bevor wir mit der Einrichtung sowie der Anbindung an ioBroker beginnen können, zeige ich Dir hier zunächst die benötigten Produkte und Materialien:

Alternativ kannst Du den Sensor auch bei folgenden Anbietern bestellen:

MH-Z19 Sensor bei banggood.com

Im ersten Schritt laden wir uns zunächst das ESPEasy-ZIP herunter. Verwende einfach das neueste Release von folgender Webseite:

https://github.com/letscontrolit/ESPEasy/releases

Ich habe den Release-Stand „ESP_Easy_mega_20200516“ verwendet.

Flashen

Nach dem das ZIP heruntergeladen wurde, entpacken wir es nach C:\Temp\ESPEasy\. Im Verzeichnis findest Du jetzt direkt den ESP Easy Flasher. Verbinde jetzt Deinen ESP8266 Mikroprozessor mit dem USB-Kabel mit Deinem PC und starte die folgende Anwendung:

Im Flash-Tool wählst Du nun im ersten Schritt den COM-Port aus. In meinem Beispiel verwende ich den Port COM3. Im nächsten Schritt wählst Du aus der Liste die entsprechende Firmware aus. Ich habe hier die Version 20200516_normal für 4M Variante des ESP8266 gewählt.

Im nächsten Schritt kannst Du dann unten rechts auf die Schaltfläche „Flash ESP FW“ klicken, sodass der Flash-Vorgang gestartet wird.

Nach dem Flashen den ESP8266 kurz aus- und wieder einstecken um die Konfiguration der WLAN-Verbindung zu starten.

WLAN-Konfiguration

Im nächsten Schritt trennen wir den ESB8266 vom USB-Anschluss und stecken ihn dann wieder am USB-Port des PCs oder direkt an einem USB-Netzteil wieder ein. Damit wird ESPEasy neu gestartet und wir können mit der WLAN-Konfiguration beginnen.

Im ersten Schritt öffnen wir am PC oder Smartphone die WLAN-Einstellungen und suchen nach einem neuen WLAN Netz mit dem Namen „ESP_Easy_0“. Wir müssen uns nun mit diesem Netzwerk verbinden. Das Standard Kennwort für die WLAN-Verbindung lautet „configesp“. Nach dem wir uns erfolgreich verbunden haben öffnet sich auf dem Smartphone in der Regel direkt die ESPEasy Konfiguration. Sollte sich die Konfiguration nicht automatisch öffnen, kann sie unter folgender Adresse aufgerufen werden: http://192.168.4.1

Auf der ersten Seite der Konfiguration wählen wir nun unser zu verwendendes WLAN-Netzwerk aus und geben den Schlüssel dazu ein. Mit Speichern können wir die Einstellungen dann speichern und bestätigen. Im nächsten Schritt trennen wir uns vom WLAN-Netz „ESP_Easy_0“ und verbinden uns mit unserem Standard WLAN-Netzwerk. Wir können dann auch nochmals den ESP8266 vom Strom trennen und damit neu starten um die WLAN-Einstellungen zu testen.

In der Netzwerk-Übersicht des Routers finden wir jetzt auch ein neues Gerät, unseren ESPEasy, mit dem wir uns im nächsten Schritt wieder verbinden. In meinem Netzwerk ist ESPEasy nun unter der IP-Adresse 192.168.2.129 aufrufbar.

Hardware-Test Aufbau

Bevor wir nun mit der Einrichtung der ESPEasy-Software fortfahren, müssen wir zunächst den CO2-Sensor mit dem ESP8266 verkabeln. Dazu stecken wir beide Komponenten auf unser Breadboard und Erstellen mit Jumper Kabeln folgende Verbindungen:

MH-Z19ESP8266
VCC5,5V (VU)
GNDGND
TXD7
RXD5



ESPEasy Einrichtung

Nach dem wir jetzt die Schaltung aufgebaut und ESPEasy gestartet haben, können wir im nächsten Schritt mit der Einrichtung von ESPEasy beginnen. Melde Dich dazu wieder über das ESPEasy Web-Interface an und öffnen den Bereich Devices. Auf der Lasche klicken wir im ersten Device auf die Schaltfläche Add. Über die Auswahl-Box kannst Du jetzt den Sensor „Gases – CO2 MH-Z19“ wählen. Mit einem Klick auf die Schaltfläche Submit werden dann noch zusätzliche Device-Einstellungen getroffen.

In den Einstellungen müssen wir zunächst die Einstellung Enabled aktivieren. Zudem müssen hier die GPIO für TX (senden) und RX (empfangen) hinterlegt werden. Im oben gezeigten Schaltplan verwende ich D7 für TX und D5 für RX. Als Serial Port habe ich SoftwareSerial gewählt.

Der Sensor sollte jetzt nach wenigen Sekunden im Bereich Values die Werte für PPM (CO2-Sensor), Temperatur in °C und den U-Wert übertragen. Der Sensor überträgt einen CO2-Bereich von 0-5000 PPM. Sollte der Sensor kleinere Werte als 400 liefern, muss er zunächst an der frischen Luft kalibriert werden. In meinem Fall stimmten die Werte von Anfang an mit einem CO2-Messgerät überein.

Für die Kalibrierung wird der HD-Pin mit einem 3K Widerstand für 7 Sekunden mit GND verbunden und dann im freien mindestens 20 Minuten betrieben. Jetzt sollte der Sensor seine Kalibrierung abgeschlossen haben.

Nach dem der Sensor jetzt in ESPEasy funktioniert, werden wir im nächsten Schritt einen Controller hinterlegen, welcher die Daten des Sensors per MQTT an ioBroker überträgt. Dafür gehen wir auf den Bereich Controllers und klicken hier bei der nächsten freien Nummer auf die Add Schaltfläche. In der Regel sollte das die 1 sein.

In der Protokoll-Auswahl wählen wir hier das MQTT-Protokoll für openHAB, welches so auch mit dem ioBroker MQTT-Adapter funktioniert. Dann noch die Verwendung einer IP-Adresse, sowie die IP-Adresse und den Port zu ioBroker und dem MQTT-Adapter hinterlegen. Falls Du hier eine Anmeldung am Adapter verwendest musst Du diese im Bereich Creditials aktivieren und hinterlegen.

Im Bereich MQTT muss unten die Einstellung Enabled aktiviert werden. Die restlichen Einstellungen für den Aufbau des Subscribe und Publish habe ich wie folgt konfiguriert.

Controller Subscribe: %sysname%/#
Controller Publish: %sysname%/%tskname%/%valname%

Mit der Schaltfläche Submit werden dann die Einstellungen des Controllers gespeichert. In der Controller-Liste sollte der neu angelegte Controller jetzt Enabled dargestellt werden.

Nach dem wir jetzt den Controller eingerichtet haben, müssen wir nun nochmals auf den Bereich Devices wechseln und hier auf unserem Sensor die Eigenschaft Data Acquisition – Send to Controller aktivieren. Somit werden die Sensorwerte an den MQTT Controller übertragen.

Anbindung an ioBroker per MQTT

Wenn wir jetzt in ioBroker in die Objektliste schauen, werden wir hier den folgenden neuen Ordner und die unten stehenden Datenpunkte für den neuen CO2-Sensor finden.

In ioBroker habe ich dann eine Grafik mit dem Adapter ECharts erstellt.

Fazit

ESPEasy lässt sich für einfache Aufgaben wie das Einsammeln von Sensordaten perfekt nutzen. Auch das Zusammenspiel mit ioBroker über MQTT funktioniert perfekt.

Ich hoffe euch gefällt dieser Artikel. Über Kommentare unterhalb des Artikels oder per E-Mail freue ich mich wie immer 🙂

Matthias Korte

Hauptberuflich Software-Entwickler und seit einigen Jahren Smart-Home Fan. Angefangen hat alles mit einem RaspberryMatic und einer schaltbaren Steckdose. Mittlerweile habe ich einige Steckdosen, Sensoren, und Thermostate sowie ioBroker zur Visualisierung im Einsatz.

10 Gedanken zu „ESPEasy – Einfacher CO2-Sensor für ioBroker

  • 16. Dezember 2020 um 21:03
    Permalink

    Hallo Matthias,

    ein MH-Z19B ist bei mir gestern, nach längerer Bestellzeit ebenfalls eingetroffen. Da ich zu Testzwecken noch einen ESP8266, schon mit Tasmota geflasht auf dem Schreibtisch liegen hatte habe ich den Sensor, zu einem ersten Test, dort gleich angeschlossen. Die Co2-Werte scheinen mir soweit (ohne weitere Messgeräte) halbwegs plausibel, jedoch wird die Temperatur nur mit 9-10°C (bei tatsächlichen 19-20°C Raumtemperatur) angezeigt. Darauf hin habe ich den Sensor noch an einen Arduino Uno angeschlossen mit gleichem Ergebnis.

    Kann bei dem Sensor in irgendeiner Weise ein Temperaturoffset eingestellt werden, da die Auswertung der Co2-Werte ja wohl abhängig von der Temperatur sein soll?

    Antwort
  • 17. Dezember 2020 um 17:24
    Permalink

    Hallo Matthias,

    Ich habe gerade versucht meinen neuen ESP8266 zu flashen.
    Leider bekomme ich es nicht gebacken.

    Bekomme auf 3 Rechnern immer diese Fehlermeldung:

    Flash didn’t complete due to error [2], please read log file:
    20201217171954.txt
    (or try pressing reset on the unit)
    Start flashing on COM5 (approx 105 seconds)

    Hast du eine Ahnung warum das bei mir nicht klappen will ?
    Hab die aktuellste Version von Github geladen.

    Vielen lieben Dank schon mal für deine Hilfe
    LG
    Christian

    Antwort
    • 17. Dezember 2020 um 18:38
      Permalink

      Ok… jetzt hab ichs so halb hinbekommen.
      musste die Baudrate auf 9600 stellen.
      Allerdings bekomm ich die Meldung im Log das er mit 21 Fehlern das Flashen abgeschlossen hat.
      Ob das jetzt irgendwelche Auswirkungen hat kann ich nicht sagen..
      Ich probier jetzt mal weiter und schaue was passiert 😀

      Antwort
      • 17. Dezember 2020 um 19:55
        Permalink

        Hallo Christian,
        danke für Deine Rückmeldung und Deiner Lösung des Problems. Das ist sehr merkwürdig, bei mir war die Baudrate deutlich höher eingestellt.
        Was für einen ESP8266 verwendest Du?
        Funktioniert jetzt alles?
        LG Matthias

        Antwort
        • 17. Dezember 2020 um 21:48
          Permalink

          Ok.. ich habs irgendwie jetzt hinbekommen das er mir die Temperatur und Luftfeuchte anzeigt.
          Hab hier einen NodeMCU v3 der sich mit deiner Anleitung hier nicht ganz deckt und die Optionen im Webif auch nicht gleich sind.

          Soweit hab ich jetzt mal alle geschafft auch die Verbindung mit MQTT zum ioBroker.
          Nur wird mir hier nur der Eintrag LWT espeasytemperatur/status/LWT angezeigt und keine Werte vom Sensor.

          Das ist jetzt noch meine einzige Hürde.
          Wennst mir da weiterhelfen könntest wäre ich dir sehr sehr dankbar.

          LG
          Christian

          Antwort
        • 17. Dezember 2020 um 21:51
          Permalink

          Hallo Matthias,

          Muss das mit der Baudrate nochmals zurück nehmen.
          Es hat mit den 115200 dann schlussendlich funktioniert.
          Auf meine NodeMCU v3 steht aber was von 9600
          Ich musste mir allerdings noch hier den Treiber besorgen und installieren
          http://www.wch.cn/download/CH341SER_ZIP.html

          Dann hat das Flashen auch funktioniert.
          Ach ja und sorry.. ich versuch hier gerade den Temperatursensor einzurichten.
          Bin hier wohl im CO2 Bereich gelandet. sorry 😀

          Antwort
  • 17. Dezember 2020 um 21:57
    Permalink

    Und schon wieder was übersehen.
    Ich glaub ich sollts für heute sein lassen 😀
    Data Acquisition – Send to Controller war nicht angehackt.
    Jetzt bekomm ich Daten von der Luftfeuchte angezeigt
    Einzig die Temperatur scheint als Eintrag im ioBroker auf aber kein Wert.
    Am Controller selbst wird mir der Wert angezeigt.
    Das ist jetzt meine letzte Hürde.

    LG
    Christian

    Antwort
    • 17. Dezember 2020 um 22:05
      Permalink

      Sooo jetzt hab ich auch das noch geschafft.
      Keine Ahnung warum aber es funktioniert jetzt.

      Was hab ich gemacht.
      Ich hab die Namen unter dem Device geändert und nach dem Speichern sind die beiden Bezeichnungen im ioBroker erschienen inkl. der fehlenden Temperaturbezeichnung.
      Das Teil ist irgendwie ein wenig bockig.
      Nur zur Info falls das jemand auch hat.

      Danke für die tolle Anleitung. Ohne die hätte ich das sowieso nie geschafft..
      LG
      Christian

      Antwort
  • 5. Januar 2021 um 10:18
    Permalink

    Hallo, funktioniert das Projekt auch mit einem MH-Z19B oder MH-Z19C?

    ansonsten super, Projekt und auf jedenfall für mich sehr interessant. Wichtig wäre eben nur ob man bei den Komponenten ausweichen kann und am besten mit den selben Einstellungen alles weitere so wie beschrieben flashen kann.

    VG

    Antwort
  • 14. Februar 2021 um 13:26
    Permalink

    Moin,

    tolle Beschreibung für dieses Projekt. Beim Versuch es nachzubauen scheitere ich allerdings daran, dass ich die entsprechenden .bin datein nicht im download Verzeichnis habe. Bei mir gibt es immer nur die 4 Blanko + ESPEasy_2step_UploaderMega_1024.bin…..

    Weiß jemand für Rat für mein Problem?

    Ich habe bereits verschiedene Release Versionen ausprobiert.

    Grüße

    Antwort

Schreibe einen Kommentar

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