跳转到内容

ESP32 蓝牙低功耗信标

esp32_ble_beacon 组件使用您的 ESP32 设备创建一个蓝牙低功耗信标。信标是 BLE 设备,重复发送预定义的数据包。然后,智能手机等设备可以接收此数据包,并可用于跟踪手机的位置。

WARNING

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

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

# 示例配置条目
esp32_ble_beacon:
type: iBeacon
uuid: 'c29ce823-e67a-4e71-bff2-abaa32e77a98'
  • type (必需): 要创建的信标类型,目前仅支持 iBeacon

  • uuid (必需): 用于识别信标的通用唯一标识符

  • id (可选, ID): 手动指定用于代码生成的 ID。

高级选项:

  • major (可选, int): 此信标的 iBeacon 主标识符。通常用于对信标进行分组,例如将同一建筑物中的所有信标分组,但如果 BLE 接收器不使用它,则没有任何效果。默认为 10167

  • minor (可选, int): 此信标的 iBeacon 次标识符。通常用于标识 iBeacon 组内的信标。默认为 61958

  • min_interval (可选, 时间): iBeacon 最小发送间隔,以毫秒为单位,范围从 20 到 10240。将此值设置为小于 max_interval 可以让 BLE 硬件更好地避免与其他 BLE 传输发生冲突。默认为 iBeacon 规范定义的间隔:100ms

  • max_interval (可选, 时间): iBeacon 最大发送间隔,以毫秒为单位,范围从 20 到 10240。将此值设置为大于 min_interval 可以让 BLE 硬件更好地避免与其他 BLE 传输发生冲突。默认为 iBeacon 规范定义的间隔:100ms

  • measured_power (可选, int): 在距离设备 1 米处测量的 iBeacon RSSI。这用于校准 iOS 中的测距计算。设置此值的过程可以在 Apple 的 iBeacon 入门 PDF 中找到,标题为 校准 iBeacon。范围 -128 到 0。默认为 -59

  • tx_power (可选, int): iBeacon 的发射功率,单位为 dBm。 可选值为 -12、-9、-6、-3、0、3、6、9。默认为 3dBm。在 ESP-Hosted 平台(如 ESP32-P4)上不可用。

首先,您需要设置 ESPHome 的配置。只需复制上面的配置并将 UUID 更改为唯一的值。例如,您可以复制这个随机生成的 UUID:

然后,只需编译并烧录 ESP32。

当一切设置正确后,您应该可以使用您选择的 iBeacon 扫描器看到它。在 iPhone 上,这应该已经在蓝牙屏幕中工作(未测试),在 Android 上,您需要使用像 “nRF Connect for Mobile” 这样的应用。

要使用这些信标跟踪手机的位置,您需要使用另一个应用。例如,我使用 owntracks 的本指南 让我的家庭自动化系统知道我何时在家或外出。另一个不错的 Android 应用是 Beacon MQTT。它可以同时使用多个信标。