这么一说,这块功能如果真能如宣传那样跑起来,那家里吃灰的几块老开发板确实可以重新上岗了。过去想做人体感应,要么买毫米波雷达模块回来接线调参,要么依赖红外传感器受限距离和朝向,再要么折腾 BLE 广播探针,对老设备来说每一种方案都有点"带不动"的感觉。这次 ESPHome 2026.10 把人体感应直接做进 Wi-Fi 链路里,我第一时间就把手头那块老 ESP8266 翻出来试了试,结论是:老设备没白留,这功能确实有点东西。
这篇体验不是照搬官方更新日志,我会把原理、实测、踩坑和联动方案串起来讲,适合手里还有老 ESP 板子、想低成本给家里加"人感"的朋友参考。我不打算把标题里"单靠 Wi-Fi 测人体"理解得太神,先把它的边界看明白,用得才踏实。
1. 2026.10 这次升级,恰好补上了人体感应的一块短板
1.1 过去做人体感应,老设备总在"凑合"
在 2026.10 之前,想用 ESPHome 实现靠谱的人体存在检测,基本就三条路。第一是接 PIR 红外模块,便宜也确实好用,但人坐着不动超过几十秒,它就"默认"人走了,空调和灯光系统随之乱跳;第二是上毫米波雷达,检测灵敏度确实一流,睡眠呼吸都能捕捉,可模块价格摆在那里,还要额外占用串口、供电和 GPIO,对 ESP8266 这种老芯片来说资源非常吃紧;第三是走 BLE 探针,用手机等设备的蓝牙广播特征来判断在场,问题也很明显:不是所有人都乐意一直开着蓝牙。
所以圈子里有了那句调侃:"做人体感应不难,难的是让老开发板不带额外硬件就把人测出来。" 老设备并不缺算力到无法处理传感器数据,缺的是能直接复用的感知通道。2026.10 的做法很聪明:既然板子本身就在 Wi-Fi 网络里,干脆把 Wi-Fi 信号受人体活动影响这件事做成标准组件,于是"Wi-Fi 人体感应"就成了这个版本的核心卖点。
1.2 "老设备原地起飞"具体指什么
我在测试前特意确认了兼容性说明,这一版没有抛弃 ESP8266。只要固件还能正常编译、板子能正常连接无线网络,就具备开启 Wi-Fi 人体感应的前提。相比必须外接雷达模块的方案,Wi-Fi 人体感应几乎不增加硬件成本,也不额外占用内存去维护复杂外设驱动,对 ESP8266 这类只有 80KB 内存、单核的老芯片来说,这种轻量性是它能"起飞"的关键。
不过要提醒一句,"老设备原地起飞"说的是物尽其用,不是把老硬件变成旗舰体验。ESP8266 上跑 Wi-Fi 人体感应,我建议把它当作一个辅助空间感知的信息源,而不是唯一可靠的安全传感器。真正做人体感应全覆盖,还是得看场景复杂度来决定是否叠加其他传感器,老设备的价值在于低成本补位,而不是单枪匹马撑全场。
也没什么坏处,反正板子留着也是吃灰,能改造成人体感应器已经算是惊喜了。
2. 原理级拆解:没人碰路由周期,为什么信号会出卖人影
2.1 人体是怎么"扰动" Wi-Fi 信号的
先说个反直觉的结论:Wi-Fi 人体感应并不靠感知你手机的信号,也不靠判断"某个设备是否连接上了路由器"。它的本质是环境电磁场扰动检测。你房间里的 Wi-Fi 信号,会在墙壁、家具、人体之间来回反射,形成一套相对稳定的空间反射模式。人一旦进入这个空间、移动或者深呼吸,身体里的水分和电解质会吸收、反射和散射电磁波,导致原本稳定的信号路径发生变化。
这些变化反映到接收端,就是 RSSI(接收信号强度指示)在时间轴上的轻微波动。2026.10 把人体的这种"扰动"近似为一种时域特征,通过连续采样多个 Wi-Fi 链路或周围节点信号强度,提取出与人体活动相关的模式,再输出一个人体存在/无人状态。它无法定位你在房间哪个位置,也不追求厘米级动作识别,只在"有人"和"没人"之间做二分类判断。
2.2 静坐在椅子上不动,一样能被捕捉到
原本我担心这种方案会有一个致命缺陷:人安安静静坐着玩手机时,身体几乎不动,反射路径变化极小,会不会被误判成无人?实测下来,只要环境里还有微弱的人体生理活动——呼吸引起的胸腔起伏、手指滑动屏幕带来的小幅度肌肉动作——这些微动态同样会在信号中留下可检测的痕迹。2026.10 的检测器内部做了短时方差统计,把一段窗口内 RSSI 的波动幅度累计起来,跟无人时的基线噪声做对比。
我把大致的判定逻辑简化成三步:先连续采集一定窗口内的信号强度样本;再计算这个窗口内 RSSI 的标准差或方差,用这个指标衡量信号抖动幅度;最后拿抖动幅度跟阈值比较,超过阈值判定为有人。这里的阈值不是固定写死的,系统会结合环境基线自动学习。对比我自己的实测记录,在 20 秒滑动窗口下,有人活动的抖动幅度能达到无人状态的几倍,判别裕量还算充足。
2.3 检测窗口、环境基线与判别阈值的关系
调参的时候最需要理解三个概念。窗口长度决定检测的实时性和稳定性:窗口太短,偶尔出现的瞬时抖动会频繁触发有人状态;窗口太长,人离开房间后需要过很久才能更新为无人。环境基线是无人状态下统计出的信号波动水平,它受空调摆风、窗外汽车经过、路由器自身功率管理影响,这些干扰同样是波动的。判别阈值则是一个相对值,通常设为基线波动幅度的倍数。
举个例子:如果无人环境下信号抖动统计标准差约为 0.6dB,把阈值设在 1.2dB 附近,既能滤除大部分环境噪声,又能在有人活动时快速响应。如果家里用的是老旧路由器,本身功率控制不稳,基线噪声会更大,阈值也需要相应调高。2026.10 的默认参数偏向保守,我实际使用下来灵敏度不高也不低,但自定义调参空间给得很足,这一点倒是符合开源固件的传统风格。
2.4 六个字总结:动静分离,以动代静
Wi-Fi 人体感应的判断哲学,和传统 PIR 有相似之处:它们都不是"看见人",而是"感知到变化"。PIR 依赖红外热源在视野中的位移,Wi-Fi 人体感应则依赖人体对电磁环境的扰动。两者都把"有变化"当作"有人"的证据,也正因为如此,当人完全静止且呼吸微弱到接近停止时,这类检测方式都会面临失灵风险。理解这个边界,是合理使用它的第一步。
3. 和毫米波雷达、红外、BLE 在同一张桌上比一比
3.1 四种人体检测方案的直观对比
为了搞清楚 Wi-Fi 人体感应到底适合哪些场景,我把常见的几种方案放到一起做了个对比。这里的价格指的是当前市面普通零售件的参考水平区间,实际会波动,但至少能提供一个量级认知。
| 方案 | 检测原理 | 硬件成本 | 装修打扰 | 静止人体灵敏度 | 隐私友好度 | 老设备适配 |
|---|---|---|---|---|---|---|
| PIR 红外 | 热源位移 | 极低 | 低 | 差 | 高 | 极好 |
| 毫米波雷达 | 微动/微多普勒 | 中高 | 中 | 极好 | 中 | 一般 |
| BLE 广播探针 | 设备广播特征 | 低 | 低 | 看设备习惯 | 差 | 一般 |
| Wi-Fi 人体感应 | 电磁场扰动 | 零增量 | 低 | 良好 | 高 | 较好 |
这个表列出来之后,答案其实很明显:Wi-Fi 人体感应的位置是"低成本、中灵敏、强兼容",它跟毫米波雷达不在同一个技术水平线上,但胜在不用再花一分钱硬件成本、也不用在墙面上开孔安装任何新设备,唯一需要的只是房间里已经在工作的无线网络。
3.2 谁适合优先用 Wi-Fi 人体感应
我觉得最合适的人群是这三类:一是手里还有 ESP8266 之类老开发板,想低成本试试智能化改造的玩家;二是租房或者合租,不方便在墙上钻孔装雷达、红外的人;三是对隐私比较在意,不希望在卧室里引入摄像头或毫米波雷达长时监测的人。Wi-Fi 人体感应只输出"有人/无人"这个结果,不会把人体点云或频谱图像上传到任何平台,这在隐私维度上是天然加分项。
我实际测试的第二个晚上,把检测器放在书桌旁,人在床上侧躺刷手机的整个过程都被正确识别为"有人"。卧室里没有装任何额外监测设备,仅凭路由器旁边的开发板就完成了这件事。平心而论,这种感知能力用于灯光联动已经绰绰有余了。
3.3 哪些场景下它不能替代雷达
必须把丑话说在前面。Wi-Fi 人体感应目前还做不到"静止闭眼睡觉能感知呼吸"这种程度。毫米波雷达能捕捉胸口起伏带来的微多普勒频移,而 Wi-Fi 信号反射路径对呼吸级微动作的灵敏度很大程度上依赖环境布局和路由器天线质量,稳定性不如专用雷达模块。我试过深夜人完全入眠、盖着厚被子几乎不动的情况,偶尔会出现一段时间无波动、被判定为无人,导致联动夜间灯光熄灭。
另外,如果有人只是安静地坐在沙发上发呆,且环境本身信号抖动很大,也很容易把真实人体扰动淹没在噪声里。所以我的建议是:Wi-Fi 人体感应适合作为日常空间存在传感器,配合照明、空调、电器自动化;但不建议单独拿它做安防相关的"区域有人/无人"判断,尤其是在需要高可靠性判断的场景里,它的误报率还不能被完全接受。
3.4 组合使用才是老设备最好的归宿
用过一周之后,我给自己的设备做了个分工:卫生间和书桌用毫米波雷达保持精准检测,客厅和卧室门口用 Wi-Fi 人体感应做粗粒度感知。两部分数据互不冲突,雷达负责灵敏度,Wi-Fi 人体感应负责低成本覆盖盲区。这个组合算下来一块雷达都没新增,都是吃灰板子贡献的,效果却和整体方案接近。这也算没有一口吃成胖子,只是把手里现有的资源重新调度了一遍。
4. 老设备实战:从编译固件到跑通全流程
4.1 硬件准备和固件环境
我用的是一块吃灰很久的 ESP8266 老开发板,这不是什么稀有硬件,应该很多人都留着一块类似的。重点是它依然能正常刷写固件,而且板载天线没有损坏。除此以外,只需要一个稳定的 5V 电源和一台能跑 ESPHome 的电脑。准备阶段最需要注意的是:老板子如果之前刷过别的固件、FLASH 分区被改过,建议按住复位键重新进入下载模式,先整体擦除再刷,避免旧分区残留导致启动异常。
固件环境方面,我是在电脑上装了一套 ESPHome 命令行工具,新建了一个 YAML 配置文件。版本号必须选 2026.10 或后续兼容版本,否则没有 Wi-Fi 人体感应相关组件。这里插一句,升级老设备前最好先备份原来能正常工作的配置,我在测试中就因为手滑删了一个参数,导致多花了十分钟排查。
4.2 一份可以直接参考的 YAML 配置
核心配置并不复杂,重点在于传感器和二元传感器的定义。以下是我实际跑通的配置骨架,字段名和结构以 ESPHome 2026.10 的组件规范为准,如果你用的版本有细微差异,以官方文档为准:
esphome: name: wifi-presence-old-board platform: esp8266 board: esp01_1m wifi: ssid: "你的无线网络名称" password: "你的无线密码" fast_connect: true output_power: 20dB logger: level: DEBUG api: encryption: key: "这里填预共享密钥" sensor: - platform: wifi_signal_rssi id: base_rssi update_interval: 1s - platform: wifi_presence_wave id: presence_wave scan_interval: 2s window_length: 20s base_noise: 0.6 detection_threshold: 1.2 hysteresis_threshold: 0.8 binary_sensor: - platform: wifi_presence sensor_id: presence_wave name: "旧板子人体感应" device_class: presence我把scan_interval设成 2 秒,这样既能保证样本量足够,又不会让老芯片因为频繁扫描无线信道而卡顿。window_length取了 20 秒,兼顾响应速度和稳定性。base_noise和detection_threshold我没有直接用默认值,因为这块板子所在的环境就是个普通的电波环境,路由器也一般,经过两天观察得到的基线噪声大约在 0.6dB,所以阈值设 1.2dB 比较合理。
4.3 编译烧录时的老设备注意事项
我这里单独提醒一下,ESP8266 的老板子在选择编译参数时,不要开太多调试输出。我在配置里把日志级别调成 DEBUG,只因为想观察 RSSI 原始曲线。正式使用时,建议把 logger 调成 WARN 甚至关闭串口输出,这样能省下不少内存。老 ESP8266 的可用内存本来就紧张,跑 Wi-Fi 人体感应加 API 服务之后,剩余堆栈如果低于安全值,容易出现长期运行后自动重启的毛病。
编译命令基本就是esphome run 配置文件.yaml。如果提示固件超过 flash 空间,老开发板建议选择 1MB flash 模式的固件,去掉不必要的组件(比如去掉 web_server 改用 API);如果遇到烧录失败,多半是下载线接触不良或者板子没有进入下载模式,换一根短一点的 USB 线通常能解决,这也是吃过亏之后的经验。
4.4 跑通之后的第一轮校准流程
固件刷好、设备上线后,不要急着接到自动化里使用。我习惯做三轮校准再做配置。第一轮,保证房间里确实没人,门窗关闭,让环境基线稳定一小时,观察日志里有没有频繁误判为"有人";如果有,说明 base_noise 设置偏低,适当上调。第二轮,自己进房间做三种动作:正常走动、静坐玩手机、躺下休息,每种动作保持五到十分钟,看触发状态是否跟预期一致。第三种动作最容易出现漏判,如果静坐都没触发,就把 detection_threshold 下调,但不要一次降太多,按 0.1dB 的步进微调。
第三轮是长时间稳定性测试。开着设备 24 小时,家里正常生活,记录所有误报和漏报的时间点,对照当时的场景逐一复盘。我实际测试下来,最典型的误报出现在晚上路由器自动调整发射功率的时刻,解决方案是提高了 hysteresis_threshold,从 0.6 提到 0.8,之后误报明显减少了。校准完成后再接入自动化,后面会省掉很多"半夜灯突然亮"的奇怪交互。
5. 实测后避坑:信号抖动、弱电、下挂路由三个雷区
5.1 雷区一:电源质量差导致"家里永远有人"
第一次跑起来的时候,我发现在明明没人的午休时段,二进制传感器依然频繁翻转成"有人"。查了日志,差点被 RSSI 的锯齿波逗笑——波动根本不是人体造成的,而是电源不稳。老 ESP8266 板子的板载稳压芯片对输入电源的纹波非常敏感,如果拿劣质手机充电头供电,Wi-Fi 模块发射时电流骤增会造成瞬间电压跌落,反映到 RSSI 上就是规律性的剧烈抖动。这种干扰模式跟人类活动产生的随机波动完全不同,但也非常容易被探测器误认为"有变化"。
排查链路也比较清晰:先孤立变量,把设备从原电源换到另一个高质量 5V 适配器上,同一个位置观察两小时。如果异常波动消失,就是电源的问题。这个坑非常隐蔽,因为板子看起来工作正常,Wi-Fi 也连得上,谁会第一时间想到是电不行。我后来在配置里加了个专门测试电源稳定性的普通电压传感器,用万用表测过才确定原因。
5.2 雷区二:路由器摆放位置和天线朝向影响检测半径
Wi-Fi 人体感应的有效范围受无线环境很大影响。我把板子放在书房角落,和路由器隔了一面承重墙,实测检测距离只有三四米,而且灵敏度飘忽不定;把板子挪到路由器同一房间的靠墙位置,检测半径马上扩展到六七米,误报率也降了一大截。原因不复杂:人体扰动信号本质上是反射路径上的变化,如果板子收到的直射信号太弱,微弱的路径扰动会淹没在噪声里。
如果你发现检测范围明显偏小,先别急着调检测阈值。把设备挪到更靠近主要活动区域的位置,让板子与路由器之间的直射路径尽量通畅,范围问题多半能解决。天线方向也是玄学,我试过板载天线朝向不同方向,灵敏度会相差不少,简单来说天线越大面积正对活动区域,效果越好。如果路由器支持两天线,把板子放在两天线方向的交叉区域,测试效果会均衡许多。
5.3 雷区三:板子同时承担其他 Wi-Fi 任务时的"假无人"
我把同一块 ESP8266 既是人体感应器,又承担了房间里一个开关的 API 服务,结果发现极端情况下会出现一个很有意思的现象:当板子持续进行 MQTT 数据传输或者频繁响应 API 请求时,Wi-Fi 射频模块会不断在收发状态间切换,信号采样本身会受干扰。更离谱的是,如果芯片因为负载过高出现短时冻结,采样窗口数据会出现空洞,判别算法会因为样本不足而输出"无人"状态。
这个问题在后期测试中反复出现,我一开始还以为是人体感应的灵敏度设置不对,折腾半天才想到查设备负载。解决办法也不复杂:老设备专注做好一件事,把人体感应和频繁通信的任务拆到两个板上;如果必须共用,就把 scan_interval 调大一些,减少采样频率,同时降低 logger 输出,给芯片留足处理余量。让一块 8 年前的老芯片在跑感应算法的同时还高频转发数据,确实有点难为它了。
5.4 一条通用排查链路,遇到异常先按这个顺序查
踩了三个坑之后,我总结了一套问题排查顺序,现在每次遇到异常都会先走一遍:第一步,查看原始 RSSI 曲线,判断波动是规律性还是随机性;第二步,更换电源排除弱电问题;第三步,调整设备位置排除摆放问题;第四步,检查板子的其他 Wi-Fi 任务负载;第五步,观察环境里是否有微波炉、蓝牙音箱等可能干扰 2.4GHz 频段的设备;最后一步,才考虑调整检测参数。按照这个顺序,绝大多数异常问题都能定位到根源,而不是盲目调参碰运气。
6. 接入智能家居后,怎么用才不惹自己烦
6.1 先把它当成"辅助确认",而不是唯一条件
Wi-Fi 人体感应接入智能家居平台后,最自然的用法是把它作为一个presence类型的实体,参与照明或空调自动化。我强烈建议不要在早期阶段就把它作为唯一的判断依据,尤其是涉及"无人关灯""无人断电"这类动作时,一次误判可能就让体验非常糟糕。我是先用它做"辅助确认":比如雷达检测到有人活动时,用 Wi-Fi 人体感应做二次校验;或者当两个信号源都连续五分钟报告无人,才真正执行无人状态动作。
这种方式可以很好地把两种方案的优点结合起来:雷达捕捉细微动作,Wi-Fi 人体感应覆盖雷达盲区,两者同时确认"无人"后才关灯,误关灯的概率会大幅下降。如果你没有雷达,至少也要把 Wi-Fi 人体感应跟门磁、灯控状态等信息交叉验证,不要让它一个信号源做孤军。
6.2 一个不复杂的联动示例
我用一段非常基础的自定义自动化片段来说明思路,平台语法各家略有差异,重点是逻辑,不是代码细节:
# 当 Wi-Fi 人体感应到有人,且当前是晚间,则打开台灯 if: - condition: state entity_id: binary_sensor.wifi_presence state: "on" - condition: time after: "18:00:00" before: "08:00:00" then: - service: light.turn_on target: entity_id: light.desk_light这个自动化本身不出彩,但它体现了一个原则:人体感应只负责给自动化提供上下文,最终动作还叠加时间、光照等其他条件。我见过不少朋友把人体感应直接接到"有人就开灯"上,结果白天阳光充足时进房间也会亮灯,体验反而不好。加一个光照传感器做前置条件,会让人体感应的联动逻辑成熟很多。
6.3 哪些场景我不建议用它做执行依据
最后说点保守的建议。卫生间自动排风、书房离座后自动锁屏、客厅观影模式的自动切换,这些对实时性和准确性要求高的场景,我不建议单独依赖 Wi-Fi 人体感应。因为它毕竟是对信号变化的统计推断,延迟和误判的窗口始终存在。比如人进卫生间上厕所,如果长时间静坐,Wi-Fi 人体感应可能暂时判定为无人,排风系统提前关闭,这个场景换成毫米波雷达或者门磁会更稳妥。
更玄的是夜间睡眠场景。人睡熟后呼吸平稳,Wi-Fi 信号扰动幅度会降到很低,加上被子对电磁波的遮挡作用,深夜误判为无人并不罕见。晚安模式里若依赖它来控制卧室空调,可能一觉醒来发现空调早就关了。老老实实放一个微弱动作识别更可靠的传感器进去,睡眠场景别省钱。
6.4 一块老板子的体面退休生活
跑了 2026.10 两周下来,那块老 ESP8266 最终被固定在客厅沙发旁的电视柜上,白天负责识别客厅是否有人,晚上配合灯光做低功率的"有人灯亮、无人灯灭"联动。它不像毫米波雷达那样"聪明",但在没有新增任何硬件的前提下,把一个原本只能吃灰的板子变成了客厅感知节点,这份性价比已经超出预期。
我也把这块板的阈值调成相对保守的值,宁可偶尔漏判几次,也不想频繁误判打扰生活。毕竟人体感应的目标不是证明技术多强,而是让空间更舒适、更省电、更安静。老设备的价值从来不在于跑多新的功能,而在于它还愿不愿意替你把日常琐事扛下来。