AirGradient Forum

Model number for CO2 calibration?

There was a signed card with QR code, but that had no information about model numbers.

Also, I’m confused about CO2 calibration. If the sensor is left in a high CO2 room for the 1 week sampling period, how will it develop a good reference?

The sensor is expecting 400ppm once in a while and so it will calibrate to the lowest value it has seen during that period. If the room never reaches that level your sensor will be off after a week or so. But you can take it outside if you cannot get that space to lower levels to calibrate.

As you mentioned, if the sensor never gets exposed to 400 ppm, it will eventually get skewed if the Automatic Background Calibration continues to run every 7 days.

For my basement devices, I took them outside and did a ABC to get them accurate, and then I disabled the automatic part so it keeps what it had calibrated when I knew it was outside. ESPhome made this easier to see and configure and seems to be working well for me.

Whoa. Huh, I would assume that it would lock in the lowest value during first calibration and then not… udpate it again. I’ll do something similar with ESPHome once I set that up, thanks @MallocArray .

1 Like

By the way, we are in the last stretches of writing a complete new firmware version for the AirGradient ONE that would include the CO2 calibration into the main firmware. So no more seperate flashing required.

That’s exciting! I’m pretty new to AirGradient, so can you tell me more about what that means?

My use case will be “leave the sensor in my office 24/7”. I’m not sure if I’m supposed to force an auto calibration outdoors before hand, if I should disable the auto calibration once it’s indoors… etc. I imagine my use case is pretty typical, so any guidance on how to best achieve “reliable CO2 monitoring indoors” would be appreciate :slight_smile:

I think in your case I would just let it run non stop. The automatic baseline calibration should work well provided you ventilate the office once a week.

My unit just arrived yesterday, fully assembled, so it may differ from yours - but I noticed there was a sticker on the pack with the model number (I-9PSL and some other stuff). Maybe check and see if yours has something on the back of the housing as well? Good luck :slight_smile:

Didn’t see anything on my housing… maybe there’s been a rev in kitting!

Hm… I think I follow, but I don’t really love the proposed solution. The reason I bought an AirGradient sensor was to know the quality of my air in my office, where I spend a lot of time. Let’s focus on CO2 for this discussion.

  • I want to know the CO2 levels in my office - not relative to the 1 week trailing low, but the absolute.
  • I understand the need for calibration of some kind between when a sensor is assembled into the unit and when it arrives at my home.
  • I am comfortable running an outdoor calibration upon receipt of the sensor in order to make sure the baseline is correct.
  • After establishing this baseline, it makes no sense to me that the baseline should periodically get updated with a 1 week trailing low.
  • You mention that the ABC should work well “provided I ventilate the office once a week”. This implies that if I don’t ventilate the office adequately, the calibration will be off. But how will I know if the calibration is off? If the sensor is happily reporting low values, I’ll assume that the air is good. It doesn’t make sense to have the source of truth get overwritten periodically.
  • @MallocArray mentioned that forcing a calibration isn’t supported on the ONE? So what’s my solution? It kinda sounds like right now my best option is “leave it outside for one week then disable ABC”. If this is the case, please confirm. If not, please advise on how to achieve my desired functionality - which I don’t think is that out of the norm.
  • By the way, I really hope the best solution isn’t “leave the sensor outside for a week”. Hoping there’s a way to force a calibration per this help guide.
  • Is the linked guide actually accurate? If not, maybe it should have a note saying as much.

Thanks in advance.

2 Likes

The 1 week automatic baseline calibration is a default feature of the Sensair S8 sensor, who is the manufacturer, so they think this is best. Not a decision started by AirGradient, but since they use this sensor, it is a fact of life.

The ABC can be disabled, as well as triggering a manual calibration. At this time, the functionality is not included in the AirGradient Arduino code that comes with it, but a rewrite of the firmware is being done now and will be available “soon”

The linked guide for using the AirGradient Dashboard to do a manual CO2 calibration is not functioning for the ONE devices at this time. They used to sell a closed-source model this worked with, but the functionality has not been made available to the ONE which is open-source (even though there is a checkbox on the dashboard, which I agree is a poor user experience, along with the misleading Blog post)

There is a separate Arduino sketch you can upload to your device to do a manual CO2 calibration, but it does take several steps and then you have to flash back to the standard firmware, but a doable process:
arduino/examples/C02_CALIBRATION/C02_CALIBRATION.ino at master · airgradienthq/arduino (github.com)

If you want to try out the ESPHome firmware that I maintain, it has buttons in HomeAssistant to kick off a manual calibration when you choose (or can use the hardware button to do the same) and has a switch to enable/disable the ABC. No need to leave outside for a week. I just brought all of mine outside for 5 min and did a manual calibration earlier this week because it is getting cold where I am and wanted to get them all calibrated together.

Nothing is calibrated for life. When you buy a sensor it needs a climatize to your environment, you acknowledge that but after a while it ‘can’ be off. Temperature and humidity are reasons the sensor changes its readings slightly but also other reasons hence why moving and shipping can offset it for first use. The nice thing of this ABC calibration is that it tries its internal value to calibrate to 400ppm, a value generally accepted around the world at this point of time. So you always have a quite accurate measurement even when the sensor has been far off what it should be at some point. (Even a simple temperature sensor needs to be calibrated btw and so its value is always relative to the absolute.)

That said, for co2 measurments in a room you dont need 1ppm resolution to know if the environment is still healthy. So when you reach 1000ppm even with a variation of 50ppm(or 5%) for example you know you should ventilate the room. If you think you need better measurements and more accuracy you need to look into much more expensive metrology equipment which the airgradient is not.

It is pretty late here and these are really important issues. I will respond tomorrow with more details.

First of all sorry for the confusion with the CO2 calibration. I just did the following to improve the current situation:

  • The checkbox for CO2 calibration on the AirGradient dashboard is now only shown for the previous generation that supports it until we have that functionality implemented in the v9 firmware
  • I added this information to the support article on our website

I also spoke to our firmware developer for the new v9 firmware and he is in the last stretch of development and expects to have a first version ready in a few days. Then we need to do some testing before we release it. If anybody interested to be beta tester please let me know.

This release will then include the CO2 calibration feature as well as a few other missing pieces, e.g. configuration of the LED bar and display via the dashboard.

I’m also curious about @ichiban’s question/issue “After establishing this baseline, it makes no sense to me that the baseline should periodically get updated with a 1 week trailing low.”

Can someone at AG or someone with more knowledge about the sensor explain why re-calibrating against a 1 week trailing low is the best default? For example, does post-calibration drift occur so fast that, if it was calibrated much less frequently (say, once a year), it would be inaccurate?

Stated another way, could it use the lowest value in the last 3 months instead of the lowest in the last 1 week (if it can stay calibrated for 3 months), or only calibrate when explicitly requested? I don’t know enough about the typical usage to propose the sanest default, so please take my comments with a grain of salt. That said, 1 week seems like a fairly short lookback period (plenty of rooms have bad airflow, especially in cold winters), and if the sensor can maintain calibration for months, a longer lookback period seems like a better default.

Alternatively, if the longest possible lookback period is 1 week, maybe let users choose the calibration mode based on the property of their room? For example, imagine 2 radio buttons on the sensor settings page:

Does this room receive plenty of outside air at least once a week, all year? Learn more

( ) Yes, my room gets plenty of outside air at least once a week, all year around. Automatically re-calibrate it to the lowest CO2 value seen in the past week.
( ) No, my room is sometimes closed up for a week or more or may have poor circulation. Don’t re-calibrate it automatically.

If the user chooses the second option, disable auto calibration and email the user a reminder once a year or however often it’s needed, or at least show the date of last calibration in red in the Dashboard when it’s past the recommended frequency.

1 Like

Basically all NDIR CO2 sensors (e.g. Cubic, Winsen, SenseAir, Sensirion etc) have ABC calibration. Some even daily which poses a much bigger issue. One of the reasons we chose the S8 was that it is NOT daily but weekly.

I think the biggest issue is if the place that is monitored has no regular fresh air circulation e.g. low energy houses, basements or permanently occupied spaces.

I put onto our roadmap a feature to disable the ABC completely (one that @MallocArray ESPHome implementation already has) and I have also asked my contact at SenseAir to send me more information about the expected drift if ABC is switched off. I am also checking if we can set a custom ABC period (e.g. one month).

I will let you know once I hear back.

@troy I like your UI proposal. Actually we deployed two front end developers recenly and one of their focus is to make the UI and especially the onboarding more user friendly.

2 Likes

That sounds like a great plan. Thanks!

I had a good meeting with SenseAir. They have some long term studies about the drift of the sensor when ABC is switched off. On average it looses only 5-15 ppm per month. So it means a longer baseline calibration eg 6 months would be totally doable.

1 Like

Excellent.

Here’s a casual attempt to test how realistic it is to calibrate using indoor air during a period when people aren’t in the room (ie, treating the weekly low like it’s 400 or so). These charts show CO2 readings in a bedroom during two periods:

  1. When nobody has entered the entire house (approx 40 hours)

  2. A bedroom usage pattern that’s probably at the low end of typical for a bedroom: occupied at night by 1 person, no one present during the day (someone might enter for a few minutes occasionally, but it isn’t used for other purposes). Although it does have some airflow from other spaces that may be occupied during the day, there’s no fan or other intentional air exchange.

Here’s the chart. From the start of the period until about 5 AM before the period where readings start to flat-line, the occupancy pattern is #2 (typical bedroom). From 5 AM that day until 9 PM the next day, the occupancy pattern is #1 (completely empty structure). After that, back to pattern #1 (empty).

The lowest reading is 418, and that level is reached after 27-28 hours of pattern #1 (empty). During periods when the space is only occupied at night, the lowest readings are 480 and 488.

A couple takeaways:

  • At least for this room, other than everyone vacating the house for multiple days (travel), it’ll probably never get under 480 in a typical week. Of course, it will occasionally when a window is opened, but outdoor temperature often makes that unrealistic.

  • On one day (chart day 2), the daytime low is 530. For a slightly different room or a slightly different occupancy pattern, a room may not go under 530.

I’m sure it’s a completely different story for, say, a school where classrooms are completely empty all weekend. But for home use, I don’t think ABC on a weekly basis was ever realistic.