在家、离家是两个区别较大的场景,通过设备追踪(Device Tracke)可以是判断在家离家的一个简单、可靠方式,ESPresense 是一个利用 ESP32 低成本实现设备追踪的项目。
原理
ESPresense 通过蓝牙信号强度测量距离,首先 ESP32 收集信标(如手机、手表)广播的广告包,并发布至 MQTT,Home Assistant 解析 MQTT 信息并报告给追踪传感器。大多数蓝牙设备处于隐私广播的 mac 地址都有加密,但 ESPresense 基于指纹 ID 追踪,可以稳定、可靠地跟踪设备。通过蓝牙信号强度测量距离可精确到几米,也可以追踪设备是否在某一个房间,ESP32 价格低廉,综合来说,这是一个低成本且可靠的设备追踪方案。
刷机
准备好 ESP32 后可直接在线刷机:
1.确保电脑装好驱动:
- CP2102 驱动: Windows 和 Mac
- CH342、CH343、CH9102 驱动: Windows、 Mac
- CH340、CH341 驱动: Windows、 Mac
2.将 ESP32 与电脑通过数据线连接(确保 USB 数据线可用于数据传输,而不是仅用于供电的数据线),使用 Chromium 内核的浏览器打开 https://espresense.com/firmware
3.点击「连接」,选择端口,等待刷机完成。
配置
刷机完成后重启 ESP32,寻找 SSID 为 ESPresense-
开头的 AP 热点并连接,
连接 AP 热点后在设置页面中,填入 WIFI 信息、房间名称及 MQTT 信息,以及多少米判断在房间、不在房间。
!
Android 设备
对于 Android 设备需要一个应用程序发出 BLE 广告,推荐 Home Assistant 的 HA Companion App 。
iOS 设备
苹果设备会发出各种连续性消息,指纹 apple:100?:*-*
通常是可见的。但如果家里有很多 iPhone,会导致附近的信息冲突并重复。
解决此问题需要从 iOS 或 WatchOS 设备获取 IRK(身份解析密钥),并添加至 ESPresense 的 Known BLE identity resolving keys
配置中:
1.浏览器打开 http://espresense 设备 IP/ui
,在名称中为您的设备填写想显示的设备名称,点击「Enroll」按钮,
!
2.打开 iOS 设备,在「设置」→「蓝牙」中找到 ESPresense 设备并配对,
4.下载安装 MQTT Explorer,填入 MQTT 信息,在 espresense/settings
主题中可以找到 IRK 密钥。
APPle Watch
Apple Watch 的 IRK 获取参见 https://espresense.com/beacons/apple Watch OS 相关内容。
Home Assistant 配置
Home Assistant 可以自动发现 ESPresense,
每个需要追踪的信标需要添加到 configuration.yaml 文件中,
1 | sensor: |
保存后重启 Home Assistant,之后就可以看到追踪的信标距离 ESP32 的距离以及是否在房间。
需要注意的是,若墙壁等阻隔,测量距离可能比实际距离稍远。