Skip to content

export: air-quality sensor roles — the unshipped half of #179 #264

Description

@simons-plugins

Split out of #179, which was titled "smoke/CO and air-quality sensor roles" and closed on 2026-08-18 when the smoke/CO half shipped in v2026.23.0 (PR #255). The air-quality half was never built. Closing the whole issue overstated what landed — this issue carries the remainder honestly rather than leaving it buried in a closed thread.

What is missing

The plugin reads AirQuality inbound (matter_handlers/, and the inbound docs list AQI / CO₂ / PM2.5 / TVOC), but an Indigo air-quality sensor cannot be published outbound. There is no airQualitySensor role.

Not simply another numeric sensor — the open design question

The five numeric sensor roles are each one device type carrying one measured value. Air quality is not shaped like that:

  • Matter's Air Quality Sensor (0x002C) carries the AirQuality cluster (0x005B) — an enum (Good/Fair/Moderate/Poor/VeryPoor/ExtremelyPoor), not a number — plus optional concentration-measurement clusters for CO₂, PM2.5, PM10, TVOC and the rest, each its own cluster.
  • Indigo, meanwhile, presents an air-quality device as several separate sensor devices, one per metric, exactly as this plugin's own inbound handler creates them.

So the question this issue has to settle before any code: does one Indigo device become one Air Quality Sensor accessory with one concentration cluster, or do several Indigo devices compose into a single accessory? The second is closer to the truth and much harder — composition is exactly what the #222 no-foreign-clusters constraint made deliberate rather than accidental.

There is also nothing in Indigo to derive the mandatory AirQuality enum from unless the user declares a mapping from their AQI number to the six bands.

Upstream position

@matter/node 0.17.8 ships air-quality-sensor.ts and the concentration-measurement behaviours, so this is not blocked on matter.js — unlike #176 and #177. It is blocked on the modelling decision above and on a device to validate against.

Want this? Post here so we can scope it

  • The Indigo device(s) you would export, and which plugin creates them
  • Which metric matters to you most (AQI band? CO₂ ppm? PM2.5?)
  • Which ecosystem you would pair it into, and what you expect to see there

Part of the export role roadmap — see #181.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UJT3eBiFAYoNRREu9VBcqW

Metadata

Metadata

Assignees

No one assigned

    Labels

    device-supportNew Matter device class / cluster supportenhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions