Skip to main content

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 SenseSeeed Studio Expansion BoardHome Assistant デバイス

使用されたセンサー

ソフトウェアの準備

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である可能性が高いです
tip

2.4GHz Wi-Fiを使用することをお勧めします

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

  • ステップ 12. 上記のウィンドウには、接続されたボードからのリアルタイムログが表示されます。STOPをクリックして閉じます
  • ステップ 13. ボードのステータスがONLINEと表示されている場合、ボードがWiFiに正常に接続されていることを意味します
tip

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

    1. 3つの点をクリックし、Installをクリックします
    1. 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. HumidityGas ResitancePressureについても同様に繰り返します

  • ステップ5. CONTINUEをクリックします

  • ステップ6. ADD TO DASHBOARDをクリックします

これでHome Assistantダッシュボードは以下のようになります

  • ステップ7. センサーデータをゲージとして可視化することもできます。BY CARDの下のGaugeをクリックします
  • ステップ8. ドロップダウンメニューからTemperatureを選択します
  • ステップ9. SAVEをクリックします

  • ステップ10. HumidityGas ResitancePressureについても同様に繰り返します

  • これでダッシュボードは以下のようになります


Grove -Smart Air Quality Sensor (SGP41)

  • ステップ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 progressEsp32S3 Assist in progressEsp32S3 Finished speaking detectionStatusvoice 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の努力に感謝し、プロジェクトのソースはこちらで共有されています。

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

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

Loading Comments...