Skip to main content

Home Assistant 用 ESPHome on XIAO(ESP32-S3) W5500 Ethernet Adapter

このチュートリアルでは、XIAO W5500 Ethernet Adapter を使用して Bluetooth Proxy を実装し、Home Assistant での統合と検証を行う方法を説明します。

このチュートリアルを進める前に、以下の前提条件が満たされていることを確認してください:

  1. Home Assistant を実行できるホストデバイス。
  2. 安定したイーサネットまたは Wi-Fi 接続。
  3. (推奨)PoE(Power over Ethernet)機能または外部 5V 電源。
  4. XIAO(ESP32-S3) W5500 Ethernet Adapter
XIAO(ESP32-S3) W5500 Ethernet Adapter

Home Assistant の紹介

Home Assistant は、単一の統合インターフェースからスマートホームデバイスを制御・監視できる強力なオープンソースホームオートメーションプラットフォームです。スマートホームの中央ハブとして機能し、ルーチンの自動化、センサーの監視、より知的な生活空間の構築を可能にします。

ESPHome 統合

ESPHome は ESP8266 / ESP32 デバイス専用に設計されたオープンソースファームウェア作成ツールです。シンプルな YAML 設定ファイルを使用してカスタムファームウェアを作成し、デバイスにフラッシュできます。

ESPHome の開始

Bluetooth Proxy 概要

Bluetooth Proxy は、Home Assistant の Bluetooth カバレッジをホストの内蔵範囲を超えて拡張する軽量な分散センシングブリッジとして機能します。空間全体に複数の ESP32 ノード を配置することで、家全体の Bluetooth センシングネットワークを構築し、温湿度センサー、ドア/窓センサー、照明モジュール、植物モニターなど、さまざまな BLE デバイスへの安定した接続を可能にします。

主要機能:

  • 拡張カバレッジ: 分散 ESP32 プロキシノードを利用してホストの Bluetooth 範囲への依存を排除し、家全体の Bluetooth 接続を実現します。
  • 動作原理:
    • XIAO W5500 Ethernet Adapter が Bluetooth スキャンを有効にします
    • 近くの BLE ブロードキャストパケット(温度計、スマートロック、ライトなど)を受信します
    • データは イーサネットまたは Wi-Fi 経由で Home Assistant に転送されます
    • Home Assistant はこれらのデバイスを Bluetooth エンティティ として認識します
    • ユーザーは Home Assistant インターフェースで温度、バッテリーレベル、信号強度、その他のメトリクスを直接確認できます

ファームウェアのインストール

Home Assistant をまだセットアップしていない場合は、このリンクをクリックして公式の Home Assistant チュートリアルに従ってセットアップを完了してください。Home Assistant Installation

ステップ 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 Ethernet Adapter にファームウェアをアップロードします。

ESPHome に戻ってファームウェアをダウンロードします。

Factory format を選択します。

USB ケーブルを使用してデバイスをコンピューターに接続し、CONNECT をクリックします。

usbmodemxxx(Windows では COMxxx)を選択し、connect をクリックします。

INSTALL をクリックし、先ほどダウンロードしたファームウェアを選択します。

ステップ4. スキャン結果の確認

  • SettingsDevices & services → Bluetoothに移動し、Bluetooth Proxyデバイスを選択します。

  • Advertisement Monitorを選択して、スキャンされたBluetoothデバイス情報を表示します。

    • Address: Bluetoothデバイスのブロードキャストアドレス(MAC形式)。これは実際の物理MACアドレスではなく、BLEプライバシーメカニズムによって生成されるランダム化されたプライベートアドレスで、定期的に変更されることに注意してください。
    • Name: Bluetoothデバイスのアドバタイズされた名前。デバイスがその名前をブロードキャストする場合、このフィールドがデバイスの識別に役立ちます。
    • Device: Home Assistantで認識されたBluetoothエンティティ。デバイスがまだペアリングまたは識別されていない場合、このフィールドは空のままです。
    • Source: スキャンソース、つまり特定のBluetooth Proxyノード(例:Bluetooth Proxy 8fed20)を示します。これは複数のプロキシノードからのデータを区別するのに役立ちます。
    • RRSI: 受信信号強度インジケータ(dBm単位)。値が0に近いほど、信号が強くなります。
  • または、Visualizationを選択してビューにアクセスします。

    図は、Home AssistantのBluetooth Advertisement Visualizationを示しており、Bluetoothプロキシネットワークのトポロジーを説明しています。

tip

多くのBLEデバイスはセキュリティのためにプライバシーアドレスを使用しており、ブロードキャストされるアドレスがランダム化され、定期的に更新されることを意味します。その結果、同じ物理デバイスがHome Assistantのアドバタイズメントリストに異なるアドレスで表示される場合があります。 デバイスを確実に識別するには、アドバタイズされた名前やサービスUUID、信号強度パターンなどの他の特性を使用してください。

アプリケーション

XIAO(ESP32-S3) W5500 Ethernet Adapterに実装されたBluetoothプロキシを活用することで、Bluetoothカバレッジを大幅に拡張してBluetoothデバイスを接続できます。具体的には、これは異なるBluetoothプロトコルに基づいて実現できます。以下では、Home Assistant(HA)の既存の統合を例に、スマートホームアプリケーションシナリオに合わせた実装方法を示します。

BTHome

BTHomeは、デバイスがセンサーデータとボタン押下をブロードキャストするためのエネルギー効率的で柔軟なBLE形式です。
DHT11温湿度センサーからデータを読み取る例として、Home Assistant(HA)に対応する統合を追加し、Bluetoothプロキシ経由でデータを読み取り、安定した

XIAO(ESP32-S3) W5500 Ethernet Adapterに加えて、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に移動します。BTHomeデバイスがDevices & Servicesの下で発見されます。Addをクリックし、キー(コードから32文字のBIND_KEYを貼り付け)を入力し、Submitを選択します。
  • 送信後、送信された温度と湿度データ、およびBluetooth MACアドレスを表示できるページにリダイレクトされます。Add to dashboardを選択することもできます。
  • MACアドレスをクリックすると、デバイスがXIAO(ESP32-S3) W5500 Ethernet Adapterに実装されたBluetoothプロキシによって発見されたことが明らかになります。これにより、Bluetoothプロキシが意図したとおりに機能していることが確認されます。
tip

BTHomeプロトコルはHome Assistantへの一方向データ送信のみをサポートし、送信される各データは一意のIDに対応します。より多くのデバイスを追加したい場合は、BThome Formatを参照してください。

技術サポート & 製品ディスカッション

弊社製品をお選びいただき、ありがとうございます!弊社製品での体験が可能な限りスムーズになるよう、さまざまなサポートを提供しています。さまざまな好みやニーズに対応するため、複数のコミュニケーションチャネルを提供しています。

Loading Comments...