Formaldehyde value on smart things app always 0

I add a Dyson purifier to smart things app by scan matter QR code. Then I find from the purifier I can see formaldehyde value is 0.002mg/m3 but from smart things the value always 0.

This looks like a SmartThings Matter driver issue.

The value shown by Dyson is 0.002 mg/m³, which is a very small, but still valid, formaldehyde reading. When converted to ppm, that is only around 0.0016 ppm under typical assumptions.

The current SmartThings Matter Sensor Edge driver seems to handle formaldehyde by targeting ppm, and the conversion/rounding logic appears to round very small ppm values too aggressively. So a small but valid value like this can easily end up being displayed as 0 in the SmartThings app.

There is also another detail: formaldehyde is often reported in mg/m³ or µg/m³, and converting that to ppm is not a simple generic unit conversion. It depends on the substance itself. For formaldehyde, the driver should either keep the value in mg/m³, which the SmartThings capability supports, or convert it properly while preserving enough decimal places.

So the likely chain is:

Dyson reports: 0.002 mg/m³
SmartThings driver: converts/handles it as ppm
Rounding happens: value becomes 0
SmartThings app: displays 0

In other words, the formaldehyde value is probably there, but SmartThings is losing the useful precision before it reaches the app.

This should probably be reported as a bug in the SmartThings Matter Sensor Edge driver. (Edit: done) The fix would be to handle formaldehyde values in mg/m³ directly, or at least avoid rounding sub-ppm values to whole numbers.

BTW: the Matter specs don’t specify the units for formaldehyde, as far as I can see. Looks like Home Assistant is leaning to mg/m³, the most common unit.