Custom Data Processor Schema

Hi there, I am new to Purple Air in general, but wanted to dig in and generate my own graphs and my own dashboard. I’ve been poking around at the nicely documented https://api.purpleair.com/ and then figured a custom data processor is most likely better for my project, so I configured that and get a payload similar to:

{
    "SensorId": "44:17:93:1:e8:e6",
    "DateTime": "2022/10/01T16:28:57z",
    "Geo": "PurpleAir-e8e6",
    "Mem": 12600,
    "memfrag": 31,
    "memfb": 8528,
    "memcs": 768,
    "Id": 4928,
    "lat": 39.4422,
    "lon": -119.726196,
    "Adc": 0.07,
    "loggingrate": 15,
    "place": "outside",
    "version": "7.01",
    "uptime": 592267,
    "rssi": -70,
    "period": 120,
    "httpsuccess": 29728,
    "httpsends": 29779,
    "hardwareversion": "3.0",
    "hardwarediscovered": "3.0+OPENLOG+31954 MB+RV3028+BME280+BME680+PMSX003-A+PMSX003-B",
    "current_temp_f": 64,
    "current_humidity": 30,
    "current_dewpoint_f": 32,
    "pressure": 866.14,
    "current_temp_f_680": 63,
    "current_humidity_680": 31,
    "current_dewpoint_f_680": 32,
    "pressure_680": 865.12,
    "gas_680": 69.49,
    "p25aqic_b": "rgb(1,228,0)",
    "pm2.5_aqi_b": 7,
    "pm1_0_cf_1_b": 1.16,
    "p_0_3_um_b": 401.47,
    "pm2_5_cf_1_b": 1.79,
    "p_0_5_um_b": 105.25,
    "pm10_0_cf_1_b": 1.79,
    "p_1_0_um_b": 12.53,
    "pm1_0_atm_b": 1.16,
    "p_2_5_um_b": 0,
    "pm2_5_atm_b": 1.79,
    "p_5_0_um_b": 0,
    "pm10_0_atm_b": 1.79,
    "p_10_0_um_b": 0,
    "p25aqic": "rgb(1,228,0)",
    "pm2.5_aqi": 9,
    "pm1_0_cf_1": 1.74,
    "p_0_3_um": 454.66,
    "pm2_5_cf_1": 2.22,
    "p_0_5_um": 124.48,
    "pm10_0_cf_1": 2.53,
    "p_1_0_um": 11.53,
    "pm1_0_atm": 1.74,
    "p_2_5_um": 1.38,
    "pm2_5_atm": 2.22,
    "p_5_0_um": 0.38,
    "pm10_0_atm": 2.53,
    "p_10_0_um": 0,
    "pa_latency": 275,
    "response": 201,
    "response_date": 1664641737,
    "latency": 355,
    "key1_response": 200,
    "key1_response_date": 1664641732,
    "key1_count": 5480,
    "ts_latency": 6446,
    "key2_response": 200,
    "key2_response_date": 1664641733,
    "key2_count": 5481,
    "ts_s_latency": 490,
    "response_b": 200,
    "response_date_b": 1664641617,
    "latency_b": 3485,
    "key1_response_b": 200,
    "key1_response_date_b": 1664641734,
    "key1_count_b": 5483,
    "ts_latency_b": 469,
    "key2_response_b": 200,
    "key2_response_date_b": 1664641736,
    "key2_count_b": 5482,
    "ts_s_latency_b": 531,
    "wlstate": "Connected",
    "status_0": 2,
    "status_1": 2,
    "status_2": 2,
    "status_3": 2,
    "status_4": 2,
    "status_5": 2,
    "status_6": 2,
    "status_7": 0,
    "status_8": 2,
    "status_9": 2,
    "status_10": 1
}

Is there any documentation on what all of these fields mean? These values seem to have very little overlap with what fields are available from the actual API. Lots of these are extremely ambiguous like status_1, etc.

I’ve struggled to find any references to these or documentation on the schema.

Thanks!

I cracked the code of the status_* fields today – they encode the configuration of the subsystem status lights at the bottom of the PA’s internal web page. From left to right, 0 = gray, 2 = green, 3 = red.