家庭自动化 / 家庭设备发布 内容更新

ESP32 蓝牙代理:让远处的 BLE 传感器接进 Home Assistant

固定Govee H5075与S3代理,分清主动扫描和GATT连接;完整YAML、HA集成与远近位置实验,不把编译写成覆盖实测。

读完能做什么
获得可构建的代理节点,能沿scanner→目标集成→新实体更新逐层验收,并完成两个位置的记录对照。
开始之前
已会H01固定ESPHome首刷、日志与加密API集成;能登录HA,准备指定H5075。
所需器材
DevKitC-1 v1.1 N8R8、USB数据线、Govee H5075原厂BLE温湿度计及其厂家规定电池、2.4GHz Wi-Fi、已有HA与Bluetooth/Govee BLE集成
版本组合
参考板:官方ESP32-S3-DevKitC-1 v1.1 / WROOM-1-N8R8ESPHome / Python:2026.9.1 / 3.12.13,macOS arm64实际环境设备框架:原生ESP-IDF toolchain / 5.5.5HA资料:Core2026.10.2,未在真实HA执行
适用范围

指定S3 v1.1 N8R8与Govee H5075;只转发BLE广告/扫描响应,不提供GATT连接或Bluetooth Classic;HA仍需网络。

这篇验证到了哪一步

资料核对已通过
docs/esp32-evidence/home-assistant-expanded.md验证日期:
构建 / 配置已通过
docs/esp32-evidence/home-expanded-builds.json:实际config/compile Exit0;HA与实板仍待验证对象:esp32-s3-devkitc-1 / ESP32S3 / 8MB Flash + OPI PSRAM版本:ESPHome2026.9.1 / Python3.12.13 / ESP-IDF5.5.5验证日期:
仿真不适用
未运行器件或HA仿真
本站实板待验证
未有本站指定实板/HA/无线或OLED运行记录,构建不替代物理验收

构建通过只说明指定环境中的代码或配置通过检查;实物功能、功耗和稳定性以对应的实板记录为准。

01 / 家庭设备

代理扩的是接收位置,目标协议仍由HA理解

本篇限定Govee H5075原厂BLE温湿度计。HA官方Govee Bluetooth设备表列明支持H5075且需要active scans;这是一条可核查的目标链,不把任意“蓝牙温湿度计”都列为兼容。

ESP32把收到的广告与扫描响应经网络API交给HA,HA的Bluetooth和Govee BLE集成解释数据。代理上线、发现目标、实体出现与实体持续更新是四个检查点;本站目前没有这只实物或HA运行证据。

参考:[4] ESPHome2026.9.1:Bluetooth proxy配置与连接能力[6] HA:Govee Bluetooth支持H5075,要求active scan[7] HA Core2026.10.2:Govee BLE发现条件与驱动锁[8] HA Bluetooth:远程scanner、来源和广告监视[9] Govee H5075厂家型号页

02 / 家庭设备

主动扫描不等于主动连接

完整YAML把esp32_ble_tracker.scan_parameters.active设为true,让扫描器请求scan response;同时bluetooth_proxy.active=false,本例不向HA提供GATT连接能力。H5075所需“active scans”由前一个配置满足。

换成需要GATT的目标集成时要重新核对连接需求、槽位和资源,不能只改设备名字。Bluetooth Classic耳机、音频、Wi-Fi设备或任意蓝牙串口也不能自动通过这个BLE代理转发。

参考:[4] ESPHome2026.9.1:Bluetooth proxy配置与连接能力[5] ESPHome2026.9.1:BLE tracker扫描模式[6] HA:Govee Bluetooth支持H5075,要求active scan[7] HA Core2026.10.2:Govee BLE发现条件与驱动锁[8] HA Bluetooth:远程scanner、来源和广告监视

03 / 家庭设备

不接GPIO,先把ESPHome网络路径跑通

参考板只接USB-to-UART;H5075按厂家说明单独上电,记录完整型号与可识别身份。N8R8的8MB Flash/Octal PSRAM参数、UART0/115200与H01相同,不给BLE设备接3V3排针。

按下载README用Python3.12.13安装ESPHome2026.9.1,复制私有secrets并生成随机API密钥。占位文件不可直接联网,全零API密钥会被拒绝;源码、依赖锁与私密配置分开。

代码 / 配置
python3.12 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
cp secrets.example.yaml secrets.yaml
.venv/bin/python -c "import secrets,base64; print(base64.b64encode(secrets.token_bytes(32)).decode())"

参考:[1] ESPHome2026.9.1固定版本源码[2] DevKitC-1 v1.1固定提交927ed7e:排针与USB[9] Govee H5075厂家型号页

04 / 家庭设备

完整代理配置:广告经API到HA

原生toolchain固定ESP-IDF5.5.5,恢复热点和USB保留维护入口,api.reboot_timeout=0s不因HA暂离线主动重启。BLE与Wi-Fi共用无线资源,这份起步例不再叠加音频/显示或高流量工作。

下面为下载原文;先config/compile,再按真实串口run。构建只证明程序生成,不能证明扫描到H5075。

代码 / 配置
esphome:
  name: esp32-ble-proxy
  friendly_name: ESP32 BLE Proxy
  min_version: 2026.9.1
  on_boot:
    priority: -100
    then:
      - logger.log: "H03-A booted; inspect real device logs"

esp32:
  board: esp32-s3-devkitc-1
  variant: ESP32S3
  flash_size: 8MB
  flash_mode: qio
  flash_frequency: 80MHz
  toolchain: esp-idf
  framework:
    type: esp-idf
    version: 5.5.5

psram:
  mode: octal
  speed: 80MHz

logger:
  baud_rate: 115200
  hardware_uart: UART0
  level: DEBUG

api:
  encryption:
    key: !secret api_key
  reboot_timeout: 0s

ota:
  - platform: esphome
    encryption:
      key: !secret api_key

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  reboot_timeout: 0s
  ap:
    ssid: "esp32-ble-proxy Recovery"
    password: !secret fallback_password
    ap_timeout: 90s

captive_portal:

# Active scanning requests scan responses; it is not a GATT connection.
esp32_ble_tracker:
  scan_parameters:
    active: true

# H5075 uses advertisements/scan responses; do not allocate GATT slots here.
bluetooth_proxy:
  active: false

button:
  - platform: restart
    name: "Restart"

参考:[1] ESPHome2026.9.1固定版本源码[4] ESPHome2026.9.1:Bluetooth proxy配置与连接能力[5] ESPHome2026.9.1:BLE tracker扫描模式

05 / 家庭设备

把scanner和目标集成分别加入

USB首刷后从UART取真实IP,用同一API密钥加入HA的ESPHome集成。启用Bluetooth;按Core2026.10.2资料到设置→连接→Bluetooth查看Adapters,确认这台远程scanner、状态和能力。只看到ESPHome设备在线还不够。

再添加或完成发现的Govee Bluetooth集成,核对H5075身份与实际温湿度实体。在Advertisement monitor中检查源与新广告时间,记录实际entity_id;HA可能采用另一台scanner,不能从实体有值推断一定走新代理。

做到这里,你应该看到
scanner、H5075发现、实体和新样本四项分别留证;不预填本站结果。

参考:[3] HA Core2026.10.2:ESPHome管理器/事件处理[6] HA:Govee Bluetooth支持H5075,要求active scan[7] HA Core2026.10.2:Govee BLE发现条件与驱动锁[8] HA Bluetooth:远程scanner、来源和广告监视

06 / 家庭设备

每个位置观察10分钟,同时记BLE和网络

固定同一H5075、电池与时间窗口:A保留原位置,B把代理移向传感器但保持Wi-Fi可靠。每处观察10分钟,在空CSV记布局、障碍、scanner/source、广告或实体新更新时间、可用RSSI和断流。

RSSI不等于准确距离;直线距离相同但遮挡/干扰不同也不能直接比较。移近传感器却丢了到AP/HA的网络,整条链仍失败;网络断开时代理不能神奇地实时转发。

参考:[5] ESPHome2026.9.1:BLE tracker扫描模式[8] HA Bluetooth:远程scanner、来源和广告监视[10] ESPHome Bluetooth Proxy:当前文档核查2026.10.18

07 / 家庭设备

沿网络、扫描和目标协议三层排错

无scanner先回H01查Wi-Fi、API与集成;有scanner无目标先查H5075型号/电池/主动扫描与Bluetooth、Govee集成;有旧值无新值时查看source和最后更新时间,不把旧曲线当新覆盖。

把传感器暂放近代理、减少干扰后重做同一窗口。再单独断开代理网络或停止HA,记录链路中断,恢复后看scanner与新的目标更新;需要时RESET,网络路径彻底失效则USB恢复。恢复时间必须实测,不预填固定秒数。

参考:[2] DevKitC-1 v1.1固定提交927ed7e:排针与USB[6] HA:Govee Bluetooth支持H5075,要求active scan[8] HA Bluetooth:远程scanner、来源和广告监视[9] Govee H5075厂家型号页[10] ESPHome Bluetooth Proxy:当前文档核查2026.10.18

08 / 家庭设备

把软件结果与覆盖实验分开

本轮实际config/固件构建结果见证据与源码SHA,HA配置与实体、无线广告、远近覆盖和恢复均尚未在本站执行。完整源码与空白记录模板可下载,不能用预期栏填实测。

评估覆盖时只对记录中的这块板、这个设备、位置与网络条件下结论。替换型号、固件或HA版本后重新核对支持项与扫描/连接需求。

参考:[1] ESPHome2026.9.1固定版本源码[6] HA:Govee Bluetooth支持H5075,要求active scan[7] HA Core2026.10.2:Govee BLE发现条件与驱动锁[8] HA Bluetooth:远程scanner、来源和广告监视

BACK TO THE SOURCE

资料来源与版本说明

本文依据下列官方文档与上游资料独立整理,适用范围与版本以本文所列组合为准。资料核对日期:。资料核对、程序构建与实板测试分别记录,不互相替代。

  1. ESPHome2026.9.1固定版本源码
  2. DevKitC-1 v1.1固定提交927ed7e:排针与USB
  3. HA Core2026.10.2:ESPHome管理器/事件处理
  4. ESPHome2026.9.1:Bluetooth proxy配置与连接能力
  5. ESPHome2026.9.1:BLE tracker扫描模式
  6. HA:Govee Bluetooth支持H5075,要求active scan
  7. HA Core2026.10.2:Govee BLE发现条件与驱动锁
  8. HA Bluetooth:远程scanner、来源和广告监视
  9. Govee H5075厂家型号页
  10. ESPHome Bluetooth Proxy:当前文档核查2026.10.18