最近捣鼓智能家居,用ESP32进行蓝牙设备定位,追踪小米手环手环,根据信号强度判断人是否在房间或者家里。

硬件与软件准备工作

硬件软件
ESP32ESPHome v2022.2.1
NAS/软路由Homeassistant 2021.11.4
小米手环

首先要在“小米穿戴”APP中打开小米手环的“蓝牙广播”功能,重启小米手环并确定“蓝牙广播”处于开启状态。进入小米手环的设置,记录下小米手环的蓝牙地址,例如我的小米手环蓝牙地址FA:4C:19:74:CF:20

编译并上传固件

详细参见ESPHome的ESP32 Bluetooth Low Energy Tracker Hub章节,下面粘贴我的ESPHome的编译配置yaml。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
esphome:
name: esp32

esp32:
board: esp32dev
framework:
type: esp-idf
version: latest
# Custom sdkconfig options
sdkconfig_options:
CONFIG_COMPILER_OPTIMIZATION_SIZE: y
# Advanced tweaking options
advanced:
ignore_efuse_mac_crc: false

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:
password: ""

wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password

esp32_ble_tracker:
scan_parameters:
interval: 1s
window: 500ms
active: false
sensor:
- platform: ble_rssi
mac_address: FA:4C:19:74:CF:20
name: "MI Band RSSI value"

其中scan_parameters:字键中的参数是重点,默认参数不能保证每次扫描都获得信号强度。