BME680 for air quality: usage and interpretation

Good morning,
I’ve got a BME680 and I’m not afraid to use it! But I don’t know if I’m using it “right” and not sure how to interpret the reading(s). (More on setup below.)

results so far

I ran it about a day in a bedroom and the values for IAQ seem to have a floor at about 27 and at times ranged up to about 100 and even hit 130 when I turned in. (Did it detect ETOH from my nightcap?) The next day I put it outside where it meandered between about 27 and 75. Around midnight it climbed to about 200 and held near there until about 8:00 AM when it started to drop and meander once again. In the last hour it’s ranged between 24 and 63. My google searches did not find anything that I felt confident about to interpret this reading. At the moment our AQI is 27 and the dominant pollutant is PM2.5 (particulates, not measured by the BME680.) I’m curious if anyone using this sensor has any insight into it’s application and interpretation.

Thanks!

my setup

I first tried the pimoroni python script and then began working on the BSEC library produced by Bosch, the sensor manufacturer. I found a repo on Github with sample code that used the Bosch library. It was a bit outdated and didn’t produce output in the format I wanted so I forked it at https://github.com/HankB/bsec_bme680_linux. The primary change I made was to copy the original C file and modify the output to use JSON format which seems to be suitable for usage by Home Assistant. I have a bunch or Raspberry Pi Zeroes publishing various readings via MQTT so it made sense to me to do the same with this. I could have added paho-mqtt to the C program (or a helper Python script) but either requires additional programming and while I enjoy that, it seemed expedient to just use mosquitto_pub to manage publishing to my broker. The C program (bsec_bme680_json) reports results via callback at 3s intervals. I really want the results at 1/minute intervals, at least for now. I wrote a Python script skip_publish.py that reads standard input and publishes every 20th line to the MQTT broker. (Again, could have used the Python module paho-mqtt to do this but would have required coding connection logic, handling reconnects, etc …) My implementation at present is kicked off by a cron entry

@reboot /home/hbarta/bin/bsec_bme680_json | /home/hbarta/bin/skip_publish.py >>/tmp/bme680.err 2>&1

Incidentally I run a separate MQTT broker (mosquitto.) I think that Home Assistant has a built in broker, but I was using mosquitto before I started using Home Assistant and they seem to play well together so I just keep doing it that way.

I was really disappointed when I scrolled to the bottom of the post and saw no discussion. if you ever find out any info I would be interested also.

1 Like