[RELEASE] Aqara TVOC Air Quality Monitor

Obviously, there are not many HE users that use the Aqara TVOC sensor...

I have no connection stability issues with any of my Aqara devices, but this depends on a lot of factors and others are not as lucky as me.

I just got mine and connected it today. Will report back.

Current status in Hubitat:

  • Status : clear
  • healthStatus : online
  • humidity : 48
  • temperature : 71.9
  • airQualityIndex : 163
  • airQualityLevel : Unhealthy

I'm curious how the quality level is gauged. Aqara makes no statements about ranges as far as I can tell.

Here's a chart for another indoor quality meter

Source: Understanding TVOC: What You Need To Know About Volatile Organic Compounds

1 Like

The driver currently uses this guide to determine the 'AirQyalityLevel' aka 'IndexCategory' aka 'Levels of Concern'

Probably none of these methodologies apply to this Aqara TVOC sensor ?

The driver currently uses this guide to determine the 'AirQyalityLevel' aka 'IndexCategory' aka 'Levels of Concern'

Gotcha. This unit measures in either µg/m³ or ppb, which (I think) are different than AQI (Air Quality Index). I couldn't find a mention of either a ppb or µg/m³ measurement on the page you shared, nor could I find a direct comparison of AQI to TVOC. I did find this overview of TVOC (and a bit on why it's sometimes problematic) from the site I mentioned earlier: Defining TVOC: Why TVOC Is So Difficult To Explain

It makes me think that Aqara's sensor is probably closer to KaiTerra's in terms of ranges. What do you think?

PS - Thanks so much for putting this together! I'm happy to put together a PR making the adjustments if you agree with making them.

Hi Aaron,

I will be glad to accept a PR or merge your modifications code if you find the best presentation of what this device is sending as raw data. I couldn't find a good solution... For another type of sensor (Ikea's VINDSTYRKA), I finally left only the raw 'sensirionVOCindex' numerical value and removed the 'AirQualityLevel' text attribute, as all users agreed that there is no direct translation between.

This driver uses two library files included in the final Groovy file distributed via HPM.
As the library files are often modified now, I propose that you make your mods in the common Groovy file that includes the library versions working with this driver. I will later compare and merge the changes into the current version.

@kkossev Thank you very much for putting this driver together, there was a recent sale on this sensor and got 3 of them working quite well with my Hubitat C-7 now.

After going down a similar rabbit hole as you and @user716 did, I too came to similar conclusions:

  1. I am not an expert on any of this so if anything looks fishy ... please tell me.

  2. Cross-checking "AirQualityIndex" value reported in Hubitat with the sensor display, it looks like the value is just raw TVOC reading in ppm.

  3. As pointed out above, it's hard to convert ppm to an index as any index I can find uses ug/m3 and not ppm. In order to convert from ppm to ug/m3 it seems you need to know the molar mass of the specific mix being detected ... which is not a capability this sensor provides as far as I can tell. Judging from search results, this is a somewhat common industry problem and various companies have been working around it by making assumptions for the molar mass. In general, i am seeing a factor of somewhere between 3-4.5 being used. In addition to the site above, i also found this to be a good read.

  4. In looking around for this information, I stumbled upon a product page for Frient TVOC sensor, the one Hubitat officially supports. It actually included a scale, by the looks of it they are making the assumption that molar mass is closer to the conservative end of the spectrum above. Conservative seems like a good idea here and while their ranges didn't 100% correlate to the tables in the PDF above, they do generally align and are somewhere in between. So ... I decided to adopt Frient's ranges for my own use:

With that all said, I made some tweaks to your driver code for my own use:

  1. Changed title slightly to distinguish from your version.
  2. Removed GitHub link to prevent loss of changes.
  3. Increased valid range to be reported from 999 to 9999. One of my sensors is on my patio and the first time I started my smoker I realized 999 is far too low as the screen was sitting at 4000+.
  4. Updated the quality designations to align with the image above.

Just wanted to circle back here to thank you all and share in case anyone else finds this useful.

Here is the link to my modifications:
https://gist.githubusercontent.com/maximus8907/8a62c98fc33241ef1e14e5b9439ab420/raw/5cf29372e6afeb5793b2ca94b7bbcca4fa854521/gistfile1.txt

1 Like

Hi @maximus8907 ,

Matching the Aqara TVOC sensor scale to the scale used by Frient TVOC sensor (natively supported in HE) is a very good idea!

I am currently working on another project, but when I have the chance in the next weeks I will test and then merge the changes in your code to the HPM version.

1 Like

Do you have a Frient Air Quality sensor as well?

I do not, unfortunately

Just got this sensor paired with C-7 and running with this driver. How do you all get the TVOC status to show up in a Hubitat dashboard as a tile? I don’t see any kind of templates for air quality. Does that involve making a custom template?

Just tested it with the new EZ dashboard - it shows this way :

image

For the old dashboards, you will need to use a Custom attribute option :

image

Thanks! Will try custom attribute. I’m using a set of heavily customized legacy dashboards. Haven’t even tried EZ dashboards yet.

Just purchased one of the Aqara TVOC and trying to figure out which scale we ended up with on the default kkossev driver. Currently reporting around 170 on the index. Not sure if we are good or I should book a room at the local hospital...

Edit: Looks like the unit had to stabilize and TVOC has been consistently around 25-30. I would still like to confirm what scale this is using.