1
0
Fork
You've already forked esphome-components
0

feat(configs): add M5Stack AirQ air-quality monitor config #7

Merged
stackdrift merged 1 commit from feat/m5stack-airq-config into main 2026年06月01日 14:58:40 +02:00

Summary

  • New ESPHome config configs/m5stack-airq.yaml for the M5Stack AirQ (K131, StampS3 / ESP32-S3FN8), replacing the stock ThingsCloud firmware.
  • Reads onboard SCD40 (CO2) + SEN55 (PM1/2.5/4/10, VOC, NOx) over internal I2C bus_a; renders CO2 + PMs + VOC/NOx to the 1.54" e-ink and serves all of it over web/API.
  • Air quality only by design. The SCD40 self-heats ~15.6 C in this enclosure (validated against a SwitchBot + 3 HomePods), so its temp/RH/VPD are useless. They are kept internal-only to satisfy the scd4x_stats/scd4x_alerts refs; no environment data or alerts are surfaced.
  • Reuses this repo's scd4x_stats (daily max CO2 + moving avg) and scd4x_alerts (CO2 high/low) unchanged: the SCD40 is the same SCD4x family as the AtomS3U rig's SCD41.

Notes

  • E-ink uses full_update_every: 1 (this panel ghosts badly on partial refresh).
  • SEN55 is power-gated by GPIO10, driven HIGH on_boot (priority 800) before sensor init.

Test plan

  • esphome compile clean; flashed to hardware (USB first, then OTA).
  • Verified live over web server: CO2 ~1.1k ppm, all four PM sizes, VOC ~100, NOx 1; temp/RH/VPD confirmed absent.

Known follow-up: scd4x_alerts CO2 threshold number widgets read 0 (component does not seed them from the YAML thresholds). Separate PR.

## Summary - New ESPHome config `configs/m5stack-airq.yaml` for the M5Stack AirQ (K131, StampS3 / ESP32-S3FN8), replacing the stock ThingsCloud firmware. - Reads onboard SCD40 (CO2) + SEN55 (PM1/2.5/4/10, VOC, NOx) over internal I2C `bus_a`; renders CO2 + PMs + VOC/NOx to the 1.54" e-ink and serves all of it over web/API. - Air quality only by design. The SCD40 self-heats ~15.6 C in this enclosure (validated against a SwitchBot + 3 HomePods), so its temp/RH/VPD are useless. They are kept internal-only to satisfy the scd4x_stats/scd4x_alerts refs; no environment data or alerts are surfaced. - Reuses this repo's scd4x_stats (daily max CO2 + moving avg) and scd4x_alerts (CO2 high/low) unchanged: the SCD40 is the same SCD4x family as the AtomS3U rig's SCD41. ## Notes - E-ink uses `full_update_every: 1` (this panel ghosts badly on partial refresh). - SEN55 is power-gated by GPIO10, driven HIGH on_boot (priority 800) before sensor init. ## Test plan - `esphome compile` clean; flashed to hardware (USB first, then OTA). - Verified live over web server: CO2 ~1.1k ppm, all four PM sizes, VOC ~100, NOx 1; temp/RH/VPD confirmed absent. Known follow-up: scd4x_alerts CO2 threshold number widgets read 0 (component does not seed them from the YAML thresholds). Separate PR.
ESPHome config for the M5Stack AirQ (K131, StampS3/ESP32-S3FN8) to
replace the stock ThingsCloud firmware. Reads the onboard SCD40 (CO2)
and SEN55 (PM1/2.5/4/10, VOC, NOx) over the internal I2C bus_a and
renders a subset to the 1.54" e-ink, serving everything over web/API.
Scoped to air quality only. The SCD40 self-heats ~15.6C in this
enclosure (validated against a SwitchBot + 3 HomePods), which makes its
temp/RH/VPD readings useless, so they are kept internal-only purely to
satisfy the scd4x_stats/scd4x_alerts refs — no environment data or
alerts are surfaced anywhere.
All stock components except this repo's scd4x_stats (daily max CO2 +
moving average) and scd4x_alerts (CO2 high/low only), which drop in
unchanged because the AirQ's SCD40 is the same SCD4x family as the
AtomS3U rig's SCD41.
The e-ink runs full_update_every: 1; this panel ghosts badly on partial
refresh. SEN55 is power-gated by GPIO10, driven HIGH on_boot (p800)
before sensor init.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
stackdrift deleted branch feat/m5stack-airq-config 2026年06月01日 14:58:40 +02:00
Sign in to join this conversation.
No reviewers
Labels
Clear labels
No items
No labels
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
stackdrift/esphome-components!7
Reference in a new issue
stackdrift/esphome-components
No description provided.
Delete branch "feat/m5stack-airq-config"

Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?