Skip to main content

在 XIAO(ESP32-S3) W5500 以太网适配器上使用 ESPHome 连接 Home Assistant

本教程演示如何使用 XIAO W5500 以太网适配器 实现 蓝牙代理,并在 Home Assistant 上进行集成和验证。

在开始本教程之前,请确保满足以下先决条件:

  1. 一台能够运行 Home Assistant 的主机设备。
  2. 稳定的以太网或 Wi-Fi 连接。
  3. (推荐)PoE(以太网供电)功能或外部 5V 电源。
  4. XIAO(ESP32-S3) W5500 以太网适配器
XIAO(ESP32-S3) W5500 以太网适配器

Home Assistant 简介

Home Assistant 是一个功能强大的开源家庭自动化平台,允许您从单一统一界面控制和监控智能家居设备。它充当智能家居的中央枢纽,使您能够自动化例程、监控传感器并创建更智能的生活空间。

ESPHome 集成

ESPHome 是一个专为 ESP8266 / ESP32 设备设计的开源固件创建工具。它允许您使用简单的 YAML 配置文件创建自定义固件,然后可以将其刷写到您的设备上。

ESPHome 入门

蓝牙代理概述

蓝牙代理充当轻量级分布式感知桥梁,将 Home Assistant 的蓝牙覆盖范围扩展到主机内置范围之外。通过在整个空间中部署多个 ESP32 节点,可以建立全屋蓝牙感知网络,实现与各种 BLE 设备的稳定连接,如温湿度传感器、门窗传感器、照明模块和植物监测器。

主要功能:

  • 扩展覆盖范围: 通过利用分布式 ESP32 代理节点实现全屋蓝牙连接,消除对主机蓝牙范围的依赖。
  • 工作原理:
    • XIAO W5500 以太网适配器 启用蓝牙扫描
    • 接收附近的 BLE 广播数据包(例如温度计、智能锁、灯具)
    • 通过 以太网或 Wi-Fi 将数据转发到 Home Assistant
    • Home Assistant 将这些设备识别为 蓝牙实体
    • 用户可以直接在 Home Assistant 界面中查看温度、电池电量、信号强度和其他指标

安装固件

如果您尚未设置 Home Assistant,可以点击此链接并按照官方 Home Assistant 教程完成设置。Home Assistant 安装

步骤 1. 安装 ESPhome

如果您已经安装了 ESPHome,可以跳过此步骤。

  • 转到 Settings -> Add-ons
  • ADD-ON STORE -> Search ESPHome
  • 启动 ESPhome

步骤 2. 添加新设备

转到 ESPHome,点击右下角的 Add New Device 按钮。

为设备命名并选择相应的主控芯片。XIAO W5500 基于 XIAO ESP32-S3 设计。


步骤 3. 安装固件

点击此处复制 yaml 文件
esphome:
name: seeed-esp32-s3
friendly_name: Bluetooth Proxy
min_version: 2025.8.0
name_add_mac_suffix: true

esp32:
variant: esp32s3
framework:
type: esp-idf

ethernet:
type: W5500
cs_pin: GPIO2
clk_pin: GPIO7
mosi_pin: GPIO9
miso_pin: GPIO8

api:
logger:

ota:
- platform: esphome
id: ota_esphome

esp32_ble_tracker:
scan_parameters:
interval: 1100ms
window: 1100ms
active: true

bluetooth_proxy:
active: true

button:
- platform: safe_mode
id: button_safe_mode
name: Safe Mode Boot

- platform: factory_reset
id: factory_reset_btn
name: Factory reset

点击 INSTALL 将代码安装到设备上,您将看到以下图像。

tip

如果您的 Home Assistant 主机(Raspberry PI/Green/Yellow 等)距离您较远,我们建议使用此方法。您可以使用手边的计算机进行安装。

首先,您需要点击 Manual download 下载编译好的固件。

打开此网站,我们将在这里将固件上传到 XIAO(ESP32-S3) W5500 以太网适配器。

返回 ESPHome 下载固件。

选择 Factory 格式。

使用 USB 线缆 将设备连接到您的计算机 并点击 CONNECT

选择 usbmodemxxx(Windows 是 COMxxx)并点击连接。

点击 INSTALL 并选择您刚刚下载的固件。

步骤 4. 查看扫描结果

  • 导航到 SettingsDevices & services → Bluetooth 并选择 Bluetooth Proxy 设备。

  • 选择 Advertisement Monitor 查看扫描到的蓝牙设备信息。

    • Addresss:蓝牙设备的广播地址(MAC 格式)。请注意,这不是实际的物理 MAC 地址——它是由 BLE 隐私机制生成的随机化私有地址,会定期更改。
    • Name:蓝牙设备的广播名称。如果设备广播其名称,此字段有助于识别它。
    • Device:Home Assistant 中识别的蓝牙实体。如果设备尚未配对或识别,此字段保持为空。
    • Source:指示扫描源,即特定的蓝牙代理节点(例如,Bluetooth Proxy 8fed20)。这有助于区分来自多个代理节点的数据。
    • RRSI:接收信号强度指示器(以 dBm 为单位)。值越接近 0,信号越强。
  • 或者,选择 Visualization 访问视图。

    该图显示了 Home Assistant 中的蓝牙广播可视化,说明了蓝牙代理网络的拓扑结构。

tip

许多 BLE 设备出于安全考虑使用隐私地址,这意味着它们的广播地址是随机化的并定期更新。因此,同一物理设备可能在 Home Assistant 的广播列表中以不同的地址出现。 要可靠地识别设备,请使用其广播名称或其他特征,如服务 UUID 或信号强度模式。

应用

通过利用在 XIAO(ESP32-S3) W5500 以太网适配器上实现的蓝牙代理,您可以显著扩展蓝牙覆盖范围以连接蓝牙设备。具体来说,这可以基于不同的蓝牙协议来实现。下面,以 Home Assistant (HA) 的现有集成为例,我们演示了针对智能家居应用场景量身定制的实现方法。

BTHome

BTHome 是一种节能但灵活的 BLE 格式,供设备广播其传感器数据和按钮按压。
以从 DHT11 温湿度传感器读取数据为例,在 Home Assistant (HA) 中添加相应的集成,通过蓝牙代理读取数据,并实现稳定的

除了 XIAO(ESP32-S3) W5500 以太网适配器外,您还需要准备一个 XIAO ESP32-C3 和一个 DHT11 温湿度传感器。

  1. 添加 Arduino 代码
tip

您还需要将 BTHome 文件和 DHT 文件添加到您创建的目录中。具体文件可以在以下位置访问:DHT&BTHome.zip

#include "BTHome.h"
#include "DHT.h"

#define DHTTYPE DHT11 // DHT 11
#define DHTPIN D0 // what pin we're connected to(DHT10 and DHT20 don't need define it)
DHT dht(DHTPIN, DHTTYPE); // DHT11 DHT21 DHT22

#define DEVICE_NAME "DIY-sensor"
#define ENABLE_ENCRYPT

String BIND_KEY = "231d39c1d7cc1ab1aee224cd096db912"; // Change this key with a string containing 32 of: a-f and 0-9 characters (hex) this will be asked in HA
BTHome bthome;

void setup() {
Serial.begin(115200);
#ifdef ENABLE_ENCRYPT
bthome.begin(DEVICE_NAME, true, BIND_KEY, false);
#else
bthome.begin(DEVICE_NAME, false, "", false);
#endif
Wire.begin();
dht.begin();
}

void loop() {
float temp_hum_val[2] = {0};
if (!dht.readTempAndHumidity(temp_hum_val))
{
Serial.print("Humidity: ");
Serial.print(temp_hum_val[0]);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(temp_hum_val[1]);
Serial.println(" *C");
}
else
{
Serial.println("Failed to get temprature and humidity value.");
}

bthome.resetMeasurement();

bthome.addMeasurement(ID_TEMPERATURE_PRECISE, temp_hum_val[1]);//3
bthome.addMeasurement(ID_HUMIDITY_PRECISE, temp_hum_val[0]);//3

bthome.sendPacket();
bthome.stop();
delay(500);
}
  1. 添加集成
  • 打开 Home Assistant 并导航到 Settings。在 Devices & Services 下将发现一个 BTHome 设备。点击 Add,输入密钥(粘贴代码中的 32 字符 BIND_KEY),然后选择 Submit。
  • 提交后,您将被重定向到一个页面,在那里您可以查看传输的温度和湿度数据以及蓝牙 MAC 地址。您还可以选择 Add to dashboard
  • 点击 MAC 地址显示该设备是由在 XIAO(ESP32-S3) W5500 以太网适配器上实现的蓝牙代理发现的。这确认了蓝牙代理按预期运行。
tip

BTHome 协议仅支持向 Home Assistant 的单向数据传输,每个传输的数据对应一个唯一的 ID。如果您希望添加更多设备,请参考 BThome Format

技术支持与产品讨论

感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...