ESP32 低功耗蓝牙设备
ble_presence 二进制传感器平台允许你追踪低功耗蓝牙设备的存在。
WARNING
ESP32 上的 BLE 软件栈在设备上会消耗大量 RAM。
如果在设备的 配置中包含过多其他组件,很可能发生崩溃。 诸如 Voice Assistant 和其他 音频组件等内存密集型组件最容易引发问题。
# 示例配置条目esp32_ble_tracker:
binary_sensor: # 基于 MAC 地址的存在判断 - platform: ble_presence mac_address: XX:XX:XX:XX:XX:XX name: "ESP32 BLE Tracker Google Home Mini" min_rssi: -80dB # 基于身份解析密钥(IRK)的存在判断 - platform: ble_presence irk: 1234567890abcdef1234567890abcdef name: "ESP32 BLE Tracker iPhone" # 基于 BLE 服务 UUID 的存在判断 - platform: ble_presence service_uuid: '11aa' name: "ESP32 BLE Tracker Test Service 16 bit" timeout: 45s # 基于 iBeacon UUID 的存在判断 - platform: ble_presence ibeacon_uuid: '68586f1e-89c2-11eb-8dcd-0242ac130003' name: "ESP32 BLE Tracker Test Service iBeacon"NOTE
服务 UUID 可以像示例中那样为 16 位长,也可以为 32 位长
如 1122aaff,或者为 128 位长如 11223344-5566-7788-99aa-bbccddeeff00。
-
mac_address(可选,MAC Address):此 二进制传感器要追踪的 MAC 地址。请注意,必须存在且仅存在
mac_address、irk、service_uuid或ibeacon_uuid中的一个。 -
irk(可选,16 字节十六进制字符串):此 二进制传感器要追踪的身份解析密钥(IRK)。请注意,必须存在且仅存在
mac_address、irk、service_uuid或ibeacon_uuid中的一个。 -
service_uuid(可选,string):16 位、32 位或 128 位 BLE 服务 UUID, 如果设备会随机化 MAC 地址,则可对其进行追踪。请注意,必须存在且仅存在
mac_address、irk、service_uuid或ibeacon_uuid中的一个。 -
ibeacon_uuid(可选,string):要追踪的 beacons 的 通用唯一标识符。 请注意,必须存在且仅存在
mac_address、irk、service_uuid或ibeacon_uuid中的一个。 -
ibeacon_major(可选,int):要追踪的 beacons 的 iBeacon 主标识符。 通常用于对 beacons 进行分组,例如将 同一建筑内所有 beacons 分组。
-
ibeacon_minor(可选,int):要追踪的 beacons 的 iBeacon 次标识符。 通常用于在 iBeacon 组内标识 beacons。
-
min_rssi(可选,int):在此最小 RSSI 级别下组件将报告设备存在。
-
timeout(可选,Time):最后检测到设备后发布不存在状态的延迟。 默认值为 5 分钟。
-
来自 Binary Sensor 的所有其他选项。
要为特定的 BLE beacon 设置二进制传感器,你首先需要知道要追踪哪个 MAC 地址。
大多数设备会在某个设置菜单中显示此界面。如果你不知道 MAC 地址,
你可以使用不带任何二进制传感器的 esp32_ble_tracker 中心,然后浏览
日志以查看已发现的低功耗蓝牙设备。
# 用于查找# MAC 地址、服务 UUID、iBeacon UUID 和标识符的示例配置条目esp32_ble_tracker: on_ble_advertise: - then:
logger: level: VERY_VERBOSE使用上面的配置,首先你应该在
启动时看到一条 Starting scan... 调试消息。然后,当发现 BLE 设备时,你应该看到类似
Parse Result: 的消息,以及有关其 MAC 地址、地址类型、
广告名称、服务 UUID、iBeacon UUID、iBeacon 主标识符和次标识符、
BLE 制造商 ID 和数据、RSSI 以及用于调试目的的其他有用数据的信息。
你可以找到 官方制造商 ID 列表 来帮助你找到你的设备。
请注意,这在设置过程中很有用,但之后应指定较低的日志级别。如果你没有看到这些消息,很遗憾你的设备
目前不受支持。
请注意,在日志中显示地址类型为 RANDOM 的设备很可能使用了名为 Resolvable Private Addresses 的隐私
功能以避免 BLE 追踪。由于它们的 MAC 地址会定期
变化,因此无法通过 MAC 地址进行追踪。不过,如果你知道设备的“身份解析
密钥”(IRK),则可以检查生成的私有 MAC 地址是否属于具有该 IRK 的设备。
ESPHome 不支持获取该密钥。目前你需要使用 ESPresense 项目中 描述的选项之一:https://espresense.com/beacons
或者你也可以:
-
创建一个 BLE beacon,设置一个唯一的 16 位、32 位或 128 位服务 UUID,并基于 它来追踪你的设备。确保不要选择 GATT Service UUID,否则通用服务 可能会给你不正确的追踪结果。
-
创建一个 iBeacon 并基于其 iBeacon UUID 对其进行追踪。你也可以选择指定 主号和次号以进行匹配,以便在需要时进行额外的过滤。ESPHome 通过 ESP32 低功耗蓝牙 Beacon 组件提供此功能。多个 iOS 和 Android 应用程序,包括开源的 Home Assistant 移动应用,也提供了创建 iBeacon 的方法。