孙亮亮
返回 智能家居

智能家居

智能家居空气质量监测实战:ESPHome + PMS5003/ENS160 监测 PM2.5、CO₂ 与 TVOC 并联动新风净化

2026年10月16日

ESPHome 接入多传感器做空气质量监测并联动新风净化

智能家居空气质量ESPHomeHome Assistant

智能家居空气质量监测实战:ESPHome + PMS5003/ENS160 监测 PM2.5、CO₂ 与 TVOC 并联动新风净化

摘要: 装修异味、晨起头晕、孩子总咳嗽——室内空气质量常常被忽视。本文用 ESPHome 把 PMS5003(PM2.5/PM10)、ENS160(TVOC/eCO₂)与 SHT40(温湿度)三类传感器接入 Home Assistant,搭建实时看板并自动联动新风与空气净化器,同时给出校准与布点要点。

一、为什么要在家做空气质量监测

我们一天约 80% 时间在室内,但甲醛、PM2.5、二氧化碳、TVOC 这些都是"看不见的敌人"。靠鼻子判断极不可靠:甲醛在 0.08mg/m³ 以下几乎无味,而 CO₂ 超过 1000ppm 就会让人注意力下降、犯困。

监测的意义不只是"看数字",更是为了驱动自动化:CO₂ 高了自动开新风,PM2.5 爆表自动开净化器,TVOC 超标推送提醒开窗。把空气指标变成可执行的动作,才是智能家居该有的样子。

二、传感器选型:三类指标怎么分工

一套完整的室内空气质量,至少需要覆盖四类参数,我用三颗传感器解决:

  • PMS5003(攀藤):激光颗粒物传感器,输出 PM1.0/PM2.5/PM10。优点便宜(二三十元)、即用;缺点风扇有寿命(约 8000 小时),建议用 update_interval 配合 sleep 指令间歇工作延长寿命。
  • ENS160(ScioSense):TVOC 与等效 CO₂(eCO₂)传感器,I²C 接口。它不直接测 CO₂ 分子,而是用 VOC 算法估算,适合看趋势,不适合当精确浓度。
  • SHT40(Sensirion):高精度温湿度,I²C,给 PMS5003 做温度补偿参考,也能单独做舒适度判断。

想测真实 CO₂ 浓度(比如怀疑通风不足),建议再加一颗 SCD40/SCD41(光电 NDIR 原理),它测的是真实 ppm,比 ENS160 的 eCO₂ 准得多。本文先用 ENS160 演示,进阶可替换。

三、ESPHome 固件配置与接线

ESP32 一块板子带三颗传感器,I²C 总线共用 SDA/SCL(ESP32 默认 GPIO21/22),PMS5003 走串口(UART)。

i2c:
  sda: 21
  scl: 22
  scan: true

uart:
  tx_pin: 17
  rx_pin: 16
  baud_rate: 9600

sensor:
  - platform: pmsx003
    type: PMSX003
    pm_2_5:
      name: "客厅 PM2.5"
    pm_10_0:
      name: "客厅 PM10"
  - platform: ens160
    co2:
      name: "客厅 eCO2"
    tvoc:
      name: "客厅 TVOC"
  - platform: sht4x
    temperature:
      name: "客厅温度"
    humidity:
      name: "客厅湿度"

烧录后用 sleep 指令让 PMS5003 每 5 分钟才转一次风扇:on_time 里调用 pmsx003 的 sleep/wake action。这样既能采样又不伤风扇。

四、接入 Home Assistant 做看板与历史曲线

ESPHome 设备通电后会自动通过 API 或 MQTT 出现在 Home Assistant 的"实体"列表里。在 HA 里用 History 卡片就能看到 PM2.5 和 CO₂ 的 24 小时曲线——一眼能看出"夜里关门睡觉 CO₂ 飙升到 1800ppm"这种规律。

建议建一个 仪表盘视图,把四个实体排成网格,并加一张 statistics 长期统计图,观察装修后甲醛/TVOC 的衰减趋势。数据可以接 InfluxDB 长期留存(思路可参考本站 NAS 系列的数据持久化文章)。

五、自动化联动:超标自动开新风/净化器

核心是把"指标越限"变成"动作"。在 HA 的自动化里:

automation:
  - alias: CO2超标开新风
    trigger:
      - platform: numeric_state
        entity_id: sensor.ke_ting_eco2
        above: 1000
    action:
      - service: switch.turn_on
        target:
          entity_id: switch.xin_feng

同理设 PM2.5 > 75 开净化器、TVOC > 1.0mg/m³ 推送"请开窗通风"通知。注意加滞回(hysteresis):用 for: "00:02:00" 要求越限持续 2 分钟才触发,避免开门瞬间波动误动作。联动新风时最好同时判断门窗传感器,开窗时就别开新风,否则白白耗能。

六、校准与布点避坑

  • 布点高度:呼吸带高度约 1.2–1.5 米,别放地上也别贴天花板;远离空调出风口和厨房油烟。
  • PMS5003 进风口 别被外壳堵死,留通风间隙;首月每天用压缩空气吹一次防尘网。
  • ENS160 需要 48 小时老化才能稳定,出厂后第一次上电算法在自适应,前期数值偏高属正常。
  • eCO₂ 不能当真值,真要控通风看 SCD40;ENS160 用于"趋势+联动"足够。
  • 多房间 建议客厅、儿童房各放一个,卧室可省,用平均值判断全屋。

小结

用 ESPHome + PMS5003/ENS160/SHT40 搭一套室内空气质量监测,硬件成本不到一百元,却能让你第一次"看见"家里的空气。更重要的是把它接入 Home Assistant 做自动联动:CO₂ 高开新风、PM2.5 高开净化器,把冰冷的 ppm 数字变成真实可感的呼吸健康。布点时避开风口、给传感器留足老化时间,数据可信度会高很多。

本模块其他文章

把米家/涂鸦设备接入 Apple HomeKit:Homebridge 桥接与本地控制实战Home Assistant 蓝牙代理实战:ESP32 蓝牙中继扩展米家/涂鸦 BLE 设备覆盖Home Assistant 接入 Matter 设备实战:Thread 边界路由、多生态互通与本地自动化ESPHome 智能插座能耗监测实战:待机功耗摸底、定时断电与 Home Assistant 电费看板用 ESPHome 红外万能遥控把传统空调电视纳入 Home Assistant:码值学习与场景联动实战智能家居窗帘光照联动实战:ESPHome 电机 + 光照传感器 + HA 日出日落自动化智能门锁与门禁接入 Home Assistant:指纹锁状态同步、临时密码与回家离家自动化智能家居漏水与燃气安全监测实战:ESPHome 传感器接入 Home Assistant 并自动关阀告警毫米波雷达存在检测接入 Home Assistant:LD2410 + ESPHome 解决人体感应误触发与无人区漏检Home Assistant 离线语音助手搭建:Whisper 语音识别 + Piper 中文 TTS 本地控制全屋把 Aqara/米家 Zigbee 设备接入 Home Assistant:ZHA 网关配置与回家离家自动化实战ESPHome 从零打造 WiFi 温湿度传感器并接入 Home Assistant:固件编译、配网与自动化联动Home Assistant 本地部署与 MQTT 设备接入实战:从 Docker 安装到自动化规则家庭能耗监测实战:用智能插座 + Home Assistant 把每月电费拆到每个电器毫米波人体存在传感器实战:彻底解决智能灯"人不动就关"的尴尬回家即亮灯、离家自动布防:用 Home Assistant 把场景自动化串起来Zigbee 还是 Matter?智能家居协议选型Home Assistant 本地优先实践
智能家居空气质量监测实战:ESPHome + PMS5003/ENS160 监测 PM2.5、CO₂ 与 TVOC 并联动新风净化 · 孙亮亮