把 Wi-Fi 感知接进 Home Assistant:ESP32 与路由器两条路
2026-10-11 · 约 2 分钟
Home Assistant 用户想要的是"实体"(sensor/binary_sensor),不是 CSI 原始数据。这里有两条可行路线。
1. 路线 A:ESP32 + ESPHome(最简单)
ESPectre 这类项目已经把 CSI 运动/存在检测做成了 ESPHome 组件 [2](底层是 ESP32 的 CSI 采集 [3]):
# ESPHome 配置思路(字段以组件文档为准)
esphome:
name: csi-motion
esp32:
board: esp32dev
external_components:
- source: github://<spectre-repo>
binary_sensor:
- platform: espectre
name: "客厅有人活动"
优点:开箱即用、直接产出 HA 实体;缺点:单点覆盖、20MHz/30–64 子载波、需要一块 ESP32。
广告位(上线后接入 AdSense/Ezoic)
2. 路线 B:路由器 CSI 平台(覆盖全屋,但工程量大)
本项目的 platform/(FastAPI + WebSocket + REST/MQTT)是这条路线的骨架
(CSI 感知的能力边界与适用条件可参考领域综述 [1]):
# Home Assistant:用 REST 轮询平台状态
sensor:
- platform: rest
name: "CSI 存在置信度"
resource: http://<platform-host>:8090/api/csi/status
value_template: "{{ value_json.present }}"
scan_interval: 5
# 或者用 MQTT(daemon 支持 MQTT 输出)
mqtt:
binary_sensor:
- name: "客厅有人"
state_topic: "csi/event/presence"
payload_on: "1"
payload_off: "0"
优点:全屋覆盖、无需额外硬件(已有路由器即可);缺点:要自己部署分析服务、标定阈值。
3. 自动化示例
automation:
- alias: "无人 10 分钟后关灯"
trigger:
- platform: state
entity_id: binary_sensor.ke_ting_you_ren
to: "off"
for: "00:10:00"
action:
- service: light.turn_off
target: { area_id: living_room }
4. 可靠性建议
| 问题 | 做法 |
|---|---|
| 静止被误判为"无人" | 加"呼吸微动"或 mmWave 作为补充;或提高超时时间 |
| 阈值在不同房间不一样 | 每个房间单独标定,保存基线 |
| 误触发频繁 | 加滞回(进入阈值高、退出阈值低)与最短保持时间 |
| 延迟敏感场景 | 用 WebSocket/MQTT 推送,而不是 REST 轮询 |
5. 两条路的取舍
| ESP32 + ESPHome | 路由器 CSI | |
|---|---|---|
| 上手时间 | 30 分钟 | 半天到 1 天 |
| 覆盖 | 单房间 | 全屋 |
| 维护 | 组件升级 | 服务与阈值维护 |
| 适合 | 先跑通概念 | 长期全屋部署 |
提醒:无论哪条路,不要用于未经同意的监控;在家庭场景中应让同住者知情。
参考与数据来源
本文的每条外部结论都标注来源与证据等级(分级标准);标注 E 级的是本项目可复现的实测数据。
- A 级 · 标准/综述
WiFi Sensing with Channel State Information: A Survey
W. Ma, W. Zhou, X. Wang · ACM Computing Surveys · 2019
doi:10.1145/3310194 · 被引 857 · 核实: CrossRef API, 2026-10-11 · 领域内最常被引用的 CSI 感知综述(被引 857 次,核实于 CrossRef)。 - C 级 · 官方资料
francescopace/espectre — Wi-Fi CSI motion sensing for ESP32 (ESPHome)
F. Pace
github.com/francescopace/espectre · 核实: GitHub API 2026-10-11 (stars 9,505) - C 级 · 官方资料
espressif/esp-csi — Applications based on Wi-Fi CSI
Espressif Systems
github.com/espressif/esp-csi · 核实: GitHub API 2026-10-11 (stars 1,679) · 官方 README 原文:“All ESP32 series support CSI, including ESP32 / ESP32-S2 / ESP32-C3 / ESP32-S3 / ESP32-C5 / ESP32-C6 / ESP32-C61.”
本页含联盟链接(rel="sponsored"),你通过链接购买不会增加成本,本站可获得少量佣金。