A belated thanks for the links to the documentation - very useful.
I noticed the discrepancy a few times again recently so tried to note down the values on the AirGradient display, Home Assistant and the local API (/measures/current):
| Time |
Display: PM2.5 |
HA: PM2.5 |
API: pm02 |
API: pm02Standard |
API: pm02Compensated |
| 2026-02-10 12:36:12 |
|
|
34.67 |
38.83 |
21.03 |
| 2026-02-10 12:36:26 |
|
20.68 |
|
|
|
| 2026-02-10 12:36:44 |
36 |
|
|
|
|
| 2026-02-10 12:36:58 |
|
25.40 |
|
|
|
| 2026-02-10 12:37:06 |
|
|
34.67 |
38.17 |
21.04 |
| Time |
Display: PM2.5 |
HA: PM2.5 |
API: pm02 |
API: pm02Standard |
API: pm02Compensated |
| 2026-02-10 14:01:41 |
|
6.15 |
|
|
|
| 2026-02-10 14:01:46 |
|
|
10.33 |
10.33 |
6.15 |
| 2026-02-10 14:01:52 |
10 |
|
|
|
|
| 2026-02-10 14:01:58 |
|
|
9.83 |
9.83 |
5.89 |
| 2026-02-10 14:02:07 |
|
6.15 |
|
|
|
| 2026-02-10 14:02:21 |
11 |
|
|
|
|
| 2026-02-10 14:02:26 |
|
|
11.67 |
11.67 |
6.85 |
| 2026-02-10 14:02:30 |
|
7.12 |
|
|
|
| 2026-02-10 14:02:45 |
13 |
|
|
|
|
| 2026-02-10 14:02:49 |
|
7.12 |
|
|
|
| 2026-02-10 14:02:56 |
|
|
13.17 |
13.17 |
7.65 |
| 2026-02-10 14:04:06 |
9 |
|
|
|
|
| 2026-02-10 14:04:12 |
|
|
9.33 |
9.33 |
5.65 |
| 2026-02-10 14:04:17 |
|
7.38 |
|
|
|
| Time |
Display: PM2.5 |
HA: PM2.5 |
API: pm02 |
API: pm02Standard |
API: pm02Compensated |
| 2026-02-11 12:35:51 |
|
|
12.17 |
12.17 |
6.88 |
| 2026-02-11 12:36:08 |
|
6.19 |
|
|
|
| 2026-02-11 12:36:16 |
|
|
12.83 |
12.83 |
7.25 |
| 2026-02-11 12:36:21 |
13 |
|
|
|
|
From this it appears that:
- The Display value on the device screen is consistent with/closest to the local API value for
pm02 or perhaps pm02Standard (it is hard to tell which as these are usually the same).
- The HA value is closest to the local API value for âpm02Compensatedâ.
This is despite my config (/config) having "monitorDisplayCompensatedValues": true,:
{
"country": "TH",
"pmStandard": "ugm3",
"ledBarMode": "pm",
"abcDays": 8,
"tvocLearningOffset": 12,
"noxLearningOffset": 12,
"mqttBrokerUrl": "",
"temperatureUnit": "c",
"configurationControl": "local",
"postDataToAirGradient": true,
"ledBarBrightness": 100,
"displayBrightness": 100,
"offlineMode": false,
"monitorDisplayCompensatedValues": true,
"model": "I-9PSL-DE",
"httpDomain": "",
"disableCloudConnection": false,
"extendedPmMeasures": false
}
But might be because it has no corrections configured?
I think if I could work out which âcorrectionsâ are being used for pm02Compensated and apply them to my config, the Display should then pick them up and be (more or less) in line with the HA value?
@Ethan_AirGradient
Is my understanding correct or am I still missing something?
Ideally (as mentioned before) from a UX perspective:
- the default value for PM2.5 used for the HA integration should match that on the Display screen;
- the âcorrectionsâ/calibration should only need to be applied once, and reflect across both the Display screen, the local API and the default value for PM2.5 used for the HA integration.