AirGradient Forum

Pollutant LED Status lights for O-1PST Outdoor monitor

This will be my 2nd year using the outdoor monitor. I bought the kit, assembled and have been quite satisfied thus far.

I have an idea for a project I’d like to implement. While the AG ONE has LEDs that indicate the pollutant level, I would like to add a similar functionality for my outdoor monitor. I am envisioning purchasing and utilizing something like this tricolor industrial warning light

mounted outside near my air sensor, so I can simply look outside and see an indication of PM 2.5.

Has anyone here done something similar? I need to dig into the documentation and decide which design path to take. Perhaps I can directly wire into the monitor and use a canbus chip as a controller. Or maybe I should keep the units separate, use something like a Raspberry Pi, and call the API data to control the light.

I’d appreciate any help or ideas.
Thank you!

1 Like

Hi @w00dr457, welcome to our community. Sounds like a fun project!

For me, I’d go with the separate unit path as it seems to be easier for me (since I have never worked with the CAN bus, it looks interesting to study and try though).

With a separate unit (like a Raspberry Pi), I think it could give you more flexibility in the project (but also more expensive). The local API of the AirGradient Open Air is easy to work with. You can also set the monitor’s configurations via the local API.

This is what it’s like to GET from the local API endpoints from my AirGradient ONE (the Open Air and the ONE share the same firmware, so the approach is identical):

GET http://airgradient_SERIALNUMBER.local/measures/current

{
  "pm01": 2.83,
  "pm02": 7.5,
  "pm10": 7.67,
  "pm01Standard": 2.83,
  "pm02Standard": 7.5,
  "pm10Standard": 7.67,
  "pm003Count": 453,
  "pm005Count": 382.67,
  "pm01Count": 72,
  "pm02Count": 5.67,
  "pm50Count": 0.83,
  "pm10Count": 0.83,
  "pm02Compensated": 6.39,
  "atmp": 28.43,
  "atmpCompensated": 28.43,
  "rhum": 58.92,
  "rhumCompensated": 58.92,
  "rco2": 784.33,
  "tvocIndex": 42.58,
  "tvocRaw": 30376.67,
  "noxIndex": 1,
  "noxRaw": 15052.83,
  "boot": 2,
  "bootCount": 2,
  "wifi": -54,
  "ledMode": "co2",
  "serialno": "xxxxxxxxxx",
  "firmware": "3.7.0",
  "model": "I-9PSL"
}

GET http://airgradient_SERIALNUMBER.local/config

{
  "country": "TH",
  "pmStandard": "ugm3",
  "ledBarMode": "iaqs",
  "abcDays": 8,
  "tvocLearningOffset": 12,
  "noxLearningOffset": 12,
  "mqttBrokerUrl": "",
  "httpDomain": "",
  "temperatureUnit": "c",
  "disableCloudConnection": false,
  "extendedPmMeasures": false,
  "configurationControl": "local",
  "postDataToAirGradient": true,
  "ledBarBrightness": 100,
  "displayBrightness": 100,
  "offlineMode": false,
  "monitorDisplayCompensatedValues": false,
  "cellOperators": "",
  "cellOperatorId": 0,
  "cellOperatorFailCount": 0,
  "model": "I-9PSL-DE",
  "corrections": {
    "pm02": {
      "correctionAlgorithm": "custom",
      "slr": {
        "intercept": 0,
        "scalingFactor": 0.016522,
        "useEpa2021": true
      }
    }
  }
}

Here’s the local API documentation for AirGradient ONE and Open Air: firmware-one-openair/docs/local-server.md at master · Open-Air-Foundation/firmware-one-openair · GitHub