ESP32 低功耗蓝牙设备
ble_presence 二进制传感器平台允许您跟踪低功耗蓝牙设备的存在。
# 示例配置条目esp32_ble_tracker:
binary_sensor: # 基于 MAC 地址的存在检测 - platform: ble_presence mac_address: XX:XX:XX:XX:XX:XX name: "ESP32 BLE 跟踪器 Google Home Mini" min_rssi: -80dB # 基于身份解析密钥 (IRK) 的存在检测 - platform: ble_presence irk: 1234567890abcdef1234567890abcdef name: "ESP32 BLE 跟踪器 iPhone" # 基于 BLE 服务 UUID 的存在检测 - platform: ble_presence service_uuid: '11aa' name: "ESP32 BLE 跟踪器测试服务 16 位" timeout: 45s # 基于 iBeacon UUID 的存在检测 - platform: ble_presence ibeacon_uuid: '68586f1e-89c2-11eb-8dcd-0242ac130003' name: "ESP32 BLE 跟踪器测试服务 iBeacon"NOTE
服务 UUID 可以是 16 位长,如示例所示,但也可以是 32 位长,如 1122aaff,或 128 位长,如 11223344-5566-7788-99aa-bbccddeeff00。
-
mac_address (可选, MAC 地址): 此二进制传感器要跟踪的 MAC 地址。请注意,
mac_address、irk、service_uuid或ibeacon_uuid中必须恰好存在一个。 -
irk (可选, 16 字节十六进制字符串): 此二进制传感器要跟踪的身份解析密钥 (IRK)。请注意,
mac_address、irk、service_uuid或ibeacon_uuid中必须恰好存在一个。 -
service_uuid (可选, 字符串): 16 位、32 位或 128 位 BLE 服务 UUID,如果设备随机化 MAC 地址,可以跟踪它。请注意,
mac_address、irk、service_uuid或ibeacon_uuid中必须恰好存在一个。 -
ibeacon_uuid (可选, 字符串): 用于标识需要跟踪的信标的 通用唯一标识符。请注意,
mac_address、irk、service_uuid或ibeacon_uuid中必须恰好存在一个。 -
ibeacon_major (可选, 整数): 需要跟踪的信标的 iBeacon 主标识符。通常用于分组信标,例如对同一建筑中的所有信标进行分组。
-
ibeacon_minor (可选, 整数): 需要跟踪的信标的 iBeacon 次标识符。通常用于标识 iBeacon 组内的信标。
-
min_rssi (可选, 整数): 组件报告设备存在的最小 RSSI 级别。
-
timeout (可选, 时间): 最后检测到设备后发布不存在状态的延迟。默认为 5 分钟。
-
所有其他选项来自 二进制传感器。
要为特定 BLE 信标设置二进制传感器,您首先需要知道要跟踪的 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 地址类型的设备可能使用称为可解析私有地址的隐私功能来避免 BLE 跟踪。由于它们的 MAC 地址周期性变化,无法通过 MAC 地址跟踪它们。但是,如果您知道设备的”身份解析密钥” (IRK),您可以使用 IRK 检查生成的私有 MAC 地址是否属于该设备。
ESPHome 不支持获取密钥。目前您必须使用 ESPresense 项目中描述的选项之一:https://espresense.com/beacons
或者您可以:
-
创建一个 BLE 信标,设置唯一的 16 位、32 位或 128 位服务 UUID,并基于此跟踪您的设备。确保不要选择 GATT 服务 UUID,否则通用服务可能会给您不正确的跟踪结果。
-
创建一个 iBeacon 并基于其 iBeacon UUID 跟踪它。如果需要额外的过滤,您还可以选择指定主标识符和次标识符进行匹配。ESPHome 通过 ESP32 低功耗蓝牙信标 组件提供此功能。几个 iOS 和 Android 应用程序,包括开源的 Home Assistant 移动应用程序,也提供创建 iBeacon 的方法。