AirGradient Forum

Measurement values for the AirGradient One TVOC readings?

I’m glad you’re checking. For now while you’re figuring this out, what do you think about un-publishing the blog post?

IMO, someone who reads that blog post is actually more likely to think AirGradient’s sensor can do things it can’t do[1], because the 2 examples are at best optimistic and at worst, not currently possible. They aren’t representative of what’s actually realistic, yet if someone reads them, they’ll think “Yeah, cool, these examples are what I’m trying to do.”

Also, a reader would leave without understanding the two big weaknesses that were surprises to folks in this thread. It explains other weaknesses of MOX sensors (that they detect some harmless compounds too and can’t tell the difference), but I think should include something like this, near the top where it’s impossible to miss:

What can’t the TVOC sensor tell you?

The size of a VOC change (big vs. small increase/decrease). All measurements use relative values. The values are relative to the average over the past 24 hours, but that average is not available in absolute terms. As a result, there is no way to tell whether an increase or decrease that seems big in relative terms is actually large in absolute terms.
Whether or not a change in VOC content is still present. VOC measurements are relative to the VOC content over the past 24 hours. If VOCs in the air increase, values will go up. However, in the subsequent 24 hours following the increase or decrease, the new VOCs will gradually be incorporated into the the baseline. After 24 hours, they will be part of the baseline, so there is no way to tell whether they are still present.

… possibly with a link to this forum thread for readers who want to learn more.

If you would prefer to leave the blog post up, maybe add that near the top.

[1]: Based on the information in this thread. If someone disagrees, feel free to refute what’s been written.

While I don’t fully understand their code and what it is doing, I do know that raw values are not necessarily the same as absolute values of TVOC concentrations. I assume they are exactly what they say, raw measurements from the sensor in regards to change in resistance that are then used to determine the index.

It would be interesting to make up some code to get it to display just the raw value and see what they look like, but nothing I’m planning on doing anytime soon.

As your quote from the spec sheet states, they are related to the resistance and are used to determine the index value, which is what this sensor is intended to output.

I wouldn’t be in favor of unpublishing the blog post as I don’t see the problem with it. (Note, I’m not part of the official AirGradient team)

Sure, there is some nuance that isn’t included in it, but it also isn’t a spec sheet that explains every facet.

If I’m painting a room and see the VOC index spike, I can ventilate the room until I see it go down, which I can do in less than 24 hours. If I’m cooking and see a huge spike, I see it correlate with PM2.5 increases and ventilate until both are reduced.
I know a user posted here in the forum that showed spikes multiple times a day that ended up being hand sanitizer use, and maybe they be more aware of where and how they are using it, or choose to get a different product.

So it does provide value, but I also see my numbers fluctuate 50-175 pretty regularly that I can’t account for, so I take all of it with a grain of salt, which is also mentioned in the blog post about not being able to determine between harmless and bad VOCs

Oh, thank you! I hadn’t even realized there were additional sensor columns available in the dashboard - now I’ve turned them all on :slight_smile:

The highest ind40 measurement I see is 489 at 11am this morning (so within the 1-500 scale, as expected) - which incidentally corresponds with a peak of 1419 on ind30.

I will continue to watch this discussion as it is very interesting! Thank you all again.

I agree I think there is a lot of information in there that is good to know now even we are in the process to investigate this further. But I will add a link to this discussion so that people who want more context or have questions are directed to here.

I looked again at the ESPHome options for the SGP4x sensor, and I’m not sure if they were recently added, or I just wasn’t paying attention, but there are a whole host of options to tweak the learning offset hours, gain hours, index offset, etc. So with that firmware there is the option to tweak the defaults.

SGP40 Volatile Organic Compound Sensor and SGP41 VOC and NOx Sensor — ESPHome

1 Like

I am in touch with Sensirion and they asked me to send them the questions we have.

Mine are:

  • What exactly is the SVOC_RAW signal. How can this be used an an absolute indication of the VOC amount?
  • What is the typical drift of the raw signal out of the box?
  • Is the raw signal humidity and temperature compensated?
  • How to use the VOC index to detect longer term higher VOC concentrations?

Please let me know questions you might have and I can also address it.

I know the ESPHome module for the SGP41 allows you to provide the temp and humidity sensor data for compensation. Does the Arduino code take the same thing into account?

I found this interesting. Last night I had someone try out alcohol inks for an art project in the basement where the top two AirGradient devices with SGP41 devices are located. You can see an immediate spike up to 500 and it is still drifting down 14 hours later.
In the lower graph, I have an Ikea sensor with an added SGP30 that does give values in ppb and also saw a similar spike. This sensor is located upstairs, so the VOCs almost instantly circulated around the entire house. (HVAC fan was running) although it recovered to near baseline levels in under 8 hours.

I am actually currently doing some similar experiments with the raw signal but still figuring out the best setup for the experiment.

1 Like

In regards to the person talking about styrene and ASA printing.

I have an IKEA VINDSTYRKA about 50 feet from my basement office. It uses a Sensirion SEN54 internally which uses a similar VOC index.

When printing ASA, I typically shut my door and have HA turn my air purifier on high. Tonight, I went into the office while printing ASA and forgot to shut the door behind me and this was the result on the sensor.

When in my office, I can smell the styrene and if I stay too long my throat gets scratchy and I get a strange metallic taste on my tongue. I mention this, because in my office the VOC sensors in my Dyson fan barely register anything. Which leads me to believe not all VOC sensors will detect styrene.

My AirGradient is in the process of being delivered to me, and I am bummed to find out about this rolling 24 hours as I mainly bought it to monitor the gas output from my 3D printer.

@Achim_AirGradient, could you give an update about your conversations with Sensirion and experiments? I think the core questions were about measuring absolute values (or something closer to it), and explicitly calibrating the baseline instead of using a short rolling baseline. Thanks.

I purchased the airgradient one to measure tvoc levels with a filtration hood i’m designing and stumbled upon this thread with the same issues as others. Fortunately the beta firmware just released exposes the raw data which looks like sensor resistance? 29000-31000? I charted these numbers during prints and they seem to mirror the air quality index (ind40). I would have expectd these numbers to be much more different? The first giant spike is printing ABS in a small enclosure with no filtration, the second large spike is printing abs with a filtration system. the absolute last large spike just before the chart ends is printing with zero filtration again and it reads as if I was using filtration. I’m really not sure what to do with this data.

top is raw data
bottom is ind40

I think it looks like intended. Short term spikes will have similar curves on both the raw signal and the index.

The divergence would come if you for example put the monitor into a box with high VOCs. Then within 24h, the index number should slowly reduce to 100 whereas the raw value would stay on a similar level.

I think the part i’m struggling to understand is that ind40 readout is based on the air-gradient being on already for 12 hours. The first and last spike of the raw data is running an unfiltered print with the same material and conditions, but the raw data’s last spike isn’t anywhere near the raw data’s first spike and looks more like a reflection of the ind40 data which is a gradual decline due to the rolling 24 hour window. I’ll do some more tests that show what I’m talking about. It could be a fluke, but what I’ve seen so far is that the raw data mirrors the ind40 data no matter what, I’ll verify this on the beta firmware and report back if you’re interested.

I’m just learning this stuff, so I may be a bit confused as well.

Okay, reran tests and it looks like a fluke. It’s behaving as you described, thank you so much for the reply. Is there any chance we’ll get to see the raw data in the airgradient cloud app in the future?

Yes it will most likely get integrated into the dashboard but will take a bit of time cause we have quite a big backlog of other issue and features to implement.

1 Like

I’ve had the data up in home assistant for a while and noticed that tvoc PPB is only present in the airgradient cloud when you export data and doesn’t seem to be published off the device as far as I can tell. Does anyone know where that comes from or how it’s calculated?

The ind30 is a conversion to be compliant with building standards that use ppb values.

More information here:

1 Like

Thank you! Sorry to keep poking away at you, but I finally got all the airgradient data into a dashbord in HA. I vaguely recall reading or hearing that the temperature and humidity module are used to correct/adjust the AQI, but I can’t find where I read or saw that. I have both an Ikea vindstyrka with sensirion hardware and the airgradient one showing that with rising temperature in a controlled space that the aqi also rises as the temperature rises. Should this be the case?

Depending on what code you are using on your AirGradient to send to HA, it may be using the Temp/Hum for a compensation. My ESPHome configuration does for sure. I’m not sure if the Arduino code does or not:

sensor:
  - platform: sgp4x
    # SGP41 https://esphome.io/components/sensor/sgp4x.html
    voc:
      name: "VOC Index"
      id: voc
    nox:
      name: "NOx Index"
      id: nox
    compensation:  # Remove this block if no temp/humidity sensor present for compensation
      temperature_source: temp
      humidity_source: humidity