I-9PSL displays dash/hyphen for PM2.5 intermittently when air quality is good

Hi there, I recently purchased a pre-assembled I-9PSL and I’ve noticed an unusual behavior. It seems like, when I have all my windows shut and my air purifier on, the PM2.5 reading on the display switches intermittently between 0 and –.

Digging into this a little further, the condition seems to be triggered when all the PM readings are zero. For example, when accessing the device via the local server API, this will trigger the issue:

{"wifi":-43,"serialno":"xxxxxx","rco2":560,"pm01":0,"pm02":0,"pm10":0,"pm003Count”:0,"atmp":23.11,"atmpCompensated":23.11,"rhum":52,"rhumCompensated":52,"tvocIndex":125,"tvocRaw":30601,"noxIndex":1,"noxRaw":16683,"boot":782,"bootCount":782,"ledMode":"co2","firmware":"3.1.4","model":"I-9PSL"}

It’s almost as if seeing all zeros makes the device think “hmm, something’s wrong with the PM sensor, I have to reset myself.” When this happens, the display shows “–“ and all the pm values disappear completely from the JSON.

Stuff that I’ve checked:

  1. This does not seem to happen at all when the PM readings are non-zero. I shut off my air purifier earlier today for testing and right now my numbers are holding at around pm01":0,“pm02”:0,“pm10”:0,"pm003Count”:73. The display itself hasn’t gone to “–“ once in the several hours that I’ve been watching it.

  2. The all-zero PM readings do not seem to be the result of a bad sensor reading. I have tested turning my air purifier on/off, opening the windows, lighting a candle, etc. and the PM values seem to rise/fall as expected.

Anyway, I’m wondering if this is normal/expected behavior or if it could indicate some sort of software/hardware issue.

Thank you,
Eugene

This is very helpful information. Could you please open a GitHub issues at: Issues · airgradienthq/arduino · GitHub

This is where our developers look at bugs and fix them and this is also where they then comment on. Thank you!

In general this has been an issue we have been fighting with for quite some time. Normally we show a “-” when we get an error from the PM sensor. It seems that at very very low concentrations the sensor module itself sends that error message instead of the correct (very low) reading.

I think what we have already implemented is a 3x retry in these cases that seem to help a lot but might not catch all cases.

Thank you. For your reference, and others who may see this post, it’s issue #202 (I am not allowed to post links to Github here, apparently, but it should be pretty easy to look up by the number). The bug report also includes a video of the issue plus a log file, in case you’re interested.

It seems a like temporary workaround would be to make my air dirtier, but I don’t like that idea very much. :grinning: