Sensors: entries can now name AirQualityMetrics fields (pm25_standard,
pm100_standard, particle counts, co2, formaldehyde, VOC/NOx index, ...)
as well as EnvironmentMetrics fields.
- CommandSensorFields gains an AirQualityMetrics table and messageFor(),
which says which telemetry message a Type belongs to. No field name
appears in both. pm_status_flags is left out: it is a status bitmask,
not a measurement.
- Each telemetry module owns one CommandSensor that runs only the entries
for its message, so no command runs twice. The air-quality module
registers its instance once (its i2cScanFinished() runs twice) and
first, so it is read last and wins a shared field.
- Air-quality readings follow the air-quality module's own enable switch
and interval. The boot warning now counts unread entries per module.
- --check's info line and config-dist.yaml say which setting each kind
of type needs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011C7D9dE4aUYBrGdpPyHs25