Through my recent experiences with watching my home's air quality I have come to realize that "Air quality" is a very complex concept. Listening to builders such as Matt Risinger on YouTube, I learned that homes contain lots of "off gassing" products used in their building materials. NASA had a famous study about plants that will absorb some of these household chemicals. This is what got me interested in monitoring "VOC" which are Volatile Air Compounds. (As much as I want to bring up PM2.5 particles that are said to cause health issues, I'll stay focused on VOCs)
These VOCs are numerous chemical vapours and there are sensors that can detect some chemicals like Oxygen or CO... it seems those specific sensors require frequent calibration and replacements.
There are TVOC (Total Volatile Organic Compoounds) sensors such as the BME680 from Bosch. These sensors while they are fairly cheap, and do show changes in the environment they are not precise enough to tell me which chemical is really in the air. Since they are only measuring the TOTAL concentration of all the gasses we aren't measuring a single particular gas. The BME680 has code in ESPHome that reports "CO2 Equivalent", but obviously it isn't really measuring CO2 it is just calulating ((I call it "guessing at") it from an abstract calculated value. Reading some documents from Bosch's forums
As one can see the IAQ number is calculated from "Gas Resistance" (a true value from the device itself) with some other hard coded numbers, which they will not detail. Once we have an IAQ, we can estimate the concentration of CO2 and possibly other chemicals (if we knew how to calculate this) In other words... we are using an estimated number from a vague metric that is calculated from a real value of resistance. Finding this out got me a little dissapointed in that I will not easily be able to use this to find issues in my air quality if it could be almost anything. I did find some really good articles that detail the problem and how these type of sensors work, but basically the sensors are fairly cheap, less maintenance, and while they aren't able to give us precise measurements of gasses they do tell us if something is good or bad.
https://learn.kaiterra.com/en/resources/how-tvoc-sensor-work
https://learn.kaiterra.com/en/resources/defining-tvoc-why-is-tvoc-so-difficult-to-explain
On the other had we have another sensor to give us air quality... we can base the Air Quality on the number of PM2.5 particles! PM2.5 particles are said to be from molds, spores, pollens, fires, exhausts, etc. https://learn.kaiterra.com/en/air-academy/particulate-matter-pm
Another good article on what PM2.5 is... https://www.acsh.org/news/2020/04/03/air-pollution-what%E2%80%99s-so-special-about-pm25-14683
We can calculate Air quality index based on PM2.5 as seen here. Keep in mind this AQI is measuring particles NOT gasses! The key is we see that up to 12ug/m3 in 24 hours is good. Now I don't know if that means maximum exposure of one instance or an average for the entire 24 hours. Many articles haven't really made that clear to me.
So let's summerize what we have talked about so far. We have a group of chemicals that we call VOCs, we have PM2.5 floating in the air particles, Carbon Monoxide and a bunch of other nasty chemicals. The Adafruit air quality monitor project that I put together doesn't monitor all of the chemicals I care about. To monitor other chemicals I need to get MQ type sensors like this MQ7, which is made for detecting CO. Using this MQ-7 sensor appears to be a lot of work as this tutorial shows. Despite the work involved, I think it will be worth writing a custom add on to ESPHome to handle it. There are some that discuss the difficulties of the process, but obviously not insurmountable. Apparently even more people working on it... https://community.home-assistant.io/t/esphome-based-smoke-alarm/110221
I have to point out his other "air quality" and fume project, while is a worthy project in itself, from adafruit says "air quality" but looking at the sensors it is only the VOC component. If you're like me and were hoping it would have also had CO and PM2.5 you'd be dissapointed. This is why I thought it was important to point this out about air quality.
maybe the real different between the VOC type air quality vs the PM2.5 is in the abbreviation? IAQ vs AQI? Originally I thought they were the same, but this may not be the case.
Looking at my home assistant dashboard I can see the IAQ from VOCs and with my particulate sensor I can see the PM2.5 concentration. There are times the IAQ is good, but the PM2.5 is very bad. How I am now interpreting this is that if either one is showing air is bad then I know it's bad.... if both are good... I only know that VOC and PM2.5 is good... I can't tell about anything else. Note that in this image, I captured it at a time when both IAQ and PM2.5 particles aren't great, but not bad, so in this case both are in agreement.
Until I get an MQ-7 sensor set up and calibrated, I'll just stick with any CO sensor I can find on Amazon.
Other interesting links:
https://www.epa.gov/air-trends/air-quality-cities-and-counties
https://www.epa.gov/air-trends/air-quality-national-summary
https://www.apogeeinstruments.com/oxygensensor/
https://learn.kaiterra.com/en/air-academy/particulate-matter-pm
https://pubmed.ncbi.nlm.nih.gov/33924624/
https://www.instructables.com/Arduino-CO-Monitor-Using-MQ-7-Sensor/