Reported by CliveS (with his Claude doing the write-up) after Thread-validating the plugin with an Aqara FP300 presence multi-sensor — commissioning via the share model worked first time (~10s join, all four endpoints, battery fan-out, live attribute reports).
Bug
Value sensors (temperature, humidity, illuminance, etc.) hold readings correctly in sensorValue, but the Indigo device list shows "off" instead of the reading:
"deviceTypeId": "matterTemperatureSensor",
"displayStateId": "onOffState",
"displayStateValUi": "off",
"states": { "batteryLevel": 100, "onOffState": false, "sensorValue": 24.0 },
"supportsOnState": true,
"supportsSensorValue": false
Cause
Same as the colour lesson (HANDOVER 2026-06-09 item 4): Indigo applies Supports* capabilities via creation props, not Devices.xml statics, for API-created devices. It was caught for locks (IsLockSubType), colour (SupportsColor) and meters (SupportsPowerMeter/SupportsEnergyMeter), but the sensor family slipped through — _SensorHandler.create_indigo_devices passes no SupportsSensorValue/SupportsOnState, so Indigo defaults to SupportsOnState=True and derives displayStateId=onOffState. The XML <UiDisplayStateId>sensorValue</UiDisplayStateId> is ignored; the sensorValue that does populate is the XML-declared custom state shadowing the disabled built-in.
Affected types (display = sensorValue): matterTemperatureSensor, matterHumiditySensor, matterIlluminanceSensor, matterPressureSensor, matterFlowSensor, matterAirQualitySensor, matterCO2Sensor, matterPM25Sensor, matterTVOCSensor. Binary sensors (motion, contact, smoke/CO) display correctly via the SupportsOnState default but should set it explicitly.
Fix
Follow-ups (not this fix)
matterButton (display should be lastButtonEvent) and the air-quality string display (airQuality) depend on whether UiDisplayStateId can ever apply to API-created sensor devices — needs hardware testing.
- Thread can be promoted from "expected to work" to validated (Aqara FP300, matter-server 0.6.8).
Reported by CliveS (with his Claude doing the write-up) after Thread-validating the plugin with an Aqara FP300 presence multi-sensor — commissioning via the share model worked first time (~10s join, all four endpoints, battery fan-out, live attribute reports).
Bug
Value sensors (temperature, humidity, illuminance, etc.) hold readings correctly in
sensorValue, but the Indigo device list shows "off" instead of the reading:Cause
Same as the colour lesson (HANDOVER 2026-06-09 item 4): Indigo applies
Supports*capabilities via creation props, not Devices.xml statics, for API-created devices. It was caught for locks (IsLockSubType), colour (SupportsColor) and meters (SupportsPowerMeter/SupportsEnergyMeter), but the sensor family slipped through —_SensorHandler.create_indigo_devicespasses noSupportsSensorValue/SupportsOnState, so Indigo defaults toSupportsOnState=Trueand derivesdisplayStateId=onOffState. The XML<UiDisplayStateId>sensorValue</UiDisplayStateId>is ignored; thesensorValuethat does populate is the XML-declared custom state shadowing the disabled built-in.Affected types (display = sensorValue): matterTemperatureSensor, matterHumiditySensor, matterIlluminanceSensor, matterPressureSensor, matterFlowSensor, matterAirQualitySensor, matterCO2Sensor, matterPM25Sensor, matterTVOCSensor. Binary sensors (motion, contact, smoke/CO) display correctly via the
SupportsOnStatedefault but should set it explicitly.Fix
SupportsSensorValue: True, SupportsOnState: Falsein creation props; binary sensors: the inverse, explicitly._reassert_capability_props) to re-assert these display props on existing devices viareplacePluginPropsOnServer.displayStateIdis stillonOffStateon a later reconcile (Indigo caches it at creation and may not re-derive), log a startup warning naming the device with the remedy: delete the Indigo device and reload the plugin — reconcile recreates it with correct props (no decommission needed).Follow-ups (not this fix)
matterButton(display should belastButtonEvent) and the air-quality string display (airQuality) depend on whetherUiDisplayStateIdcan ever apply to API-created sensor devices — needs hardware testing.