CO₂-sensor und -indikator

felix schwenzel in artikel

vor ein paar wo­chen las ich hier, dass der MH-Z19 CO₂-sen­sor ganz zu­ver­läs­sig ar­bei­te. vor­her hat­te ich von gas-sen­so­ren ge­hört, die heiz­spu­len ha­ben und beim auf­wär­men ko­misch rie­chen. der MHZ-19 misst mit la­ser­licht, kos­tet da­für aber ein biss­chen mehr. bei ali­ex­pres ca. 15 euro. letz­te wo­che ka­men die bei­den sen­so­ren an, die ich dort ge­kauft habe.

ich woll­te ger­ne ei­nen sen­sor ha­ben, der sei­ne da­ten in mei­nen woh­nungs­con­trol­ler schreibt und loggt, die mess­da­ten aber auch vi­sua­li­siert, am bes­ten mit ei­ner LED-an­zei­ge. vor al­lem soll­te das ding aber auch al­lei­ne funk­tio­nie­ren, also ohne wlan und ohne mqtt-ver­bin­dung sei­ne wer­te an­zei­gen. mit den lö­sun­gen die ich zu­hau­se ein­set­ze, fürch­te­te ich, könn­te das pro­ble­ma­tisch sein. vie­le mei­ner sen­so­ren ba­sie­ren auf esp-easy, was in der re­gel wirk­lich ein­fach ein­zu­rich­ten und zu ver­wal­ten ist, aber eben auf ei­ner wlan und mqtt-ver­bin­dung ba­siert. ohne wlan oder ver­bin­dung zum mqtt-ser­ver strei­ken die esp-ea­sys. bei ho­mie, auf des­sen ba­sis ich auch ein paar sen­so­ren und ak­to­ren be­trei­be, gibt’s wohl tech­ni­sche mög­lich­kei­ten für ei­nen ver­bin­dungs-lo­sen be­trieb, aber das schien mir zu kom­pli­ziert.

weil ich seit ein paar mo­na­ten er­folg­reich und be­frie­di­gend mit der my­sen­sors-platt­form ex­pe­ri­men­tie­re, hab ich mich ent­schie­den die CO₂-sen­so­ren als my­sen­sors zu bau­en. das kon­zept von my­sen­sors zu ver­ste­hen fiel mir an­fangs et­was schwer, weil sich auf der web­site ein wil­des durch­ein­an­der fin­det, von how-tos, bas­tel­an­lei­tun­gen, fo­rums­bei­trä­gen und hard­ware-bau­vor­schlä­gen, -wer­bung, -show­ca­ses. ir­gend­wann habe ich dann her­aus­ge­fun­den, dass die leu­te die die soft­ware-bi­blio­thek schrei­ben und pfle­gen, eben auch die open­hard­ware.io-platt­form be­trei­ben und dass dort, eben des­halb, auch be­son­ders vie­le leu­te ihre my­sen­sor-pro­jek­te vor­stel­len (und zum teil ver­kau­fen).

seit­dem ich ei­nen funk­tio­nie­ren­den my­sen­sors-gate­way an den ho­me­as­sistant an­ge­schlos­sen habe, ist das hin­zu­fü­gen (und bau­en) von sen­so­ren (und ak­to­ren) auch wirk­lich ein­fach.

den MH-Z19 habe ich an ei­nen ar­dui­no nano (ca. 2,50 euro/stück) an­ge­schlos­sen und an den nano eine NRF24L01 sen­der/emp­fän­ger. im prin­zip wars das schon, ei­nen ar­dui­no-sketch habe ich hier ge­fun­den.

lei­der war das noch ein biss­chen fum­me­lei, bzw. de­bug­ging. der MH-Z19 kom­mu­ni­ziert über eine se­ri­el­le schnitt­stel­le mit dem ar­dui­no und sen­det auf an­fra­ge eine se­quenz von 9 byte. die bei­den ers­ten zei­gen den sta­tus an, die fol­gen­den bei­den den ge­mes­se­nen CO₂-ge­halt in ppm und das fünf­te byte die teme­pra­tur. der ar­dui­no sketch er­war­tet in etwa die­se se­quenz:

0xFF 0x86 0x3 0x95 0x42 0x0 0x0 0x0 0xa0

der ar­dui­no las aber für die ers­ten bei­den und manch­mal auch das drit­te byte fol­gen­des aus:

0xFFFFFFFF 0xFFFFFF86 0x3 0xFFFFFF95 0x42 0x0 0x0 0x0 0xFFFFFFA0

theo­re­tisch könn­te man hier die hex-wer­te in strings um­wan­deln, die FFFFFF-se­quenz weg­kür­zen und wie­der zu­rück in ei­nen in­te­ger oder den ur­sprüng­li­chen zah­len­wert um­rech­nen. das ist in c+ aber lei­der (für mich zu­min­dest) furcht­bar kom­pli­ziert. nach ei­ner wei­le be­merk­te ich: der sketch wan­delt die fal­schen hex-wer­te auch in zah­len um, al­ler­dings ne­ga­ti­ve. in die­sem bei­spiel byte 3 (0x3) in 3 und 0xffffff95 in -107. 0x95 ist im de­zi­mal­sys­tem eine 149. 149 + 107 = 256, die dif­fe­renz be­trug im­mer 256, wenn die mess­wer­te mit vor­an­ge­stell­tem FFFFFF aus­ge­le­sen wur­den. da­mit war die kor­rek­tur ein­fach: wenn eine ne­ga­tiv de­zi­mal­zahl raus­kommt, ad­die­re 256. mit die­sem hack ka­men die mess­wer­te dann sta­bil raus, vor­her gabs schwan­kun­gen um 256 ppm. das pro­blem tritt bei bei­den MH-Z19 auf, wahr­schein­lich liegts am zu­sam­men­spiel des ar­dui­no mit den sen­sor und der soft­s­e­ri­al bi­blio­thek. ist mir aber egal, läuft ja. mein ang­pass­ter sketch liegt hier: gist.git­hub.com/di­plix/9b…

die mess­wer­te die der sen­sor aus­spuckt sind ziem­lich flott, die an­we­sen­heit eine sau­er­stoff-at­mers ist mit 1-2 mi­nu­ten ver­zö­ge­rung deutch­lich mess­bar. auf die­sem bild sieht man deut­lich, dass ich ge­gen ein uhr ins bett ge­gan­gen bin und das bett ge­gen halb sie­ben wie­der ver­las­sen habe. die of­fe­ne tür sorgt für ei­nen ra­pi­den ab­fall des CO₂-ge­halts, der sich al­ler­dings nach ein paar mi­nu­ten fängt und ab­flacht. um vier­tel nach neun sieht man deut­lich, dass in bei­den zim­mern für 10 mi­nu­ten ge­lüf­tet wur­de.

ei­nen der bei­den sen­so­ren habe ich mit zwei LEDs aus­ge­stat­tet, die grü­ne LED leuch­tet bis ca. 1500 ppm, ab 1000 ppm schal­tet sich die rote LED dazu. da­mit er­kennt man, dass bei 1000 ppm die luft noch in ord­nung ist und es so ab 1500 ei­gent­lich zeit wird zu lüf­ten. die LEDs las­sen sich auch per my­sen­sor-funk ab­schal­ten und der trick, um den sen­sor auch ohne my­sen­sors-netz­werk funk­tio­nie­ren zu las­sen, ohne durch wie­der­hol­te ver­bin­dungs­ver­su­che blo­ckiert zu wer­den, ist die­se zei­le:

bei ama­zon habe ich für ei­nen der sen­so­ren, auf gut glück, eine dose ge­kauft, in die zu­fäl­lig al­les, in­klu­si­ve ka­bel­la­ge, rein­passt.

der an­de­re sen­sor macht es sich der­weil in ei­nem plas­tik­be­cher ge­müt­lich.


ge­kos­tet hat mich je­der der bei­den sen­so­ren un­ge­fähr 20 euro.

  • MH-Z19: 15,00 €
  • NRF24L01 sender: 1,20 €
  • arduino: 2,50 €
  • dose: 1,76 €
  • schrumpfschlauch und LEDs lagen hier noch rum

kom­mer­zi­el­le al­ter­na­ti­ven, wie der El­ga­to Eve Room oder der Netat­mo He­alt­hy Home Coach, kos­ten 70 bis 100 euro, kön­nen da­für aber auch flüch­ti­ge or­ga­ni­sche ver­bin­dun­gen (VOC, sprich, zum bei­spiel, darm­ga­se) mes­sen. sen­so­ren da­für gibt’s auch ei­ni­ge, MP901, GM502B oder der BME680 je­weils für ca. 15 euro oder, auch viel­ver­spre­chend, aber sack­teu­er, der iAQ-core C.

mir ge­nügt erst­mal der MH-Z19 und ich bin ge­spannt was er misst, wenn ich ihn mal in den be­spre­chungs­raum auf der ar­beit mit­neh­me.