Making CO₂ Sensors Fail Visibly, Not Silently

CO₂ buildup in a living area can be a serious problem, and a sensor that fails quietly cannot be relied upon. [William Collis] addressed this important issue by creating CO₂ monitors built to fail visibly.

[William] has a nice home setup that can monitor CO₂ levels in two places, but noticed an important issue: the system always displayed the last known-good sensor reading. An unchanging, healthy-looking number is good! Unless it isn’t, because a flat unchanging number is also exactly what a dead sensor looks like.

The solution was for [William] to change how the sensors are treated so a faulty sensor isn’t hidden behind apparently-good values, and the sensor itself flashes a visible fault LED in the case of a problem.

Each monitor is a Sensirion SCD30 CO₂ sensor, paired with a Seeed XIAO ESP32-C3 running ESPHome to communicate with Home Assistant, an open-source home automation framework. There was no need to rewrite the ESPHome firmware; all his modifications fit within the context of a configuration file and certainly seem to be improvements over the original.

Sensors that can be relied on are important, but if the system itself needs some ruggedizing maybe consider a homebrewed UPS for Home Assistant.

12 thoughts on “Making CO₂ Sensors Fail Visibly, Not Silently”

  1. Aren’t NDIR a lot more robust than VOC based sensors with chemical sensing agents that degrades over time? Is there really a need for such a visual indication? They last 10+ years (or so they claim)

    1. The one described here is NDIR. So maybe they are not so robust after all.

      Do they degrade with shelf time or is there any way to know their expiration date?

  2. I would have used NodeRed to detect the absence of MQTT messages to set a system alert. That also includes detection of disruptions in the network path. Tasmota on the device itself can provide monitoring functions out of the box to assess the sensor readings’ plausibility.

  3. unlike with carbon monoxide, humans and other animals have a built-in CO2 sensor. it’s that feeling you have that you are smothering. with CO you will happily keep breathing it until you are dead

    1. and even worse with CO it doesn’t immediately fix the problem getting fresh air, it takes many hours for or even days for CO to leave the blood

  4. I faced a similar issue when i put together the tide level + weather + viability sensor telemetry combiners for the docks in Southampton. With no standards to look at (that i was aware of) i ended up going for sensor fault => obviously incorrect incorrect reading. if the tide sensor failed, the control room would get a tide height of -99.9m. If the boats weren’t complaining about the sudden lack of water then it was apparent to even the sleepiest of control room operators that the sensor was at fault.

  5. A signal like “this sensor has failed” should never be active like blinking a LED. It should be passive, like “This light isn’t on”.

    For battery powered devices, it becomes more difficult because they can’t spend energy on maintaining a signal. Nevertheless, there are low power indicators like LCD screens that merely need a charge to show black of white, so you can see whether the device is operating or not.

    1. What? If something breaks or is about to fail an light going out instead of flashing bright red is just stupid.
      You think machines and appliances all around the world did this wrong for centuries?

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.