智能家居
智能家居空气质量监测实战:ESPHome + PMS5003/ENS160 监测 PM2.5、CO₂ 与 TVOC 并联动新风净化
2026年10月16日
ESPHome 接入多传感器做空气质量监测并联动新风净化
智能家居空气质量监测实战: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 数字变成真实可感的呼吸健康。布点时避开风口、给传感器留足老化时间,数据可信度会高很多。