XIAO ESP32S3 sense を ESPHome 経由で Home Assistant に接続する(全ポート対応)
この Wiki では、Seeed Studio XIAO ESP32S3 を Home Assistant 上で動作する ESPHome に接続し、Grove モジュールを XIAO ESP32S3 に接続した後にセンサーデータを送信/デバイスを制御する方法を段階的に説明します。それでは始めましょう!
ESPHome と Home Assistant とは?

ESPHome は、ESP ボードの管理を可能な限りシンプルにすることを目的としたツールです。YAML 設定ファイルを読み込み、ESP デバイスにインストールするカスタムファームウェアを作成します。ESPHome の設定に追加されたデバイスやセンサーは、Home Assistant の UI に自動的に表示されます。ESPHome は、デバイスを接続して Home Assistant デバイスにデータを送信するのに役立ちます。
ハードウェアの準備
このチュートリアルをすべて実行したい場合は、以下を準備する必要があります。
Seeed Studio XIAO ESP32S3 Sense | Seeed Studio Expansion Board | Home Assistant デバイス |
---|---|---|
![]() | ![]() | ![]() |
使用されたセンサー
- Grove - Temperature and Humidity Sensor (BME680)
- Grove -Smart Air Quality Sensor (SGP41)
- 6x10 RGB MATRIX for XIAO
ソフトウェアの準備
Home Assistantのインストール
Home Assistantがすでに稼働していることを確認してください。ODYSSEY-X86 SBCにHome Assistantをインストールする手順についてはこのwikiを、Seeed Mini RouterでHome Assistantを使用する詳細な手順についてはこのリンクを参照してください。
Home AssistantにESPHomeをインストール
ESPHomeはHome Assistantアドオンとして利用でき、アドオンストアから簡単にインストールできます。

- ステップ1. INSTALLをクリック

- ステップ2. すべてのオプションを有効にしてSTARTをクリック

ESPHomeが正常に読み込まれると、以下のウィンドウが表示されます

はじめに
すべてのソフトウェアとハードウェアの準備ができたら、開始できます。
1. Seeed Studio XIAO ESP32S3 (Sense)をESPHomeに追加
- ステップ1. + NEW DEVICEをクリック

- ステップ2. CONTINUEをクリック

- ステップ3. デバイスの名前を入力し、ネットワーク名とパスワードなどのWiFi認証情報を入力します。その後、NEXTをクリック

- ステップ4. ESP32-S3を選択してクリック

- ステップ5. このボードを手動で設定するため、SKIPをクリック

- ステップ6. 新しく作成されたボードの下にあるEDITをクリック

- ステップ7. これによりYAMLファイルが開き、このファイルはすべてのボード設定を行うために使用されます。esp32の下の内容を以下のように編集します
esphome:
name: esp32s3
platformio_options:
build_flags: -DBOARD_HAS_PSRAM
board_build.arduino.memory_type: qio_opi
board_build.f_flash: 80000000L
board_build.flash_mode: qio
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
ota:
wifi:
ssid: "your wifi name"
password: "your password"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Xiao-Esp32s3 Fallback Hotspot"
password: "MoLTqZUvHwWI"
注意: ここでは、ESP32用の最新バージョンのArduinoコアとPlatformIOのESP32サポートを使用しています
- ステップ 8. SAVEをクリックし、次にINSTALLをクリックします

- ステップ 9. USB Type-Cケーブルの一端をSeeed Studio XIAO ESP32S3に接続し、もう一端をreRouter CM4 1432のUSBポートの1つに接続します

- ステップ 10. Plug into the computer running ESPHome Dashboardをクリックします

- ステップ 11. 接続されたポートを選択します。
/dev/ttyACM0
がreRouter CM4 1432に接続されているため、/dev/ttyACM1
である可能性が高いです

2.4GHz Wi-Fiを使用することをお勧めします
これで、必要なボードパッケージがすべてダウンロードされ、ESPHomeファームウェアがXIAO ESP32S3にフラッシュされます。フラッシュが成功すると、以下の出力が表示されます。エラーが表示された場合は、XIAO ESP32S3を再起動するか、BOOTボタンを押しながらXIAO ESP32S3を接続してブートローダーモードに入ってください。

- ステップ 12. 上記のウィンドウには、接続されたボードからのリアルタイムログが表示されます。STOPをクリックして閉じます

- ステップ 13. ボードのステータスがONLINEと表示されている場合、ボードがWiFiに正常に接続されていることを意味します

これで、XIAO ESP32S3をreRouter CM4 1432から切り離し、USBケーブル経由で電源を供給するだけで済みます。これは、今後XIAO ESP32S3にファームウェアをフラッシュしたい場合、USBケーブルでX86ボードに接続することなく、単純にOTAで実行できるためです。
-
- 3つの点をクリックし、Installをクリックします

-
- Wirelesslyを選択すると、変更がワイヤレスでボードにプッシュされます

- ステップ 14. Settingsに移動し、Devices & Servicesを選択します

- ステップ 15. 発見された統合としてESPHomeが表示されます。CONFIGUREをクリックします

- ステップ 16. SUBMITをクリックします

- ステップ 17. FINISHをクリックします

2. GroveモジュールをESPHomeとHome Assistantに接続する
今度はGroveモジュールをSeeed Studio XIAO ESP32S3 (sense)に接続して、Home Assistantを使用してセンサーデータを表示したり、デバイスを制御したりできるようにします!
開発知識
XIAO拡張ボード
Seeed Studio XIAO ESP32S3でGroveモジュールを使用するために、Seeed Studio Expansion Base for XIAOを使用し、その上にXIAO ESP32S3を接続します。
その後、ボード上のGroveコネクタを使用してGroveモジュールを接続できます

ピン定義
GroveモジュールをSeeed Studio XIAO用GroveシールドのGroveコネクタに接続する際は、以下の図に従って適切な内部ピン番号を使用する必要があります。

例えば、GroveモジュールをD0ポートに接続したい場合は、ESPHomeでピンをGPIO1として定義する必要があります。詳細についてはこちらをクリックしてください。
GroveとESPHomeの互換性リスト
現在、以下のGroveモジュールがESPHomeでサポートされています
こちらで確認してください
今度は上記の表から6つのGroveモジュールを選択し、それらがESPHomeとHome Assistantとどのように接続できるかを説明します。
3. Grove接続とデータ伝送
今度はいくつかのGroveモジュールを選択し、それらがESPHomeとHome Assistantとどのように接続できるかを説明します。
Grove - 温湿度センサー (BME680)
セットアップ設定
-
ステップ 1. Grove - Temperature, Humidity, Pressure and Gas Sensor (BME680)をSeeed Studio Expansion Base for XIAOのI2Cコネクタの1つに接続します
-
ステップ 2. 以前に作成したxiao-esp32s3-bme680.yamlファイル内で、ファイルを変更してOTA経由でXIAO ESP32S3にプッシュします
# Configuration for ESPHome
esphome:
# Name of the ESP32-S3 device
name: esp32s3
# PlatformIO build options
platformio_options:
build_flags: -DBOARD_HAS_PSRAM
board_build.arduino.memory_type: qio_opi
board_build.f_flash: 80000000L
board_build.flash_mode: qio
# Configuration for ESP32
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
# Over-the-Air update configuration
ota:
# Wi-Fi configuration
wifi:
ssid: "your wifi name"
password: "your password"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Xiao-Esp32s3 Fallback Hotspot"
password: "MoLTqZUvHwWI"
# Captive portal configuration
captive_portal:
# I2C configuration for BME680 sensor
i2c:
sda: GPIO5
scl: GPIO6
# BME680 sensor configuration
sensor:
- platform: bme680
temperature:
name: "BME680 Temperature"
oversampling: 16x
pressure:
name: "BME680 Pressure"
humidity:
name: "BME680 Humidity"
gas_resistance:
name: "BME680 Gas Resistance"
address: 0x76
update_interval: 60s
BME680コンポーネントについてはこちらで詳しく学ぶことができます。BME280、BME680、BMP085、BMP280、AHT10、AHT20、AHT21ベースのセンサーを使用することができます。ここではAHT20がI2Cプロトコルを使用して通信するため、I²C Busコンポーネントを追加します。
ダッシュボードでの可視化
- ステップ1. Home Assistantの概要ページで、3つの点をクリックし、Edit Dashboardをクリックします

- ステップ2. + ADD CARDをクリックします

- ステップ3. By ENTITYを選択し、temperatureと入力してTemperatureの横のチェックボックスを選択します

-
ステップ4. Humidity、Gas Resitance、Pressureについても同様に繰り返します
-
ステップ5. CONTINUEをクリックします
-
ステップ6. ADD TO DASHBOARDをクリックします
これでHome Assistantダッシュボードは以下のようになります

- ステップ7. センサーデータをゲージとして可視化することもできます。BY CARDの下のGaugeをクリックします

- ステップ8. ドロップダウンメニューからTemperatureを選択します

-
ステップ9. SAVEをクリックします
-
ステップ10. Humidity、Gas Resitance、Pressureについても同様に繰り返します
-
これでダッシュボードは以下のようになります

Grove -Smart Air Quality Sensor (SGP41)
- ステップ1. Grove - Smart Air Quality Sensor (SGP41)をSeeed Studio Expansion Base for XIAOのI2Cコネクターの1つに接続します

- ステップ2. 以前に作成したxiao-esp32S3.yamlファイル内で、ファイルを変更してOTA経由でXIAO ESP32S3 senseにプッシュします
# Configuration for ESPHome
esphome:
# Name of the ESP32-S3 device
name: esp32s3
# PlatformIO build options
platformio_options:
build_flags: -DBOARD_HAS_PSRAM
board_build.arduino.memory_type: qio_opi
board_build.f_flash: 80000000L
board_build.flash_mode: qio
# Configuration for ESP32
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
# Over-the-Air update configuration
ota:
# Wi-Fi configuration
wifi:
ssid: "your wifi name"
password: "your password"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Xiao-Esp32s3 Fallback Hotspot"
password: "MoLTqZUvHwWI"
# Captive portal configuration
captive_portal:
# SPI configuration
spi:
clk_pin: GPIO8
mosi_pin: GPIO10
miso_pin: GPIO9
# I2C configuration for BME680 sensor
i2c:
sda: GPIO5
scl: GPIO6
scan: True
id: bus_a
frequency: 1MHz
# Sensor configuration for SGP4X
sensor:
- platform: sgp4x
voc:
id: sgp41_voc
name: "VOC Index"
nox:
id: sgp41_nox
name: "NOx Index"
- ステップ 3. 補償を使用した例 compensation(オプション):補償に使用されるセンサーを含むブロック。設定されていない場合、デフォルト値が使用されます。 温度・湿度センサー(BME680)を使用してスマート空気品質センサー(SGP41)を補償します。 更新された xiao-esp32S3.yaml ファイルは以下の通りです:
# Configuration for ESPHome
esphome:
# Name of the ESP32-S3 device
name: esp32s3
# PlatformIO build options
platformio_options:
build_flags: -DBOARD_HAS_PSRAM
board_build.arduino.memory_type: qio_opi
board_build.f_flash: 80000000L
board_build.flash_mode: qio
# Configuration for ESP32
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
# Over-the-Air update configuration
ota:
# Wi-Fi configuration
wifi:
ssid: "your wifi name"
password: "your password"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Xiao-Esp32s3 Fallback Hotspot"
password: "MoLTqZUvHwWI"
# Captive portal configuration
captive_portal:
# SPI configuration
spi:
clk_pin: GPIO8
mosi_pin: GPIO10
miso_pin: GPIO9
# I2C configuration for BME680 sensor
i2c:
sda: GPIO5
scl: GPIO6
scan: True
id: bus_a
frequency: 1MHz
# BME680 sensor configuration
sensor:
- platform: bme680
temperature:
id: bme680_temp
name: "BME680 Temperature"
oversampling: 16x
pressure:
name: "BME680 Pressure"
humidity:
id: bme680_hum
name: "BME680 Humidity"
gas_resistance:
name: "BME680 Gas Resistance"
address: 0x76
# SGP4X sensor configuration
- platform: sgp4x
voc:
name: "VOC Index"
nox:
name: "NOx Index"
compensation:
humidity_source: bme680_hum
temperature_source: bme680_temp
注意: このセンサーは十分なデータサンプルを収集するために90サイクルを消費し、現在のところ警告を回避することはできません。

ダッシュボードでの可視化
前回と同様です。

OV2640/OV3660 カメラ (XIAO ESP32S3 Sense)
セットアップ設定
-
ステップ 1. OV2640またはOV660カメラ外部ボードをxiao esp32s3 senseに接続します
-
ステップ 2. 以前に作成したxiao-esp32s3-camera.yamlファイル内で、ファイルを変更してOTA経由でXIAO ESP32S3 senseにプッシュします
# Configuration for ESPHome
esphome:
# Name of the ESP32-S3 device
name: esp32s3
# PlatformIO build options
platformio_options:
build_flags: -DBOARD_HAS_PSRAM
board_build.arduino.memory_type: qio_opi
board_build.f_flash: 80000000L
board_build.flash_mode: qio
# Configuration for ESP32
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
# Over-the-Air update configuration
ota:
# Wi-Fi configuration
wifi:
ssid: "your wifi name"
password: "your password"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Xiao-Esp32s3 Fallback Hotspot"
password: "MoLTqZUvHwWI"
# Captive portal configuration
captive_portal:
# Configuration for the ESP32 Camera
esp32_camera:
id: espcam
name: My Camera
external_clock:
pin: GPIO10
frequency: 20MHz
i2c_pins:
sda: GPIO40
scl: GPIO39
data_pins: [GPIO15, GPIO17, GPIO18, GPIO16, GPIO14, GPIO12, GPIO11, GPIO48]
vsync_pin: GPIO38
href_pin: GPIO47
pixel_clock_pin: GPIO13
resolution: 800x600
# Configuration for the ESP32 Camera Web Server
esp32_camera_web_server:
- port: 8080
mode: stream
- port: 8081
mode: snapshot
注意: 詳細については、こちらをお読みください。
ダッシュボードでの可視化
- ステップ 1. Home Assistantの概要ページで、3つの点をクリックし、Edit Dashboardをクリックします

- ステップ 2. + ADD CARDをクリックします

- ステップ 3. By ENTITYを選択し、Cameraと入力してMy Cameraを選択します

- ステップ 4. Add to Dashboardをクリックします

- ステップ 5. ダッシュボードでWebストリームを表示する際、アイドルモードになっており、1分間に数フレームのみ更新されます。カードをクリックするとアクティブモードに移行し、通常は1秒間に1〜10フレームの更新レートになります。このチュートリアルでは、更新レートは約4フレーム/秒です。

音声アシスタント用PDMマイクロフォン
セットアップ設定
- ステップ 1. 以前に作成したxiao-esp32s3-microphone.yamlファイル内で、ファイルを変更し、OTA経由でXIAO ESP32S3 senseにプッシュします
# Configuration for ESPHome
esphome:
name: esp32s3
platformio_options:
build_flags: -DBOARD_HAS_PSRAM
board_build.arduino.memory_type: qio_opi
board_build.f_flash: 80000000L
board_build.flash_mode: qio
# Configuration for ESP32
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
# Over-the-Air update configuration
ota:
# Wi-Fi configuration
wifi:
ssid: "your wifi name"
password: "your password"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Xiao-Esp32s3 Fallback Hotspot"
password: "MoLTqZUvHwWI"
# Captive portal configuration
captive_portal:
# Configuration for the status LED light
light:
- platform: status_led
id: light0
name: "Voice Assistant State"
pin:
number: GPIO21
inverted: true
# Configuration for I2S audio
i2s_audio:
i2s_lrclk_pin: GPIO46 # Note: labeled as "useless"
i2s_bclk_pin: GPIO42
# Configuration for the microphone using I2S audio
microphone:
- platform: i2s_audio
id: echo_microphone
i2s_din_pin: GPIO41
adc_type: external
pdm: true
# Configuration for the Voice Assistant
voice_assistant:
microphone: echo_microphone
# Configuration for the binary sensor (Boot Switch)
binary_sensor:
- platform: gpio
pin:
number: GPIO2
mode:
input: true
pullup: true
name: Boot Switch
internal: true
on_press:
- voice_assistant.start:
- light.turn_off: light0
on_release:
- voice_assistant.stop:
- light.turn_on: light0
注意: 詳細については、こちらをお読みください。
ダッシュボードでの可視化
- ステップ 1. Home Assistantの概要ページで、3つの点をクリックし、Edit Dashboardをクリックします

- ステップ 2. + ADD CARDをクリックします

- ステップ 3. By ENTITYを選択し、Esp32S3 Assist in progress、Esp32S3 Assist in progress、Esp32S3 Finished speaking detection、Status、voice assistant stateを選択します


- ステップ 4. Add to Dashboardをクリックします

- ステップ 5. Seeed Studio Expansion Base for XIAOの**Button(D1)**を押すと、esp32s3のユーザー定義LED(GPIO2)が点灯し、音声アシスタントを通じてesphomeと会話できます。

注意: 詳細については、こちらをお読みください。
XIAO用6x10 RGB MATRIX
セットアップ設定
-
ステップ 1. まず、6x10 RGB MATRIXをXIAOに接続する必要があります。詳細についてはこのWikiを参照してください。
-
ステップ 2. 以下の.yaml情報をコピーし、OTA経由でXIAO ESP32S3にプッシュします。
esphome:
name: sixtyled
friendly_name: sixtyled
esp32:
board: seeed_xiao_esp32s3
variant: esp32s3
framework:
type: arduino
version: latest
platform_version: 6.4.0
# Enable logging
logger:
# Enable Home Assistant API
api:
ota:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Sixtyled Fallback Hotspot"
password: "MoLTqZUvHwWI"
captive_portal:
light:
- platform: esp32_rmt_led_strip
rgb_order: GRB
pin: GPIO1
num_leds: 60
rmt_channel: 0
chipset: ws2812
name: "XIAO LEDS"
ダッシュボードでの可視化
- ステップ 1. パス
Setting - Devices&services - ESPHome - sixtyled(設定した名前)
を開いて、ダッシュボードにカードを追加します。

- ステップ 2. Home Assistantの概要ページで、3つの点をクリックし、Edit Dashboardをクリックします

- ステップ 3. + ADD CARDをクリックします

- ステップ 4. By ENTITYを選択し、xiaoと入力して、sixtyled XIAO LEDSの横にあるチェックボックスを選択します

- ステップ 5. CONTINUEをクリックし、Add to Dashboardをクリックします

- ステップ 6. その後、「概要」セクションでXIAO用の6x10 RGB MATRIXを制御できるカードを見つけることができます。ここで、オン/オフ状態を切り替え、色と明度をカスタマイズできます。

✨ コントリビュータープロジェクト
- このプロジェクトはSeeed Studioのコントリビュータープロジェクトによってサポートされています。
- Zacharyの努力に感謝し、あなたの作品は展示されます。
- pythonの努力に感謝し、プロジェクトのソースはこちらで共有されています。
技術サポート & 製品ディスカッション
私たちの製品をお選びいただき、ありがとうございます!私たちは、お客様の製品体験が可能な限りスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、複数のコミュニケーションチャンネルを提供しています。