{"id":1469,"date":"2022-06-27T20:06:32","date_gmt":"2022-06-27T18:06:32","guid":{"rendered":"https:\/\/lobo.uber.space\/wp\/?p=1469"},"modified":"2022-06-30T22:57:44","modified_gmt":"2022-06-30T20:57:44","slug":"co2-esp8266-esphome-esp-easy","status":"publish","type":"post","link":"https:\/\/lobo.uber.space\/wp\/?p=1469","title":{"rendered":"CO<sub>2<\/sub>, ESP8266, ESPHome, ESP Easy"},"content":{"rendered":"\n<p>Es wird ja empfohlen regelm\u00e4\u00dfig zu l\u00fcften, doch wann ist es daf\u00fcr mal wieder Zeit? Jetzt, zum Sommeranfang ist das ja kein Problem, wenn ich zu Hause bin ist das Fenster nat\u00fcrlich offen. Als es noch k\u00e4lter war und auch jetzt, wenn es w\u00e4rmer wird, hilft einem ein CO<sub>2<\/sub>-Sensor, rechtzeitig das Fenster zu \u00f6ffnen um die verbrauchte Luft auszutauschen.<\/p>\n\n\n\n<p>Da ich auch einen CO<sub>2<\/sub>-Sensor haben wollte und mir die fertigen Ger\u00e4te entweder viel zu teuer waren oder etwas zu teuer aber mit zwangsweiser Cloud-Anbindung, habe ich mich umgesehen, wie man einen solchen Sensor selber realisieren kann. Nach kurzer Suche habe ich dann ein <a rel=\"noreferrer noopener\" href=\"https:\/\/www.google.de\/search?q=mh-z19\" target=\"_blank\">MH-Z19B<\/a> und den <a rel=\"noreferrer noopener\" href=\"https:\/\/de.wikipedia.org\/wiki\/ESP8266\" target=\"_blank\">ESP8266<\/a> in Form eines <a rel=\"noreferrer noopener\" href=\"https:\/\/www.google.de\/search?q=wemos+d1+mini\" target=\"_blank\">WeMos D1 Mini<\/a> gefunden. Bestellt, zusammengebaut und als System f\u00fcr den ESP die Software <a rel=\"noreferrer noopener\" href=\"https:\/\/www.letscontrolit.com\/wiki\/index.php\/ESPEasy\" target=\"_blank\">ESP Easy<\/a> gefunden. In ESP Easy war es sehr einfach den Sensor einzurichten und die Werte dann \u00fcber <a rel=\"noreferrer noopener\" href=\"https:\/\/de.wikipedia.org\/wiki\/MQTT\" target=\"_blank\">MQTT<\/a> an den ioBroker zu schicken. Ich musste f\u00fcr die Hardware nur den Sensor und den ESP \u00fcber vier Kabel miteinander verbinden und in der Software die Pins f\u00fcr den Bus ausw\u00e4hlen, den Sensor eintragen, MQTT aktivieren und den entsprechenden Rechner angeben, sowie ein paar Haken setzen und mich f\u00fcr ein Intervall entscheiden.<\/p>\n\n\n\n<p>Der MH-Z19 hat die M\u00f6glichkeit, eine automatische Kalibrierung zu verwenden (ABC: automatic baseline calibration) oder explizit eine Kalibrierung zu triggern. Unter ESP Easy habe ich es nicht geschafft eine Kalibrierung zu triggern, ich konnte nur die automatische Kalibrierung ein- oder ausschalten. Die automatische Kalibrierung funktioniert leider nur sinnvoll, wenn man daf\u00fcr sorgt, dass der Sensor jeden Tag mindestens einmal f\u00fcr einige Minuten (vielleicht eine viertel Stunde) an frischer Luft mit ca. 400 ppm CO<sub>2<\/sub> steht. Kann man dies nicht einrichten, kann es passieren, dass der Sensor pl\u00f6tzlich deutlich zu niedrige Werte anzeigt.<\/p>\n\n\n\n<p>Im ioBroker habe ich dann festgestellt, dass die Werte manchmal ganz sch\u00f6n rauschen, zu anderen Zeiten aber wieder v\u00f6llig glatt aussehen. Auf Nachfrage im Forum, ob auch andere dieses Problem haben, bekam ich leider zuerst nur die etwas flapsige Antwort, dass ich ja <a rel=\"noreferrer noopener\" href=\"https:\/\/forum.iobroker.net\/topic\/52572\/frage-co2-sensor-zappelnde-werte-bei-offenem-fenster\/4\" target=\"_blank\">&#8222;einen billigen chinesischen Nachbau&#8220;<\/a> gekauft h\u00e4tte. Mein Res\u00fcmee ist, dass dieser Sensor eigentlich ganz brauchbare Werte liefert, er allerdings keine Luftbewegung vertr\u00e4gt und deshalb in ein Geh\u00e4use eingebaut werden sollte um ihn vor st\u00e4rkerer Luftbewegung zu sch\u00fctzen. (Das habe ich bisher aber leider immer noch nicht geschafft).<\/p>\n\n\n\n<p>Daf\u00fcr habe ich im Laufe der Zeit <a rel=\"noreferrer noopener\" href=\"https:\/\/esphome.io\/\" target=\"_blank\">ESPHome<\/a> entdeckt. Am Anfang hatte mich die Seite etwas abgeschreckt, da ich nicht so recht wusste, wie ich das eigentlich bei mir installiert bekomme. ESPHome ist sehr eng mit <a rel=\"noreferrer noopener\" href=\"https:\/\/www.home-assistant.io\/\" target=\"_blank\">Home Assistant<\/a> verbunden. Da ich jedoch bisher <a href=\"https:\/\/www.iobroker.net\/\" target=\"_blank\" rel=\"noreferrer noopener\">ioBroker<\/a> benutze und damit sehr zufrieden bin, wollte ich ein weiteres Smart-Home-System eigentlich nicht ausprobieren. Dank des <a rel=\"noreferrer noopener\" href=\"https:\/\/forum.iobroker.net\/topic\/42741\/esphome-beta-release\" target=\"_blank\">ESPHome-Adapters f\u00fcr ioBroker<\/a> (leider bisher nur in einer Beta-Version und mit einigen noch nicht unterst\u00fctzten Funktionen) ist es aber auch mit ioBroker sehr leicht ESPHome zu verwenden. Wenn man das erste mal die Software \u00fcbertr\u00e4gt, kann man das theoretisch wohl auch an einem USB-Port des Rechners, auf dem der Browser l\u00e4uft falls man \u00fcber HTTPS zugreift. Ich bin den Weg \u00fcber den USB-Port des Raspberry PI gegangen, auf dem ioBroker und damit auch der ESPHome-Adapter l\u00e4uft. Das funktionierte v\u00f6llig problemlos. Im Anschluss kann man bei \u00c4nderungen einfach \u00fcber das WLAN die Software aktualisieren (OTA: over the air).<br>Bei ESPHome hat man deutlich flexiblere M\u00f6glichkeiten, wie Sensoren ausgelesen werden sollen und wie evtl. die Werte gefiltert werden sollen. Bei Bedarf hat man sogar die M\u00f6glichkeit sehr einfach eigenen C++-Code einzubauen um das Verhalten exakt entsprechend der eigenen Bed\u00fcrfnisse anzupassen, falls wider erwarten doch mal eine Funktionalit\u00e4t nicht bereits zur Verf\u00fcgung steht.<\/p>\n\n\n\n<p>Der ESPHome-Adapter unterst\u00fctzt bisher nur f\u00fcnf Sensortypen. D.h. f\u00fcr diese f\u00fcnf Sensortypen ist auch die direkte Unterst\u00fctzung der entsprechenden Elemente \u00fcber die ESPHome-API im Adapter verf\u00fcgbar und die Werte stehen direkt als Objekte des Adapters zur Verf\u00fcgung. Benutzt man andere Typen, so kann es passieren, dass einfach nur die entsprechenden Werte nicht gelesen werden k\u00f6nnen, aber auch, dass der gesamte ESP \u00fcber diese API nicht ansprechbar ist, also auch die Sensoren mit Typen, die eigentlich unterst\u00fctzt werden.<br>Abhilfe schafft in dem Fall mal wieder MQTT. Es ist zwar nicht ganz so einfach das in ESPHome einzurichten (im Vergleich zu ESPEasy) aber letzten Endes ist auch das keine gro\u00dfe H\u00fcrde.<\/p>\n\n\n\n<p>Die einfache Art, wie man mit einem ESP verschiedenste Hardware ansprechen kann hat mit dazu motiviert mal wieder etwas mehr mit Elektronik zu basteln. Inzwischen haben <a href=\"https:\/\/lobo.uber.space\/wp\/?p=1478\">meine Pflanzen Feuchtigkeitssensoren<\/a>, es gibt einen weiteren Knopf auf meinem Nachtisch, der zur Steuerung der Lampen in meinem Schlafzimmer dient und, nachdem nun die Feuchtigkeit der Erde meiner Pflanzen automatisch erkannt wird, ist nat\u00fcrlich eine kleine Station mit Pumpen in Arbeit.<\/p>\n\n\n\n<p>Hier die ESPHome-Konfiguration f\u00fcr den WeMos D1 Mini mit angeschlossenem MH-Z19B. Die automatische Kalibrierung habe ich deaktiviert und einen Switch definiert \u00fcber den ich eine Kalibrierung des Sensors triggern kann.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">esphome:\n  name: co2-sniffer2\n\nesp8266:\n  board: d1_mini\n\nwifi:\n  ssid: !secret wifi_ssid\n  password: !secret wifi_password\n\n  # Enable fallback hotspot (captive portal) in case wifi connection fails\n  ap:\n    ssid: !secret ap_ssid\n    password: !secret ap_password\n\nota:\n  password: !secret ota_password\n\n# Enable logging\nlogger:\n\n# Enable Home Assistant API\napi:\n  password: !secret api_password\n\nswitch:\n  - platform: template\n    name: \"CO2-Calibration\"\n    turn_on_action:\n      - logger.log: CO2-Calibration started2\n      - mhz19.calibrate_zero: mhz19_id\n\nweb_server:\n  port: 80\n\nuart:\n  rx_pin: GPIO4\n  tx_pin: GPIO5\n  baud_rate: 9600\n\nsensor:\n  - platform: mhz19\n    id: mhz19_id\n    co2:\n      name: \"CO2 Value\"\n    temperature:\n      name: \"Temperature\"\n    update_interval: 10s\n    automatic_baseline_calibration: false\n\n  - platform: wifi_signal\n    name: \"Wifi Power\"\n    update_interval: 10s\n\ncaptive_portal:\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Es wird ja empfohlen regelm\u00e4\u00dfig zu l\u00fcften, doch wann ist es daf\u00fcr mal wieder Zeit? Jetzt, zum Sommeranfang ist das ja kein Problem, wenn ich zu Hause bin ist das Fenster nat\u00fcrlich offen. Als es noch k\u00e4lter war und auch jetzt, wenn es w\u00e4rmer wird, hilft einem ein CO2-Sensor, rechtzeitig das Fenster zu \u00f6ffnen um &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/lobo.uber.space\/wp\/?p=1469\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eCO<sub>2<\/sub>, ESP8266, ESPHome, ESP Easy\u201c<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[122,119,120,110,112],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/lobo.uber.space\/wp\/index.php?rest_route=\/wp\/v2\/posts\/1469"}],"collection":[{"href":"https:\/\/lobo.uber.space\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lobo.uber.space\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lobo.uber.space\/wp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lobo.uber.space\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1469"}],"version-history":[{"count":11,"href":"https:\/\/lobo.uber.space\/wp\/index.php?rest_route=\/wp\/v2\/posts\/1469\/revisions"}],"predecessor-version":[{"id":1494,"href":"https:\/\/lobo.uber.space\/wp\/index.php?rest_route=\/wp\/v2\/posts\/1469\/revisions\/1494"}],"wp:attachment":[{"href":"https:\/\/lobo.uber.space\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1469"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lobo.uber.space\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1469"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lobo.uber.space\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1469"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}