
30分钟搭好ESPHome蓝牙网关BLE设备与Home Assistant互通完整教程【免费下载链接】esphomeESPHome is a system to control your ESP32, ESP8266, BK72xx, RP2040 by simple yet powerful configuration files and control them remotely through Home Automation systems.项目地址: https://gitcode.com/GitHub_Trending/es/esphome本文带你用 ESPHome 把一块 ESP32 变成蓝牙网关让周围的 BLE 设备数据顺畅进入 Home Assistant。读完你会得到三样东西一份可直接烧录的最小网关配置、被动监听与主动读写两种接法的完整案例、一张现象→原因→处理的故障对照表。 先看清楚网关能替你做什么网关的价值用三个真实场景说话卧室温湿度小米 LYWSD02MMC 这类只发广播的电池传感器靠网关被动收包卧室温湿度、电量直接出现在 HA 仪表盘里。玄关门窗门窗开关传感器上报的状态经网关转发HA 自动化在开窗时自动关空调。老式 BLE 设备一个没有 Wi-Fi 接口的 BLE 开关通过主动连接方式接入HA 里多出一个可控制实体。共同点BLE 设备不碰网络ESP32 负责翻译Home Assistant 只面对统一的 HA 接口。⚡ 快速上手三步烧出第一版网关第 1 步硬件。一块 ESP32 开发板即可开发板选esp32dev或 ESP32-C3-MINI-1 均可配 5V/2A 电源和 USB 数据线。供电不稳是后续大多数玄学问题的源头建议直接用足功率的适配器。第 2 步环境。安装 CLI 工具并拉取仓库备用看示例、查组件pip install esphome git clone https://gitcode.com/GitHub_Trending/es/esphome第 3 步烧录。下面是一份能直接编译的最小网关配置先跑通再谈优化esphome: name: ble-gateway esp32: board: esp32dev framework: type: esp-idf wifi: ssid: !secret wifi_ssid password: !secret wifi_password power_save_mode: NONE bluetooth_proxy: active: true connection_slots: 3 cache_services: true api: encryption: key: 32位加密密钥 logger: level: INFO ota: - platform: esphome password: 升级密码执行esphome compile ble-gateway.yaml编译esphome upload ble-gateway.yaml首次走 USB 写入之后可以无线升级。 原理速览数据是怎么流转的bluetooth_proxy是核心组件它一边通过 BLE 协议栈收集周围设备的广播与连接数据一边经 api/MQTT 通道把数据发给 Home AssistantHA 下发的控制指令则反向穿过这条链路最终变成对 BLE 设备的写操作。图 1ESPHome 蓝牙网关的数据流向双向通道同一条链路 配置拆解只讲你真正会动的参数连接能力决定能同时伺候几台设备active开启后网关接受 HA 发起的连接请求只收广播的设备可关掉它。connection_slots连接槽位默认 3上限 9与 bluetooth_proxy 源码 中_IDF_MAX_CONNECTIONS保持一致。槽位越占越多单设备响应越慢按实际设备数留余量。cache_services把服务信息存到闪存对应CONFIG_BT_GATTC_CACHE_NVS_FLASH重连时省去重复发现服务的时间默认开启一般不用动。数据转发设备数据靠平台组件落地网关本身只搬运原始 BLE 数据具体解析由 sensor 等平台组件完成。以小米为例xiaomi_lywsd02mmc 把广播里的温度、湿度、电量拆成三个传感器实体HA 侧若走 MQTT再配mqtt段broker、username、passworddiscovery: true可自动生成实体。日志与升级排障时最先看的地方logger设INFO起步定位 BLE 问题时可临时调高到DEBUG。wifi的power_save_mode: NONE强烈建议保留省电模式下 BLE 扫描与 Wi-Fi 抢射频容易丢广播。ota务必设密码升级时断网也能无线刷写省得每次插 USB。 实战接法被动监听与主动读写设备是否愿意被连决定你用哪种接法。被动监听小米温湿度传感器这类设备只发广播、不接受连接网关旁听即可功耗对设备最友好esp32_ble_tracker: scan_parameters: interval: 1100ms window: 1100ms active: false sensor: - platform: xiaomi_lywsd02mmc mac_address: A4:C1:38:XX:XX:XX temperature: name: 卧室温度 humidity: name: 卧室湿度 battery_level: name: LYWSD02MMC 电量interval与window相同意味着扫描器几乎全程在收包发现设备快但射频占用高设备多时可适当调小window。主动读写BLE 开关需要下发指令的设备如老式 BLE 开关得用ble_client建立连接指定服务和特征值的 UUID 后写入value指定的字节ble_client: - mac_address: 00:1A:7D:DA:71:13 id: ble_switch switch: - platform: ble_client name: BLE 开关 ble_client_id: ble_switch service_uuid: 0000FFE0-0000-1000-8000-00805F9B34FB characteristic_uuid: 0000FFE1-0000-1000-8000-00805F9B34FB value: [0x01]组件细节可在 ble_client 目录 中找到UUID 一般来自设备厂商文档或蓝牙抓包工具。 排障手册现象 → 原因 → 处理现象可能原因处理动作HA 里找不到网关实体api 加密密钥不一致 / OTA 未配核对api.encryption.key确认设备在线BLE 设备一直不出现超出范围、MAC 写错、扫描窗口太小把设备凑近试核对 MAC调大window连接频繁断开槽位不足、5V 供电压降减少connection_slots换足功率电源数据延迟大、偶尔丢包Wi-Fi 省电模式开着power_save_mode: NONE并让网关离路由器近一些升级后设备变砖新固件启动即崩溃配safe_mode组件异常时自动回滚旧固件 进阶与安全性能、扩展与防护内存若同一块板还要跑大屏或显示相关组件在esp32下加psram: true限带 PSRAM 的型号缓冲区可放外存。多设备扩展房间多时可部署多个网关每台专注一个区域HA 侧无需任何特殊配置。通信加密MQTT 走 TLS 时加certificate_authority并指定port: 8883web_server组件如启用务必配auth用户名密码。固件安全ota密码 safe_mode双保险误刷可自救。能力边界网关只负责协议桥接它不能解析 ESPHome 没有对应组件的私有协议设备接入前先确认组件目录里有你的型号。可以继续探索的方向用deep_sleep把网关功耗压到极低、结合 ESP-NOW 做多台网关协同、按 README.md 跟踪项目的组件更新节奏。【免费下载链接】esphomeESPHome is a system to control your ESP32, ESP8266, BK72xx, RP2040 by simple yet powerful configuration files and control them remotely through Home Automation systems.项目地址: https://gitcode.com/GitHub_Trending/es/esphome创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考