{"id":7356,"date":"2021-09-19T12:56:20","date_gmt":"2021-09-19T10:56:20","guid":{"rendered":"https:\/\/www.commander1024.de\/wordpress\/?p=7356"},"modified":"2021-10-04T16:29:29","modified_gmt":"2021-10-04T14:29:29","slug":"esphome-feinstaub-co2-ampel-fuers-smart-home","status":"publish","type":"post","link":"https:\/\/www.commander1024.de\/wordpress\/2021\/09\/esphome-feinstaub-co2-ampel-fuers-smart-home\/","title":{"rendered":"ESPHome: Feinstaub- \/ CO2-Ampel f\u00fcrs Smart Home"},"content":{"rendered":"\n<p class=\"has-drop-cap\">Heute baue ich eine CO2-Ampel, die zus\u00e4tzlich Temperatur, Feuchtigkeit und Feinstaub messen kann. Diese schickt die Werte an einen Home Assistant. So kann ich dort mit einer Automatisierung auf schlechte Luftqualit\u00e4t reagieren, bzw. aufmerksam gemacht werden. Nach eineinhalb Jahren HomeOffice wird es mal Zeit. Im entv\u00f6lkerten Office steht schon l\u00e4nger eine mit LoRa angebundene CO2 Ampel, die die Notwendigkeit des L\u00fcftens meldet. Hierzu nutze ich den ESPHome Baukasten. <\/p> \n\n\n\n <p> Als Basis hab ich mir den <a href=\"https:\/\/www.ikea.com\/de\/de\/p\/vindriktning-luftqualitaetssensor-70498242\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">IKEA Vindriktning<\/a> Sensor auserkoren. Er ist spottbillig f\u00fcr einen PM2.5 Feinstaubsensor, und soll laut <a href=\"http:\/\/or.com.cn\/Product_files\/Specifications\/LED%20Particle%20Sensor%20PM1006K%20Specification.pdf\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Datenblatt<\/a> (<a href=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/LED-Particle-Sensor-PM1006K-Specification.pdf\">lokale Kopie<\/a>) eine MTTF (mean time to failure) von >5 Jahren haben. Ob er das Versprechen einh\u00e4lt, wird sich noch zeigen m\u00fcssen. Die Sensoren, die ich f\u00fcr das Luftdaten-Projekt im Einsatz hatte, haben fast das 2,5-fache gekostet und jeweils nur ~1 Jahr durchgehalten. Und die hatten weder Geh\u00e4use noch ne schicke LED-Anzeige. Allerdings wurden diese auch (ganzj\u00e4hrig) drau\u00dfen eingesetzt. Ein weiterer Vorteil ist, dass relativ viel Platz im Geh\u00e4use ist, um den ESP32 und die restliche Sensorik unterzubekommen. Man kann den ESP Huckepack auf der RX-Datenleitung lauschen lassen, w\u00e4hrend die IKEA MCU weiterhin die Anfragen an den Sensor stellt und die LEDs entsprechend leuchten l\u00e4sst. Will man nur den PM-Sensor aus dem Vindriktning looten und ohne die IKEA MCU verwenden, so geht dies ebenso. <\/p> \n\n\n\n\n\n<h2 class=\"wp-block-heading\">Vindriktnings innere Werte<\/h2>\n\n\n\n <p> Das Geh\u00e4use l\u00e4sst sich durch Entfernen der 4 Schrauben auf der R\u00fcckseite \u00f6ffnen. Anschlie\u00dfend die beiden Kabel des Feinstaubsensors mit der MCU trennen. Nun kann die Front entfernt werden. <\/p> \n\n\n\n<figure class=\"wp-block-gallery columns-3 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/vindriktning_case-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"675\" height=\"1200\" src=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/vindriktning_case-675x1200.jpg\" alt=\"Vindriktning Geh\u00e4use\" data-id=\"7379\" data-full-url=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/vindriktning_case-scaled.jpg\" data-link=\"https:\/\/www.commander1024.de\/wordpress\/?attachment_id=7379\" class=\"wp-image-7379\" srcset=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/vindriktning_case-675x1200.jpg 675w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/vindriktning_case-337x600.jpg 337w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/vindriktning_case-169x300.jpg 169w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/vindriktning_case-768x1366.jpg 768w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/vindriktning_case-864x1536.jpg 864w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/vindriktning_case-1152x2048.jpg 1152w\" sizes=\"auto, (max-width: 675px) 100vw, 675px\" \/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_front-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"675\" height=\"1200\" src=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_front-675x1200.jpg\" alt=\"Vindriktning Front mit MCU\" data-id=\"7378\" data-full-url=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_front-scaled.jpg\" data-link=\"https:\/\/www.commander1024.de\/wordpress\/?attachment_id=7378\" class=\"wp-image-7378\" srcset=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_front-675x1200.jpg 675w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_front-338x600.jpg 338w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_front-169x300.jpg 169w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_front-768x1365.jpg 768w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_front-864x1536.jpg 864w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_front-1152x2048.jpg 1152w\" sizes=\"auto, (max-width: 675px) 100vw, 675px\" \/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_back-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"675\" height=\"1200\" src=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_back-675x1200.jpg\" alt=\"\" data-id=\"7377\" data-full-url=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_back-scaled.jpg\" data-link=\"https:\/\/www.commander1024.de\/wordpress\/?attachment_id=7377\" class=\"wp-image-7377\" srcset=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_back-675x1200.jpg 675w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_back-338x600.jpg 338w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_back-169x300.jpg 169w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_back-768x1365.jpg 768w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_back-864x1536.jpg 864w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_back-1152x2048.jpg 1152w\" sizes=\"auto, (max-width: 675px) 100vw, 675px\" \/><\/a><\/figure><\/li><\/ul><\/figure>\n\n\n\n<div class=\"wp-block-group alignfull has-background\" style=\"background-color:#f2f0e9\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<div style=\"height:70px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"542\" src=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcp_front_cropped-1920x542.jpg\" alt=\"\" class=\"wp-image-7382\" srcset=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcp_front_cropped-1920x542.jpg 1920w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcp_front_cropped-800x226.jpg 800w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcp_front_cropped-300x85.jpg 300w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcp_front_cropped-768x217.jpg 768w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcp_front_cropped-1536x434.jpg 1536w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcp_front_cropped-2048x579.jpg 2048w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/figure><\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-medium\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"450\" src=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_pads_detail_1-800x450.jpg\" alt=\"\" class=\"wp-image-7384\" srcset=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_pads_detail_1-800x450.jpg 800w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_pads_detail_1-1920x1080.jpg 1920w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_pads_detail_1-300x169.jpg 300w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_pads_detail_1-768x432.jpg 768w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_pads_detail_1-1536x864.jpg 1536w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_pads_detail_1-2048x1152.jpg 2048w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_pads_detail_1-2000x1125.jpg 2000w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\">Schauen wir uns das PCB mal etwas n\u00e4her an. Wir sehen, dass wir gar nicht so viel sehen. Ein paar Widerst\u00e4nde, ein Kondensator, ein Linearregler und nen 8-beinigen Microchip. Dieser hat angenehmerweise all seine Beinchen an Diagnose-Pads herangef\u00fchrt. Und 5V Spannung liegt dort ebenfalls an. <\/p> \n\n\n\n <p> Abgesehen von +5V und GND, ist vor allem das mit RESET beschriftete Pad interessant, auf dem ich die serielle Kommunikation der MCU mit dem Sensor mitlauschen will. An dem LED_R_1 Pad liegt die Spannung der Photodiode an. Diese werde ich daf\u00fcr verwenden, die Helligkeit der CO2 LED an die originale anzupassen. <\/p> \n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-medium\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"450\" src=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_pads_detail_2-800x450.jpg\" alt=\"\" class=\"wp-image-7385\" srcset=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_pads_detail_2-800x450.jpg 800w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_pads_detail_2-1920x1080.jpg 1920w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_pads_detail_2-300x169.jpg 300w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_pads_detail_2-768x432.jpg 768w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_pads_detail_2-1536x864.jpg 1536w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_pads_detail_2-2048x1152.jpg 2048w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/pcb_pads_detail_2-2000x1125.jpg 2000w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">PoC der Feinstaub- \/ CO2-Ampel auf dem Breadboard<\/h2>\n\n\n\n <p> Zun\u00e4chst kompiliere ich mit dem Home Assistant Pluging eine quasi leere ESPHome Firmware und flashe diese auf den Wroom32. Die komplette .yaml Konfiguration findes sich im weiteren Verlauf dieses Artikels, daher verzichte ich an dieser Stelle auf die Snippets, die mich zum Endergebnis f\u00fchren. Vor allem stecke ich jetzt einmal alles &#8222;trocken&#8220; an die sp\u00e4ter vorgesehen Pins und teste es. Es ist mir nicht nur einmal passiert, dass ich beim finalen Aufbau noch einmal Pins umgelegt habe, die entweder das zuk\u00fcnftige OTA-Flashen oder gar das Booten des ESPs verhindern. <\/p> \n\n\n\n<figure class=\"wp-block-image alignwide size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1080\" src=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/dev_board_poc-1920x1080.jpg\" alt=\"Alle Sensoren der CO2-Ampel werden an ihren k\u00fcnftigen Beinchen des ESP32 zum Testen angeschlossen.\" class=\"wp-image-7394\" srcset=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/dev_board_poc-1920x1080.jpg 1920w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/dev_board_poc-800x450.jpg 800w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/dev_board_poc-300x169.jpg 300w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/dev_board_poc-768x432.jpg 768w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/dev_board_poc-1536x864.jpg 1536w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/dev_board_poc-2048x1152.jpg 2048w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/dev_board_poc-2000x1125.jpg 2000w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Sensorik<\/h3>\n\n\n\n <p> Der Sensirion SDC30 Sensor (CO2, Luftfeuchtigkeit, Temperatur) wird per I\u00b2C angesteuert. Folglich ben\u00f6tigt er +3,3V, GND von dem Development Board (sp\u00e4ter von dem MCP1825S 3,3V Festspannungsregler). In einem Internetforum hie\u00df es, der SDC w\u00fcrde sich im Betrieb etwas erw\u00e4rmen, was die Temperaturwerte verf\u00e4lschen soll. Das scheint (zumindest in diesem Setup) aber kaum messbar zu sein. Nichtsdestotrotz habe ich an den I\u00b2C Bus zus\u00e4tzlich noch einen BMP280 Temperatur \/ Luftdrucksensor mit angeschlossen. Wirklich notwendig ist der retrospektiv aber nicht &#8211; es sei denn man m\u00f6chte unbedingt noch den Luftdruck messen. Weil ich aber sowieso ne Handvoll von dem BMPs hier rumfliegen und sonst keine andere Verwendung f\u00fcr sie hatte, hab ich ihn sogar final mit verbaut. Warum? Weil ich es kann! <span class=\"wp-font-emots-emo-wink\"><\/span> <\/p> \n\n\n\n <p> Die TX Leitung des PM1006 (am RX UART der IKEA MCU) wird an einem beliebigen GPIO des ESPs angeschlossen. Es reicht, in diesem Betriebsmodus, lediglich den RX Pin in der ESPHome UART Konfiguration zu definieren. F\u00fcr autonomen Betrieb des Sensors ohne IKEA MCU wird auch ein TX Port ben\u00f6tigt. Siehe Dokumentation des <a href=\"https:\/\/esphome.io\/components\/sensor\/pm1006.html\" target=\"_blank\" rel=\"noreferrer noopener\">PM1006-Moduls<\/a> von ESPHome. <\/p> \n\n\n\n<h3 class=\"wp-block-heading\">Infrarot Empf\u00e4nger und Sender<\/h3>\n\n\n\n <p> Auf dem Bild kann man noch 2 Ger\u00e4te erkennen, die ich angeschlossen habe. Hierbei handelt es sich um einen Infrarot Empf\u00e4nger und eine IR-Blaster Diode. Diese schlie\u00dfe ich zus\u00e4tzlich an, weil dieser Sensor im Schlafzimmer seinen Dienst verrichten soll. Da ich gerne mit Musik oder zu einer Doku einschlafe, soll der Home Assistant sp\u00e4ter das Media-Geraffel abschalten, sobald Sleep as Android, \u00fcber seinen Webhook den Eintritt in eine Tiefschlafphase meldet. Der IR Empf\u00e4nger wird dabei lediglich initial zum Anlernen der IR-Codes genutzt. <\/p> \n\n\n\n <p> Nat\u00fcrlich k\u00f6nnte man sich den Empf\u00e4nger im finalen Ausbau der CO2-Ampel sparen, aber es ist so viel Platz im Geh\u00e4use und vielleicht wird er sp\u00e4ter nochmal n\u00fctzlich. <\/p> \n\n\n\n<h3 class=\"wp-block-heading\">Status LED<\/h3>\n\n\n\n <p> Als letztes wird eine Status LED hinzugef\u00fcgt. Der Sensor soll die CO2 Werte ja auch optisch analog zum Vindriktning anzeigen k\u00f6nnen. Hierf\u00fcr hab ich mir ein T\u00fctchen 10mm RGB-LEDs mit gemeinsamer Kathode (gemeinsamer Minuspol) geklickt. Ich habe hier pro Farbe einen 270\u2126 Widerstand verbaut. Vermutlich ginge auch ein einzelner Widerstand an der Kathode, aber ich denke, das k\u00f6nnte beim Farbmischen (Orange z. B.) zu inkonsistenter Helligkeit f\u00fchren. Und Widerst\u00e4nde sind in meinem Privathackerspace auch hinreichend vorhanden. <\/p> \n\n\n\n<h2 class=\"wp-block-heading\">Schaltplan<\/h2>\n\n\n\n <p> Als alles lief, habe ich einen Schaltplan in KiCad erstellt, als Dokumentation f\u00fcr mich selbst. Nach diesem Schaltplan werde ich sp\u00e4ter alles final verl\u00f6ten. Das linke Bild ist der Schlafzimmer-Sensor mit dem zus\u00e4tzlichen IR-Kram. Diesen habe ich f\u00fcr das Wohnzimmer weggelassen, da hier bereits alles smart ist. <\/p> \n\n\n\n <p> Mir ist bewusst, dass der Infrarot-Blaster durch keinen Vorwiderstand gesch\u00fctzt ist. Urspr\u00fcnglich war hier sogar einer vorgesehen, aber damit leuchtete sie zu schwach, sodass die Befehle bei den Ger\u00e4ten nicht ankamen. Andere Leute im Internet verst\u00e4rken den Ausgang des ESPs sogar noch mit einem Transistor. Am Ende des Tages reden wir hier von sehr kurzen gepulsten Signalen. <\/p> \n\n\n\n <p> Bisschen belastend ist aber, dass ich die Spannung der Photodiode direkt an einen ADC-Pin des ESP32 heranf\u00fchre, da hier Spannungen von 0-5V ankommen. Der ESP32 vertr\u00e4gt eigentlich gut nur Spannungen bis 3.3V. H\u00f6here Messwerte als 3,9V k\u00f6nnen auch gar nicht gemessen werden, selbst mit einer attenuation von 11dB. Bislang ist keiner der beiden ESPs gestorben, also scheint das irgendwie schon noch innerhalb der Toleranz zu liegen. Er muss auch nur Spannungen von &lt;0,3V f\u00fcr die dunkle Darstellung von Spannungen dar\u00fcber unterscheiden k\u00f6nnen. Das klappt so. <\/p> \n\n\n\n <p> Beachten sollte man, dass die Photodiode deutlich empfindlicher im imfraroten Bereich als im sichtbaren ist. Auf Tageslicht reagiert sie ganz gut, auf k\u00fcnstliches weniger. Hier habe ich eine sehr helle LED-Taschenlampe zum Testen benutzt und direkt in die LED geleuchtet. <\/p> \n\n\n\n<figure class=\"wp-block-gallery alignwide columns-2 is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/sleepingroom_schematic.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1697\" height=\"1200\" src=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/sleepingroom_schematic-1697x1200.png\" alt=\"\" data-id=\"7361\" data-full-url=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/sleepingroom_schematic.png\" data-link=\"https:\/\/www.commander1024.de\/wordpress\/sleepingroom_schematic\/\" class=\"wp-image-7361\" srcset=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/sleepingroom_schematic-1697x1200.png 1697w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/sleepingroom_schematic-800x566.png 800w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/sleepingroom_schematic-300x212.png 300w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/sleepingroom_schematic-768x543.png 768w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/sleepingroom_schematic-1536x1086.png 1536w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/sleepingroom_schematic-2048x1448.png 2048w\" sizes=\"auto, (max-width: 1697px) 100vw, 1697px\" \/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/livingroom_pcb.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1697\" height=\"1200\" src=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/livingroom_pcb-1697x1200.png\" alt=\"\" data-id=\"7362\" data-full-url=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/livingroom_pcb.png\" data-link=\"https:\/\/www.commander1024.de\/wordpress\/livingroom_pcb\/\" class=\"wp-image-7362\" srcset=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/livingroom_pcb-1697x1200.png 1697w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/livingroom_pcb-800x566.png 800w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/livingroom_pcb-300x212.png 300w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/livingroom_pcb-768x543.png 768w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/livingroom_pcb-1536x1086.png 1536w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/livingroom_pcb-2048x1448.png 2048w\" sizes=\"auto, (max-width: 1697px) 100vw, 1697px\" \/><\/a><\/figure><\/li><\/ul><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">ESPHome Software f\u00fcr die CO2-Ampel kompilieren<\/h2>\n\n\n\n <p> Das Sch\u00f6ne an ESPHome ist, dass man kaum programmieren (k\u00f6nnen) muss, um eine Firmware zu erstellen. Man beschreibt einfach gesagt die Schnittstelle(n) des ESPs mit einer YAML Konfigurationsdatei. Den Rest macht ESPHome selbst. Am Ende herausgefallen kommt eine Bin\u00e4rdatei, die initial einmal per USB auf das Ger\u00e4t geflasht wird. F\u00fcgt man den &#8218;ota&#8216; Block mit ein, kann man zuk\u00fcnftig direkt aus dem Webinterface von ESPHome heraus das Flashen &#8222;durch die Luft&#8220; ansto\u00dfen. <\/p> \n\n\n\n <p> Nachfolgend einige kommentierte Ausz\u00fcge aus meiner Konfiguration. Die vollst\u00e4ndigen Dateien finden sich bei mir im git: <a href=\"https:\/\/git.commander1024.de\/Commander1024\/homeassistant-config\/src\/branch\/main\/esphome\/sleepingroom.yaml\" target=\"_blank\" rel=\"noreferrer noopener\">Schlafzimmer<\/a>, <a href=\"https:\/\/git.commander1024.de\/Commander1024\/homeassistant-config\/src\/branch\/main\/esphome\/livingroom.yaml\" target=\"_blank\" rel=\"noreferrer noopener\">Wohnzimmer<\/a> <\/p> \n\n\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"YAML\" data-shcb-language-slug=\"yaml\"><span><code class=\"hljs language-yaml\"><span class=\"hljs-attr\">esphome:<\/span>\n  <span class=\"hljs-attr\">name:<\/span> <span class=\"hljs-string\">sleepingroom<\/span>\n  <span class=\"hljs-attr\">platform:<\/span> <span class=\"hljs-string\">ESP32<\/span>\n  <span class=\"hljs-attr\">board:<\/span> <span class=\"hljs-string\">nodemcu-32s<\/span>\n\n<span class=\"hljs-attr\">wifi:<\/span>\n  <span class=\"hljs-attr\">ssid:<\/span> <span class=\"hljs-string\">\"Voltage-legacy\"<\/span>\n  <span class=\"hljs-attr\">password:<\/span> <span class=\"hljs-type\">!secret<\/span> <span class=\"hljs-string\">voltage_legacy_psk<\/span>\n  <span class=\"hljs-attr\">use_address:<\/span> <span class=\"hljs-string\">sleepingroom.home<\/span>  \n  <span class=\"hljs-attr\">power_save_mode:<\/span> <span class=\"hljs-string\">high<\/span>\n  <span class=\"hljs-attr\">fast_connect:<\/span> <span class=\"hljs-string\">on<\/span>\n\n  <span class=\"hljs-comment\"># Enable fallback hotspot (captive portal) in case wifi connection fails<\/span>\n  <span class=\"hljs-attr\">ap:<\/span>\n    <span class=\"hljs-attr\">ssid:<\/span> <span class=\"hljs-string\">\"Schlafzimmer Fallback Hotspot\"<\/span>\n    <span class=\"hljs-attr\">password:<\/span> <span class=\"hljs-type\">!secret<\/span> <span class=\"hljs-string\">fallback_psk<\/span>\n\n<span class=\"hljs-attr\">captive_portal:<\/span>\n\n<span class=\"hljs-comment\"># Enable logging<\/span>\n<span class=\"hljs-attr\">logger:<\/span>\n  <span class=\"hljs-attr\">level:<\/span> <span class=\"hljs-string\">DEBUG<\/span>\n\n<span class=\"hljs-comment\"># Enable Home Assistant API<\/span>\n<span class=\"hljs-attr\">api:<\/span>\n  <span class=\"hljs-attr\">password:<\/span> <span class=\"hljs-type\">!secret<\/span> <span class=\"hljs-string\">api<\/span>\n\n<span class=\"hljs-comment\"># Enable over-the-air updates<\/span>\n<span class=\"hljs-attr\">ota:<\/span>\n  <span class=\"hljs-attr\">password:<\/span> <span class=\"hljs-type\">!secret<\/span> <span class=\"hljs-string\">ota<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">YAML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">yaml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n <p> Zuerst definiere ich den Namen des Sensors und auf welcher Plattform und Board er laufen soll. <\/p> \n\n\n\n <p> Anschlie\u00dfend zwinge ich ESPHome, den im lokalen DNS eingetragenen FQDN &#8222;sleepingroom.home&#8220; statt Broadcast-Discover zu verwenden. <\/p> \n\n\n\n <p> Damit der Fallback-AP Dinge tun kann, muss das captive Portal definiert sein. <\/p> \n\n\n\n <p> API und OTA und Fallback-AP Updates sollten selbstverst\u00e4ndlich gesch\u00fctzt sein, sonst kann der Sensor sehr einfach \u00fcbernommen werden. <\/p> \n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\"># Initialize I\u00b2C<\/span>\ni2c:\n - id: bus_a\n   sda: <span class=\"hljs-number\">13<\/span>\n   scl: <span class=\"hljs-number\">16<\/span>\n   scan: <span class=\"hljs-keyword\">true<\/span>\n\n<span class=\"hljs-comment\"># Initialize LEDC GPIOs<\/span>\noutput:\n  - platform: ledc\n    pin: GPIO17\n    id: led_red\n  - platform: ledc\n    pin: GPIO18\n    id: led_green\n    max_power: <span class=\"hljs-number\">50<\/span>%\n  - platform: ledc\n    pin: GPIO19\n    id: led_blue\n\n<span class=\"hljs-comment\"># Initialize UART for Vindriktning sensor<\/span>\nuart:\n  rx_pin: GPIO26\n  baud_rate: <span class=\"hljs-number\">9600<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n <p> Hier definiere ich die Pins f\u00fcr I\u00b2C, die 3 PWM-Ausg\u00e4nge f\u00fcr die 3 Farben der LED und den RX-Pin f\u00fcr den UART. <\/p> \n\n\n\n <p> Den gr\u00fcnen Kanal f\u00fcr die LED schr\u00e4nke ich auf 50% Leistung ein, da sie sonst viel zu hell w\u00e4re und Farbverf\u00e4lschungen die Folge w\u00e4ren. <\/p> \n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\"># Define RGB mode for LED<\/span>\nlight:\n  - platform: rgb\n    id: co2_light\n    name: <span class=\"hljs-string\">\"CO2 Status LED\"<\/span>\n    red: led_red\n    green: led_green\n    blue: led_blue\n    internal: <span class=\"hljs-keyword\">true<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n <p> F\u00fcr die Ansteuerung der LED verwende ich die RGB Plattform, die mir die manuelle Farbmischung abnimmt. Ich definiere sie als interne Komponente, da Farbe und Helligkeit auf Basis der Sensorwerte eingestellt werden. T\u00e4te ich das nicht, k\u00f6nnte man Farbe und Helligkeit wie bei jeder anderen smarten Lampe \u00fcber ein Farbrad einstellen und sogar Effekte verwenden. <\/p> \n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">sensor:\n  <span class=\"hljs-comment\"># WiFi signal strength<\/span>\n  - platform: wifi_signal\n    name: <span class=\"hljs-string\">\"WiFi Signalst\u00e4rke\"<\/span>\n    update_interval: <span class=\"hljs-number\">60<\/span>s\n  <span class=\"hljs-comment\"># SCD30 CO2 +  temperature + humidity sensor<\/span>\n  <span class=\"hljs-comment\"># * air quality category 0: LED is purple, sensor needs calibration (&lt;380ppm)<\/span>\n  <span class=\"hljs-comment\"># \u2022 air quality category 1: LED is green (380-800ppm) <\/span>\n  <span class=\"hljs-comment\"># \u2022 air quality category 2: LED is yellow (900-1200ppm) <\/span>\n  <span class=\"hljs-comment\"># \u2022 air quality category 3: LED is orange\/amber (1200 bis 1600ppm) <\/span>\n  <span class=\"hljs-comment\"># \u2022 air quality category 4: LED is red (1600-2000ppm) <\/span>\n  - platform: scd30\n    i2c_id: bus_a\n    co2:\n      name: <span class=\"hljs-string\">\"Schlafzimmer CO2\"<\/span>\n      id: co2_value\n      accuracy_decimals: <span class=\"hljs-number\">1<\/span>\n      on_value_range:\n        - below: <span class=\"hljs-number\">380<\/span>\n          then:\n            - text_sensor.template.publish:\n                id: co2_warn\n                state: <span class=\"hljs-string\">\"Kalibrierung n\u00f6tig\"<\/span>\n            - light.turn_on:\n                id: co2_light\n                red: <span class=\"hljs-number\">75<\/span>%\n                green: <span class=\"hljs-number\">0<\/span>%\n                blue: <span class=\"hljs-number\">100<\/span>%\n        - above: <span class=\"hljs-number\">380<\/span>\n          below: <span class=\"hljs-number\">800<\/span>\n        &#091; ... ]\n    temperature:\n      name: <span class=\"hljs-string\">\"Schlafzimmer Temperatur\"<\/span>\n      accuracy_decimals: <span class=\"hljs-number\">2<\/span>\n    humidity:\n      name: <span class=\"hljs-string\">\"Schlafzimmer Luftfeuchtigkeit\"<\/span>\n      accuracy_decimals: <span class=\"hljs-number\">1<\/span>\n    <span class=\"hljs-comment\"># SCD30 temp sensor might be a bit off - this is'nt<\/span>\n    temperature_offset: <span class=\"hljs-number\">0<\/span> \u00b0C\n    ambient_pressure_compensation: <span class=\"hljs-number\">1<\/span>\n    automatic_self_calibration: <span class=\"hljs-keyword\">True<\/span>\n    address: <span class=\"hljs-number\">0x61<\/span>\n    update_interval: <span class=\"hljs-number\">60<\/span>s<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n <p> Nun definiere ich die Sensoren. Der &#8218;wifi_signal&#8216; Sensor meldet die aktuelle Empfangsst\u00e4rke zum AP. <\/p> \n\n\n\n <p> Die Angabe vom I\u00b2C Bus ist optional, die Angabe der Adresse nur bei mehreren Sensoren gleichen Typs verpflichtend. Der Ordnung halber, habe ich aber alles festgenagelt. <\/p> \n\n\n\n <p> Sinnvoll ist es, &#8218;ambient_pressure_compensation&#8216; und &#8218;automatic_self_calibration&#8220; zu aktivieren. Ersteres macht nur bei einem statisch platzierten Sensor Sinn, bei einem mobilen will man stattdessen &#8218;altitude_compensation&#8216; verwenden. Die automatische Kalibrierung beobachtet \u00fcber einen 2 Wochen Zeitraum, CO2 Minimalmesswerte begleitet durch Temperatur- und Feuchtigkeitsschwankungen. So wird der Messwert auf den aktuellen durchschnittlichen CO2-Wert von ~400ppm kalibriert. <\/p> \n\n\n\n <p> Mit &#8218;on_value_range&#8216; reagiert der ESP auf definierte Wertebereiche, um den Text-Sensor und die Farbe der LED zu setzen. Diese habe ich hier abgek\u00fcrzt. <\/p> \n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\">  # <span class=\"hljs-selector-tag\">Vindriktning<\/span> <span class=\"hljs-selector-tag\">particulate<\/span> <span class=\"hljs-selector-tag\">matter<\/span> <span class=\"hljs-selector-tag\">sensor<\/span>\n  <span class=\"hljs-selector-tag\">-<\/span> <span class=\"hljs-selector-tag\">platform<\/span>: <span class=\"hljs-selector-tag\">pm1006<\/span>\n    <span class=\"hljs-selector-tag\">pm_2_5<\/span>:\n      <span class=\"hljs-selector-tag\">name<\/span>: \"<span class=\"hljs-selector-tag\">Feinstaub<\/span> <span class=\"hljs-selector-tag\">PM<\/span> 2<span class=\"hljs-selector-class\">.5<\/span>\u00b5<span class=\"hljs-selector-tag\">m<\/span>\"\n      <span class=\"hljs-selector-tag\">on_value_range<\/span>:\n      <span class=\"hljs-selector-tag\">-<\/span> <span class=\"hljs-selector-tag\">above<\/span>: 0\n        <span class=\"hljs-selector-tag\">below<\/span>: 35\n        <span class=\"hljs-selector-tag\">then<\/span>:\n          <span class=\"hljs-selector-tag\">-<\/span> <span class=\"hljs-selector-tag\">text_sensor<\/span><span class=\"hljs-selector-class\">.template<\/span><span class=\"hljs-selector-class\">.publish<\/span>:\n              <span class=\"hljs-selector-tag\">id<\/span>: <span class=\"hljs-selector-tag\">pm25_warn<\/span>\n              <span class=\"hljs-selector-tag\">state<\/span>: \"<span class=\"hljs-selector-tag\">gr<\/span>\u00fc<span class=\"hljs-selector-tag\">n<\/span>\"\n      <span class=\"hljs-selector-tag\">-<\/span> <span class=\"hljs-selector-tag\">above<\/span>: 35\n        <span class=\"hljs-selector-tag\">below<\/span>: 85\n        <span class=\"hljs-selector-tag\">then<\/span>:\n          <span class=\"hljs-selector-tag\">-<\/span> <span class=\"hljs-selector-tag\">text_sensor<\/span><span class=\"hljs-selector-class\">.template<\/span><span class=\"hljs-selector-class\">.publish<\/span>:\n              <span class=\"hljs-selector-tag\">id<\/span>: <span class=\"hljs-selector-tag\">pm25_warn<\/span>\n              <span class=\"hljs-selector-tag\">state<\/span>: \"<span class=\"hljs-selector-tag\">orange<\/span>\"\n      <span class=\"hljs-selector-tag\">-<\/span> <span class=\"hljs-selector-tag\">above<\/span>: 85\n        <span class=\"hljs-selector-tag\">then<\/span>:\n          <span class=\"hljs-selector-tag\">-<\/span> <span class=\"hljs-selector-tag\">text_sensor<\/span><span class=\"hljs-selector-class\">.template<\/span><span class=\"hljs-selector-class\">.publish<\/span>:\n              <span class=\"hljs-selector-tag\">id<\/span>: <span class=\"hljs-selector-tag\">pm25_warn<\/span>\n              <span class=\"hljs-selector-tag\">state<\/span>: \"<span class=\"hljs-selector-tag\">rot<\/span>\"<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n <p> Da die IKEA MCU die verbauten LEDs bereits leuchten l\u00e4sst, muss ich hier nichts weiter konfigurieren. Ich setze aber &#8211; wie schon beim CO2-Sensor &#8211; einen Text-Sensor basierend auf den Grenzwerten, bei denen die LED-Farbe wechselt. <\/p> \n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\">  # <span class=\"hljs-selector-tag\">Analog<\/span> <span class=\"hljs-selector-tag\">photo<\/span> <span class=\"hljs-selector-tag\">diode<\/span> <span class=\"hljs-selector-tag\">voltage<\/span>\n  <span class=\"hljs-selector-tag\">-<\/span> <span class=\"hljs-selector-tag\">platform<\/span>: <span class=\"hljs-selector-tag\">adc<\/span>\n    <span class=\"hljs-selector-tag\">pin<\/span>: 32\n    <span class=\"hljs-selector-tag\">name<\/span>: \"<span class=\"hljs-selector-tag\">Spannung<\/span> <span class=\"hljs-selector-tag\">Photodiode<\/span>\"\n    <span class=\"hljs-selector-tag\">attenuation<\/span>: 11<span class=\"hljs-selector-tag\">db<\/span>\n    <span class=\"hljs-selector-tag\">update_interval<\/span>: 1<span class=\"hljs-selector-tag\">s<\/span>\n    <span class=\"hljs-selector-tag\">internal<\/span>: <span class=\"hljs-selector-tag\">true<\/span>\n    <span class=\"hljs-selector-tag\">on_value_range<\/span>:\n      <span class=\"hljs-selector-tag\">-<\/span> <span class=\"hljs-selector-tag\">below<\/span>: 0<span class=\"hljs-selector-class\">.25<\/span>\n        <span class=\"hljs-selector-tag\">then<\/span>:\n          <span class=\"hljs-selector-tag\">light<\/span><span class=\"hljs-selector-class\">.turn_on<\/span>:\n            <span class=\"hljs-selector-tag\">id<\/span>: <span class=\"hljs-selector-tag\">co2_light<\/span>\n            <span class=\"hljs-selector-tag\">brightness<\/span>: 30%\n      <span class=\"hljs-selector-tag\">-<\/span> <span class=\"hljs-selector-tag\">above<\/span>: 0<span class=\"hljs-selector-class\">.5<\/span>\n        <span class=\"hljs-selector-tag\">then<\/span>:\n          <span class=\"hljs-selector-tag\">light<\/span><span class=\"hljs-selector-class\">.turn_on<\/span>:\n            <span class=\"hljs-selector-tag\">id<\/span>: <span class=\"hljs-selector-tag\">co2_light<\/span>\n            <span class=\"hljs-selector-tag\">brightness<\/span>: 60%<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n <p> Zu guter Letzt wird noch die Spannung der Photodiode gemessen, um die Helligkeit der CO2 LED einstellen zu k\u00f6nnen. Unter 0,25V soll die LED dunkel leuchten, \u00fcber 0,5V hell. Die Helligkeit habe ich so eingestellt, dass sie sich mit den originalen LEDs in etwa deckt. Die L\u00fccke zwischen den Wertebereichen ist absichtlich, um konsistentes Verhalten im \u00dcbergangsbereich zu gew\u00e4hrleisten. <\/p> \n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">CO2-Ampel in Home Assistant einbinden<\/h2>\n\n\n\n <p> Wenn der Sensor mit der neuen Firmware startet, sollte er sich nun direkt am Home Assistant melden. Folglich sollte jetzt bereits eine Benachrichtigung von der ESPHome Integration aufgeploppt sein. Folgt man dieser, kann man die Einbindung mit einem Klick starten, nach der API-Passworteingabe tauchen die Sensoren kurze Zeit sp\u00e4ter unter Ger\u00e4te und Entit\u00e4ten auf. F\u00fcgt man die Sensoren zu einer Lovelace Karte hinzu, k\u00f6nnte es folgenderma\u00dfen aussehen: <\/p> \n\n\n\n<figure class=\"wp-block-gallery aligncenter columns-2 wp-block-gallery-9 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/Luftqualitaet_Graphen.png\"><img loading=\"lazy\" decoding=\"async\" width=\"222\" height=\"600\" src=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/Luftqualitaet_Graphen-222x600.png\" alt=\"\" data-id=\"7416\" data-full-url=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/Luftqualitaet_Graphen.png\" data-link=\"https:\/\/www.commander1024.de\/wordpress\/luftqualitaet_graphen\/\" class=\"wp-image-7416\" srcset=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/Luftqualitaet_Graphen-222x600.png 222w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/Luftqualitaet_Graphen-444x1200.png 444w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/Luftqualitaet_Graphen-111x300.png 111w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/Luftqualitaet_Graphen.png 496w\" sizes=\"auto, (max-width: 222px) 100vw, 222px\" \/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/Luftqualitaet_Karte.png\"><img loading=\"lazy\" decoding=\"async\" width=\"496\" height=\"513\" src=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/Luftqualitaet_Karte.png\" alt=\"\" data-id=\"7415\" data-full-url=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/Luftqualitaet_Karte.png\" data-link=\"https:\/\/www.commander1024.de\/wordpress\/luftqualitaet_karte\/\" class=\"wp-image-7415\" srcset=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/Luftqualitaet_Karte.png 496w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/Luftqualitaet_Karte-290x300.png 290w\" sizes=\"auto, (max-width: 496px) 100vw, 496px\" \/><\/a><\/figure><\/li><\/ul><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">CO2 Ampel verl\u00f6ten und zusammenbauen<\/h2>\n\n\n\n <p> Jetzt, da alles funktioniert und die Firmware installiert ist, kann das Verl\u00f6ten der Einzelteile erfolgen. Meine erste Idee war, ein PCB mit Spannungsversorgung (3,3V Festspannungsregler) zu l\u00f6ten. Alle Pins vom ESP32 sollten zum Verteilerboard gehen und dort verteilt werden. Zus\u00e4tzlich wollte ich Vorwiderst\u00e4nde f\u00fcr die LEDs hier ebenfalls unterbringen. Beim Au\u00dfensensor hatte ich gute Erfahrungen damit gemacht, einfach die K\u00e4belchen an die L\u00f6tpads des Wroom32 Moduls anzul\u00f6ten &#8211; das waren aber nur 3 St\u00fcck. Ich gebs gerne zu, das war bei so vielen K\u00e4belchen echt ne bl\u00f6de Idee. Erstens ist es sehr fummelig, und zweitens die Verbindung nicht sehr stark. Das hei\u00dft ich musste beim Reinstopfen in das Geh\u00e4use etliche abgel\u00f6ste Pins wieder reparieren. Einer hat dann auch direkt ein L\u00f6tpad vom ESP abgerissen. Ich w\u00fcrde sowas nicht empfehlen, aber seht selbst. <\/p> \n\n\n\n<figure class=\"wp-block-gallery columns-4 is-cropped wp-block-gallery-10 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/psu_buildup-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"450\" src=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/psu_buildup-800x450.jpg\" alt=\"PSU (Festspannungsregler), IR-Empf\u00e4nger und LED Vorwiderst\u00e4nde.\" data-id=\"7424\" data-full-url=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/psu_buildup-scaled.jpg\" data-link=\"https:\/\/www.commander1024.de\/wordpress\/psu_buildup\/\" class=\"wp-image-7424\" srcset=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/psu_buildup-800x450.jpg 800w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/psu_buildup-1920x1080.jpg 1920w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/psu_buildup-300x169.jpg 300w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/psu_buildup-768x432.jpg 768w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/psu_buildup-1536x864.jpg 1536w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/psu_buildup-2048x1152.jpg 2048w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/psu_buildup-2000x1125.jpg 2000w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/wroom32-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"338\" height=\"600\" src=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/wroom32-338x600.jpg\" alt=\"ESP32 Pinout\" data-id=\"7425\" data-full-url=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/wroom32-scaled.jpg\" data-link=\"https:\/\/www.commander1024.de\/wordpress\/wroom32\/\" class=\"wp-image-7425\" srcset=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/wroom32-338x600.jpg 338w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/wroom32-675x1200.jpg 675w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/wroom32-169x300.jpg 169w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/wroom32-768x1365.jpg 768w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/wroom32-864x1536.jpg 864w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/wroom32-1152x2048.jpg 1152w\" sizes=\"auto, (max-width: 338px) 100vw, 338px\" \/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/power_distribution_sensors-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"450\" src=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/power_distribution_sensors-800x450.jpg\" alt=\"Alles Komponenten au\u00dfer ESP32 mit passenden Kabell\u00e4ngen verl\u00f6tet.\" data-id=\"7423\" data-full-url=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/power_distribution_sensors-scaled.jpg\" data-link=\"https:\/\/www.commander1024.de\/wordpress\/power_distribution_sensors\/\" class=\"wp-image-7423\" srcset=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/power_distribution_sensors-800x450.jpg 800w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/power_distribution_sensors-1920x1080.jpg 1920w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/power_distribution_sensors-300x169.jpg 300w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/power_distribution_sensors-768x432.jpg 768w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/power_distribution_sensors-1536x864.jpg 1536w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/power_distribution_sensors-2048x1152.jpg 2048w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/power_distribution_sensors-2000x1125.jpg 2000w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/esp32_soldered-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"450\" src=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/esp32_soldered-800x450.jpg\" alt=\"Dr\u00e4htchen direkt an die Pads des wroom32 gel\u00f6tet.\" data-id=\"7421\" data-full-url=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/esp32_soldered-scaled.jpg\" data-link=\"https:\/\/www.commander1024.de\/wordpress\/esp32_soldered\/\" class=\"wp-image-7421\" srcset=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/esp32_soldered-800x450.jpg 800w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/esp32_soldered-1920x1080.jpg 1920w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/esp32_soldered-300x169.jpg 300w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/esp32_soldered-768x432.jpg 768w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/esp32_soldered-1536x864.jpg 1536w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/esp32_soldered-2048x1152.jpg 2048w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/esp32_soldered-2000x1125.jpg 2000w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/figure><\/li><\/ul><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">2. Versuch<\/h3>\n\n\n\n <p> Weil das so bl\u00f6d gelaufen ist, habe ich mir f\u00fcr den 2. Sensor vorher noch ein Breakout-Board besorgt, auf dem ich den ESP setzen und die K\u00e4belchen gescheit anl\u00f6ten kann. Die PSU habe ich diesmal einzeln an der Geh\u00e4use Front befestigt und die LED-Vorwiderst\u00e4nde direkt an die LED auf ein PCB gel\u00f6tet. So kann ich auf das Verteilerboard verzichten und alle verbliebenden Verbindungen an das Breakout-Board anl\u00f6ten, was die Sache viel \u00fcbersichtlicher und stabiler macht. Au\u00dferdem muss der Abgang zum ESP so nur noch 90\u00b0 nach oben abgeknickt werden und es rutscht alles problemlos in das Geh\u00e4use. Eine Plastiknase musste ich dabei abknipsen, da sie gegen das ESP-Board stie\u00df. <\/p> \n\n\n\n<figure class=\"wp-block-gallery columns-3 is-cropped wp-block-gallery-11 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/esp32_breakout-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1080\" src=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/esp32_breakout-1920x1080.jpg\" alt=\"ESP32 Breakoutboard\" data-id=\"7428\" data-full-url=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/esp32_breakout-scaled.jpg\" data-link=\"https:\/\/www.commander1024.de\/wordpress\/esp32_breakout\/\" class=\"wp-image-7428\" srcset=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/esp32_breakout-1920x1080.jpg 1920w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/esp32_breakout-800x450.jpg 800w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/esp32_breakout-300x169.jpg 300w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/esp32_breakout-768x432.jpg 768w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/esp32_breakout-1536x864.jpg 1536w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/esp32_breakout-2048x1152.jpg 2048w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/esp32_breakout-2000x1125.jpg 2000w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/psu_led-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1080\" src=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/psu_led-1920x1080.jpg\" alt=\"LED und PSU an der Front verbaut.\" data-id=\"7429\" data-full-url=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/psu_led-scaled.jpg\" data-link=\"https:\/\/www.commander1024.de\/wordpress\/psu_led\/\" class=\"wp-image-7429\" srcset=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/psu_led-1920x1080.jpg 1920w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/psu_led-800x450.jpg 800w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/psu_led-300x169.jpg 300w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/psu_led-768x432.jpg 768w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/psu_led-1536x864.jpg 1536w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/psu_led-2048x1152.jpg 2048w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/psu_led-2000x1125.jpg 2000w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/2nd_build_compact-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1080\" src=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/2nd_build_compact-1920x1080.jpg\" alt=\"2. Aufbau mit Breakout-Board und optimierter Kabelf\u00fchrung.\" data-id=\"7426\" data-full-url=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/2nd_build_compact-scaled.jpg\" data-link=\"https:\/\/www.commander1024.de\/wordpress\/2nd_build_compact\/\" class=\"wp-image-7426\" srcset=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/2nd_build_compact-1920x1080.jpg 1920w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/2nd_build_compact-800x450.jpg 800w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/2nd_build_compact-300x169.jpg 300w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/2nd_build_compact-768x432.jpg 768w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/2nd_build_compact-1536x864.jpg 1536w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/2nd_build_compact-2048x1152.jpg 2048w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/2nd_build_compact-2000x1125.jpg 2000w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/2nd_build_hero-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1080\" src=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/2nd_build_hero-1920x1080.jpg\" alt=\"2. Aufbau mit Breakout-Board und optimierter Kabelf\u00fchrung.\" data-id=\"7427\" data-full-url=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/2nd_build_hero-scaled.jpg\" data-link=\"https:\/\/www.commander1024.de\/wordpress\/2nd_build_hero\/\" class=\"wp-image-7427\" srcset=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/2nd_build_hero-1920x1080.jpg 1920w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/2nd_build_hero-800x450.jpg 800w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/2nd_build_hero-300x169.jpg 300w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/2nd_build_hero-768x432.jpg 768w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/2nd_build_hero-1536x864.jpg 1536w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/2nd_build_hero-2048x1152.jpg 2048w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/2nd_build_hero-2000x1125.jpg 2000w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/figure><\/li><\/ul><\/figure>\n\n\n\n <p> So sieht das doch ganz gut aus. Seitdem tun beide Sensoren klaglos ihren Dienst und ich hab schon die ersten Erkenntnisse, unter welchen Bedingungen sich die Raumluft hier in der Wohnung wie schnell verschlechtert und ein L\u00fcften angeraten ist. Hierzu habe ich eine einfache Automatisierung geschrieben, die ausl\u00f6st, wenn Feinstaub- oder CO2-Warnwert l\u00e4nger als 10m lang &#8222;rot&#8220; ist (und ich zu Hause bin). Der Home Assistant schickt dann eine persistente Push-Benachrichtigung auf mein Handy, die erst wieder entfernt wird, wenn die Luftqualit\u00e4t wieder &#8222;gr\u00fcn&#8220; ist. <\/p> \n\n\n\n<figure class=\"wp-block-image alignwide size-large\"><a href=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/DSC_0031-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1080\" src=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/DSC_0031-1920x1080.jpg\" alt=\"Fertige CO2-Ampel f\u00fcrs Wohnzimmer\" class=\"wp-image-7436\" srcset=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/DSC_0031-1920x1080.jpg 1920w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/DSC_0031-800x450.jpg 800w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/DSC_0031-300x169.jpg 300w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/DSC_0031-768x432.jpg 768w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/DSC_0031-1536x864.jpg 1536w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/DSC_0031-2048x1152.jpg 2048w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/10\/DSC_0031-2000x1125.jpg 2000w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/figure>\n","protected":false},"excerpt":{"rendered":" <p> Heute baue ich eine CO2-Ampel, die zus\u00e4tzlich Temperatur, Feuchtigkeit und Feinstaub messen kann. Diese schickt die Werte an einen Home Assistant. So kann ich dort mit einer Automatisierung auf schlechte Luftqualit\u00e4t reagieren, bzw. aufmerksam gemacht werden. Nach eineinhalb Jahren HomeOffice wird es mal Zeit. Im entv\u00f6lkerten Office steht schon l\u00e4nger eine mit LoRa angebundene CO2&hellip; <\/p> \n","protected":false},"author":1,"featured_media":7358,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[6,333,10],"tags":[513,557,373,515,435],"class_list":["post-7356","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hardware","category-heimautomatisierung","category-software","tag-esp32","tag-esphome","tag-hardware","tag-home-assistant","tag-smart-home","comments-open","no-comments"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>ESPHome: Feinstaub- \/ CO2-Ampel f\u00fcrs Smart Home &#8211; Commander1024<\/title>\n<meta name=\"description\" content=\"Heute baue ich eine CO2-Ampel, die zus\u00e4tzlich Temperatur, Feuchtigkeit und Feinstaub messen und die Werte an einen Home Assistant schickt.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.commander1024.de\/wordpress\/2021\/09\/esphome-feinstaub-co2-ampel-fuers-smart-home\/\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marcus Scholz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"14\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2021\\\/09\\\/esphome-feinstaub-co2-ampel-fuers-smart-home\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2021\\\/09\\\/esphome-feinstaub-co2-ampel-fuers-smart-home\\\/\"},\"author\":{\"name\":\"Marcus Scholz\",\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/#\\\/schema\\\/person\\\/aebb61d9f57867e2234becde6d99da8d\"},\"headline\":\"ESPHome: Feinstaub- \\\/ CO2-Ampel f\u00fcrs Smart Home\",\"datePublished\":\"2021-09-19T10:56:20+00:00\",\"dateModified\":\"2021-10-04T14:29:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2021\\\/09\\\/esphome-feinstaub-co2-ampel-fuers-smart-home\\\/\"},\"wordCount\":2075,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/#\\\/schema\\\/person\\\/aebb61d9f57867e2234becde6d99da8d\"},\"image\":{\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2021\\\/09\\\/esphome-feinstaub-co2-ampel-fuers-smart-home\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/airquality_sensor_hero-scaled.jpg\",\"keywords\":[\"ESP32\",\"ESPHome\",\"Hardware\",\"Home Assistant\",\"Smart Home\"],\"articleSection\":[\"Hardware\",\"Heimautomatisierung\",\"Software\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2021\\\/09\\\/esphome-feinstaub-co2-ampel-fuers-smart-home\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2021\\\/09\\\/esphome-feinstaub-co2-ampel-fuers-smart-home\\\/\",\"url\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2021\\\/09\\\/esphome-feinstaub-co2-ampel-fuers-smart-home\\\/\",\"name\":\"ESPHome: Feinstaub- \\\/ CO2-Ampel f\u00fcrs Smart Home &#8211; Commander1024\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2021\\\/09\\\/esphome-feinstaub-co2-ampel-fuers-smart-home\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2021\\\/09\\\/esphome-feinstaub-co2-ampel-fuers-smart-home\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/airquality_sensor_hero-scaled.jpg\",\"datePublished\":\"2021-09-19T10:56:20+00:00\",\"dateModified\":\"2021-10-04T14:29:29+00:00\",\"description\":\"Heute baue ich eine CO2-Ampel, die zus\u00e4tzlich Temperatur, Feuchtigkeit und Feinstaub messen und die Werte an einen Home Assistant schickt.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2021\\\/09\\\/esphome-feinstaub-co2-ampel-fuers-smart-home\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2021\\\/09\\\/esphome-feinstaub-co2-ampel-fuers-smart-home\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2021\\\/09\\\/esphome-feinstaub-co2-ampel-fuers-smart-home\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/airquality_sensor_hero-scaled.jpg\",\"contentUrl\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/airquality_sensor_hero-scaled.jpg\",\"width\":2560,\"height\":1439,\"caption\":\"Luftqualit\u00e4tssensor f\u00fcr Feinstaub und CO2\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2021\\\/09\\\/esphome-feinstaub-co2-ampel-fuers-smart-home\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ESPHome: Feinstaub- \\\/ CO2-Ampel f\u00fcrs Smart Home\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/\",\"name\":\"Dem Commander1024 sein Blog\",\"description\":\"A Network Engineer&#039;s life\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/#\\\/schema\\\/person\\\/aebb61d9f57867e2234becde6d99da8d\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/#\\\/schema\\\/person\\\/aebb61d9f57867e2234becde6d99da8d\",\"name\":\"Marcus Scholz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/Underground-Tour-89-scaled.jpg\",\"url\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/Underground-Tour-89-scaled.jpg\",\"contentUrl\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/Underground-Tour-89-scaled.jpg\",\"width\":1707,\"height\":2560,\"caption\":\"Marcus Scholz\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/Underground-Tour-89-scaled.jpg\"},\"description\":\"Seit Kindheitstagen ist der Computer sein Begleiter. Was mit Linux anfing, wurde 2005 ein\\\/e Beruf\\\/ung, die weit \u00fcber den Arbeitsplatz hinausgeht. Durch stetige Weiterentwicklung fasste er auch im *BSD Segment Fu\u00df und bietet mittlerweile professionelle L\u00f6sungen im Bereich Hosting, Networking und Infrastruktur an. Als Ausgleich besch\u00e4ftigt er sich neben Computerspielen mit der Fotografie.\",\"sameAs\":[\"https:\\\/\\\/www.commander1024.de\",\"https:\\\/\\\/www.facebook.com\\\/Commander1024\",\"https:\\\/\\\/x.com\\\/Commander1024\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCG_WzkCMycoSH7lEcvKHnmA\"],\"url\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/author\\\/commander1024\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ESPHome: Feinstaub- \/ CO2-Ampel f\u00fcrs Smart Home &#8211; Commander1024","description":"Heute baue ich eine CO2-Ampel, die zus\u00e4tzlich Temperatur, Feuchtigkeit und Feinstaub messen und die Werte an einen Home Assistant schickt.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.commander1024.de\/wordpress\/2021\/09\/esphome-feinstaub-co2-ampel-fuers-smart-home\/","twitter_misc":{"Verfasst von":"Marcus Scholz","Gesch\u00e4tzte Lesezeit":"14\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.commander1024.de\/wordpress\/2021\/09\/esphome-feinstaub-co2-ampel-fuers-smart-home\/#article","isPartOf":{"@id":"https:\/\/www.commander1024.de\/wordpress\/2021\/09\/esphome-feinstaub-co2-ampel-fuers-smart-home\/"},"author":{"name":"Marcus Scholz","@id":"https:\/\/www.commander1024.de\/wordpress\/#\/schema\/person\/aebb61d9f57867e2234becde6d99da8d"},"headline":"ESPHome: Feinstaub- \/ CO2-Ampel f\u00fcrs Smart Home","datePublished":"2021-09-19T10:56:20+00:00","dateModified":"2021-10-04T14:29:29+00:00","mainEntityOfPage":{"@id":"https:\/\/www.commander1024.de\/wordpress\/2021\/09\/esphome-feinstaub-co2-ampel-fuers-smart-home\/"},"wordCount":2075,"commentCount":0,"publisher":{"@id":"https:\/\/www.commander1024.de\/wordpress\/#\/schema\/person\/aebb61d9f57867e2234becde6d99da8d"},"image":{"@id":"https:\/\/www.commander1024.de\/wordpress\/2021\/09\/esphome-feinstaub-co2-ampel-fuers-smart-home\/#primaryimage"},"thumbnailUrl":"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/airquality_sensor_hero-scaled.jpg","keywords":["ESP32","ESPHome","Hardware","Home Assistant","Smart Home"],"articleSection":["Hardware","Heimautomatisierung","Software"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.commander1024.de\/wordpress\/2021\/09\/esphome-feinstaub-co2-ampel-fuers-smart-home\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.commander1024.de\/wordpress\/2021\/09\/esphome-feinstaub-co2-ampel-fuers-smart-home\/","url":"https:\/\/www.commander1024.de\/wordpress\/2021\/09\/esphome-feinstaub-co2-ampel-fuers-smart-home\/","name":"ESPHome: Feinstaub- \/ CO2-Ampel f\u00fcrs Smart Home &#8211; Commander1024","isPartOf":{"@id":"https:\/\/www.commander1024.de\/wordpress\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.commander1024.de\/wordpress\/2021\/09\/esphome-feinstaub-co2-ampel-fuers-smart-home\/#primaryimage"},"image":{"@id":"https:\/\/www.commander1024.de\/wordpress\/2021\/09\/esphome-feinstaub-co2-ampel-fuers-smart-home\/#primaryimage"},"thumbnailUrl":"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/airquality_sensor_hero-scaled.jpg","datePublished":"2021-09-19T10:56:20+00:00","dateModified":"2021-10-04T14:29:29+00:00","description":"Heute baue ich eine CO2-Ampel, die zus\u00e4tzlich Temperatur, Feuchtigkeit und Feinstaub messen und die Werte an einen Home Assistant schickt.","breadcrumb":{"@id":"https:\/\/www.commander1024.de\/wordpress\/2021\/09\/esphome-feinstaub-co2-ampel-fuers-smart-home\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.commander1024.de\/wordpress\/2021\/09\/esphome-feinstaub-co2-ampel-fuers-smart-home\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.commander1024.de\/wordpress\/2021\/09\/esphome-feinstaub-co2-ampel-fuers-smart-home\/#primaryimage","url":"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/airquality_sensor_hero-scaled.jpg","contentUrl":"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2021\/09\/airquality_sensor_hero-scaled.jpg","width":2560,"height":1439,"caption":"Luftqualit\u00e4tssensor f\u00fcr Feinstaub und CO2"},{"@type":"BreadcrumbList","@id":"https:\/\/www.commander1024.de\/wordpress\/2021\/09\/esphome-feinstaub-co2-ampel-fuers-smart-home\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/www.commander1024.de\/wordpress\/"},{"@type":"ListItem","position":2,"name":"ESPHome: Feinstaub- \/ CO2-Ampel f\u00fcrs Smart Home"}]},{"@type":"WebSite","@id":"https:\/\/www.commander1024.de\/wordpress\/#website","url":"https:\/\/www.commander1024.de\/wordpress\/","name":"Dem Commander1024 sein Blog","description":"A Network Engineer&#039;s life","publisher":{"@id":"https:\/\/www.commander1024.de\/wordpress\/#\/schema\/person\/aebb61d9f57867e2234becde6d99da8d"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.commander1024.de\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":["Person","Organization"],"@id":"https:\/\/www.commander1024.de\/wordpress\/#\/schema\/person\/aebb61d9f57867e2234becde6d99da8d","name":"Marcus Scholz","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2020\/11\/Underground-Tour-89-scaled.jpg","url":"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2020\/11\/Underground-Tour-89-scaled.jpg","contentUrl":"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2020\/11\/Underground-Tour-89-scaled.jpg","width":1707,"height":2560,"caption":"Marcus Scholz"},"logo":{"@id":"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2020\/11\/Underground-Tour-89-scaled.jpg"},"description":"Seit Kindheitstagen ist der Computer sein Begleiter. Was mit Linux anfing, wurde 2005 ein\/e Beruf\/ung, die weit \u00fcber den Arbeitsplatz hinausgeht. Durch stetige Weiterentwicklung fasste er auch im *BSD Segment Fu\u00df und bietet mittlerweile professionelle L\u00f6sungen im Bereich Hosting, Networking und Infrastruktur an. Als Ausgleich besch\u00e4ftigt er sich neben Computerspielen mit der Fotografie.","sameAs":["https:\/\/www.commander1024.de","https:\/\/www.facebook.com\/Commander1024","https:\/\/x.com\/Commander1024","https:\/\/www.youtube.com\/channel\/UCG_WzkCMycoSH7lEcvKHnmA"],"url":"https:\/\/www.commander1024.de\/wordpress\/author\/commander1024\/"}]}},"_links":{"self":[{"href":"https:\/\/www.commander1024.de\/wordpress\/wp-json\/wp\/v2\/posts\/7356","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.commander1024.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.commander1024.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.commander1024.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.commander1024.de\/wordpress\/wp-json\/wp\/v2\/comments?post=7356"}],"version-history":[{"count":54,"href":"https:\/\/www.commander1024.de\/wordpress\/wp-json\/wp\/v2\/posts\/7356\/revisions"}],"predecessor-version":[{"id":7437,"href":"https:\/\/www.commander1024.de\/wordpress\/wp-json\/wp\/v2\/posts\/7356\/revisions\/7437"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.commander1024.de\/wordpress\/wp-json\/wp\/v2\/media\/7358"}],"wp:attachment":[{"href":"https:\/\/www.commander1024.de\/wordpress\/wp-json\/wp\/v2\/media?parent=7356"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.commander1024.de\/wordpress\/wp-json\/wp\/v2\/categories?post=7356"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.commander1024.de\/wordpress\/wp-json\/wp\/v2\/tags?post=7356"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}