外观
ESPresense
ESPresense 想解决的问题是:让智能家居知道「这个人 / 这部手机 / 这把钥匙现在在哪个房间」。方法是在各个房间放一个 ESP32 节点,监听蓝牙广播,根据信号强度 (RSSI) 推算距离,再把结果通过 MQTT 发给 Home Assistant,用来触发房间灯、空调等自动化。
项目概况
| 项目 | 内容 |
|---|---|
| 仓库 / 官网 | github.com/ESPresense/ESPresense,文档 espresense.com |
| 作者 / 组织 | ESPresense 社区 |
| 开源协议 | AGPL-3.0 |
| 支持芯片 | ESP32 系列(README 描述为 ESP32 based node) |
| 首次发布 | 仓库创建于 2021 年 8 月 18 日 |
| 版本 | 最近的稳定版 v4.0.6(2026 年 2 月 28 日);另有 v5.0.0 beta 系列(2026 年 10 月 12 日发布 v5.0.0b2) |
| 热度 | 约 1500 星(2026 年 10 月) |
它是怎么工作的
- 每个节点持续扫描 BLE 广播,包括手机、手环、iBeacon、智能手表、标签等。
- 对每个设备估算距离(基于 RSSI,并结合校准参数如参考 RSSI、吸收系数)。
- 把测量结果通过 MQTT 发布。Home Assistant 的
mqtt_room组件可以直接使用,判定设备最接近哪个节点(房间)。 - 如果配合 ESPresense-companion,可以输入房间的平面图和节点坐标,进行多点三边定位,得到精确位置。
- 节点有网页配置、MQTT 控制和 OTA 更新。
需要的硬件
| 部件 | 说明 |
|---|---|
| 节点 | 任意带蓝牙的 ESP32,常见的是 ESP32 DevKit 或 XIAO ESP32C3 这类小板 |
| 供电 | USB 常供电,节点要常年在线 |
| 被追踪设备 | 手机(Android 要装应用来固定广播身份)、BLE 手环 / 信标,iPhone 因地址随机化较难追踪,社区常用 Apple Watch 或专用信标 |
| 服务器 | MQTT Broker 与 Home Assistant |
支持的具体芯片和板型请以文档站为准。
上手路径
- 准备 2 到 3 块 ESP32,一个 MQTT Broker(如 Mosquitto)。
- 通过项目的 Web 安装器刷入固件,再设置 Wi-Fi 和 MQTT。
- 在 Home Assistant 里添加 MQTT 集成,设备会自动发现。
- 以身份 ID 追踪你的手机、手表或信标。
- 想要更高精度,部署 ESPresense-companion。
更多房间感知方案可对照 存在感与 BLE 代理,那里讲的 ESPHome 蓝牙代理是另一条路线。
生态与衍生
- ESPresense-companion:同一组织的配套服务,提供多点定位与可视化。
- 对比:ESPHome 蓝牙代理 + Bermuda 等 Home Assistant 集成可以做类似的事。选哪个取决于你是否已经在 ESPHome 体系里。
- 与 OpenMQTTGateway 都用到 BLE 到 MQTT,但 ESPresense 专注定位。
局限与注意事项
- RSSI 本身不稳定,墙体、人体、天线方向都会影响结果。通常只适合房间级,不是厘米级定位。
- 节点密度越大越准,每个房间至少一个。
- iOS / 新版 Android 对蓝牙广播有隐私保护(随机地址),追踪手机需要额外设置。
- 5.0 仍是 beta,上生产前读 changelog。
- ESP32 同时跑 Wi-Fi 与蓝牙扫描,会共用 2.4 GHz 射频,繁忙环境中可能丢包。