Currently a stub. Need to move post text here. This is more about sensor modules, but I’ll add tips for devices later (e.g. aranet4).

my recommendations

  • SCD40/41 (NDIR) are great sensors with reasonable logic around automatic calibration.
  • SenseAir Sunlight CO2 (NDIR) is what aranet4 uses and is pretty good.
    • SenseAir S12 (NDIR) is probably good but I didn’t test it.

my concerns with other sensors

SGP30 (MOX)

(also applies to other metal oxide sensors, such as CCS881)

From my fedi post from Jan 2024 https://web.archive.org/web/20251110161506/https://queer.party/@ao/111779978098588711

Quote

I talk shit about eCO2/CO2eq sensors a lot, and sometimes think if I’m being too mean. I think I’ll make a quick thread on it so I can reference it in the future.

I got an SGP30 TVOC/CO2eq sensor (for the TVOC part) yesterday, and I set it up and calibrated it today. I even fed it the absolute humidity data it can use to output better data.

Here’s it compared to a proper CO2 sensor:

The SGP30 is a MOX sensor, which has a little metal plate in it that changes conductivity based on oxygen molecule absorption, and is relatively inaccurate for anything that it wasn’t designed for.

The other datapoint is my SCD41, which uses NDIR technology. It utilizes CO2’s IR absorption rate to calculate CO2 levels and is fairly accurate.

The fact that it’s aligned not on CO2 but some other metric is very clear when you consider that it thinks that it’s 400ppm (near impossible) even after being calibrated for 12 hours while being exposed sufficiently to outdoor air.

You can also just look at the TVOC data that this thing outputs and put two and two together:

And besides, even sensirion, the manufacturer of both sensors I’ve mentioned states that MOX sensors aren’t very accurate even for TVOC: https:// sensirion.com/media/documents/D27F03C0/6294E00F/Info_Note_Output_MOX_Sensor.pdf

Yet they claim on the datasheet that CO2eq data is “accurate to 1-31ppm”, which is very clearly wrong if their comparison point is actual CO2.

If you care about measuring actual CO2, these sensors are not just useless, but potentially dangerous if you’re basing your decision to wear a mask or not on the data they output. One’s perceived air quality is likely more accurate than these sensors.

The datagnome.de team switched to SCD41 from SGP30 sensors thanks to a generous donation at 37c3, and you can see the exact same pattern of wild, short peaks alongside long time periods of 400ppm there too: (first image: SGP30-by-the-end gnomes, second image: SCD41-by-the-end gnomes, you can see at least in the second image the data quality change as one of the gnomes gets the sensor swapped mid-event)

Anyhow, this also goes for other popular cheap eCO2 sensors such as CCS881, which also use MOX technology. They’ll be similarly inaccurate. Don’t use them for measuring actual CO2 unless you’re doing it to marvel at just how far it can diverge.

MH-Z19 (NDIR)

From last post on https://web.archive.org/web/20251110161506/https://queer.party/@ao/111779978098588711

Quote

Not all NDIR-based sensors are good as the automatic calibration algorithm is a key part of them functioning ideally. Unless you’re airing the room down to 400ppm regularly, something like MH-Z19 will randomly jump down to 400ppm if you leave automatic baseline calibration on (picrel), and calibration will drift if you don’t. And they suck for manually calibrating. I like the SCD41, SCD30 is good too.

SEN63C/STCC4/IKEA Alpstuga (Thermal Conductivity)

See https://social.treehouse.systems/@ave/116201778914676109

TODO: add graphs