跳转到内容

BLE Client 传感器

ble_client 组件是一个传感器平台,可以查询 BLE 设备的 RSSI 或特定 服务特征值。

对于文本/字符串值,请参阅 Ble Client。

有关 BLE 服务和特征的更多信息,请参阅 Ble Client。

WARNING

ESP32 上的 BLE 软件栈消耗设备大量 RAM。

如果设备配置中包含太多附加组件,可能会发生崩溃。内存密集型组件(如 语音助手 和其他 音频组件)最有可能导致问题。

esp32_ble_tracker:
ble_client:
- mac_address: XX:XX:XX:XX:XX:XX
id: itag_black
sensor:
- platform: ble_client
type: characteristic
ble_client_id: itag_black
name: "iTag battery level"
service_uuid: '180f'
characteristic_uuid: '2a19'
icon: 'mdi:battery'
unit_of_measurement: '%'
- platform: ble_client
type: rssi
ble_client_id: itag_black
name: "iTag RSSI"
  • type (必选): 可选值为 rssi、characteristic 之一。

rssi 选项:

  • update_interval (可选, Time): 轮询设备的时间间隔。
  • 来自 Sensor 的所有其他选项。

characteristic 选项:

  • ble_client_id (必选, ID): 关联 BLE 客户端的 ID。

  • service_uuid (必选, UUID): 设备上服务的 UUID。

  • characteristic_uuid (必选, UUID): 要查询的服务特征的 UUID。

  • descriptor_uuid (可选, UUID): 要查询的特征描述符的 UUID。

  • id (可选, ID): 用于代码生成的 ID,以及供依赖组件引用。

  • lambda (可选, lambda): 用于将原始数据 读数转换为传感器值的 lambda。更多信息请参阅 原始数据解析 Lambda。

  • notify (可选, boolean): 指示服务器为此特征发送通知。

  • update_interval (可选, Time): 轮询设备的时间间隔。

  • 来自 Sensor 的所有其他选项。

自动化:

  • on_notify (可选, Automation): 收到设备通知消息时要执行的自动化。请参阅 on_notify。

默认情况下,服务特征上收到的每条消息只有第一个字节用于 传感器读数。对于更复杂的消息,可以通过自定义 lambda 函数覆盖此行为以解析原始数据。收到的数据字节作为 x 变量传递给 lambda,类型为 std::vector<uint8_t>。函数必须返回单个 float 值。

...
sensor:
- platform: ble_client
type: characteristic
ble_client_id: t_sensor
name: "Temperature Sensor 32bit float"
...
device_class: "temperature"
lambda: |-
return *((float*)(&x[0]));

当设备/服务器为 某特征发送通知消息时,触发此自动化。配置变量 notify 必须为 true,否则不起 任何作用。 类型为 float 的变量 x 将传递给自动化,供 lambda 中使用。

设备上可用的 UUID 取决于 设备类型和提供的功能。检查 ESPHome 设备日志以查找设备上发现的 UUID。

一些常见的 UUID:

服务特征说明
180F2A19电池电量
181A2A6F湿度