Skip to main content

XIAO ESP32C3 が ESPHome サービス経由で Home Assistant にアクセスする

この記事では、独自の Home Assistant 環境に ESPHome サービスをインストールする方法をガイドします。XIAO ESP32C3 の WiFi 機能を使用することで、XIAO を非常にスムーズに Home Assistant にホーム端末の一部として接続できるようになります。

さらに、最も人気のある 24GHz mmWave Human Static Presence Module Lite と組み合わせて、人感検知機能を持つ Home Assistant を構築します。

はじめに

tip

2023年7月31日現在、レーダーが完全に動作しなくなる以前の問題は修正されましたので、このチュートリアルが正常に動作するように、ライブラリファイルとコンフィギュレーターを更新してください。

このチュートリアルをすべて実行したい場合は、以下を準備する必要があります。

XIAO ESP32C324GHz mmWave Human Static
Presence Module Lite

このプロジェクトの最終目標は、24GHz mmWave Human Static Presence Module Lite を Home Assistant にデプロイすることです。

このプロジェクトでは、24GHz mmWave Human Static Presence Module Lite の完全な設定ファイルとライブラリを作成し、センサーを Home Assistant に迅速にデプロイできるようにしました。

このチュートリアルの内容は、大まかに以下の手順で進めます。

  1. Home Assistant 環境の選択
  2. Home Assistant での ESPHome のインストールと設定
  3. XIAO ESP32C3 と ESPHome 接続の設定
  4. Home Assistant パネルの設定

もちろん、XIAO ESP32C3 が Home Assistant で Grove をどのように使用するかに興味がある場合は、この章を直接読むことができます。

Home Assistant 環境の選択

このルーチンでは、Home Assistant 環境のインストール方法については詳しく説明しません。すでに動作する Home Assistant デバイスをお持ちであることを前提とします。

Home Assistant のインストール方法を学びたい場合は、公式チュートリアルを参照してください。x86 デバイスを使用して Home Assistant をインストールすることを強く推奨します。これは、Supervised で Home Assistant をインストールする最もユーザーフレンドリーな方法だからです。

上記の表によると、Home Assistant OSHome Assistant Supervised をインストールするのが最も適切で、多くの手間を省くことができます。OpenWRT(例:LinkStar H68K を使用)で Docker 上で Home Assistant を実行している場合でも、ご心配なく、これを行う方法についても詳細な参考資料を提供します。

Seeed Studio の一部の製品について Home Assistant のインストール方法も書いていますので、参照してください。

Home Assistant での ESPHome のインストール

ステップ 1. ESPHome のインストール

  • シナリオ 1:Home Assistant OS での ESPHome インストール(Add-on Store あり)

Home Assistant OS がインストールされている場合、Add-on Store があるため、ESPHome のインストールがはるかに簡単になります。

Add-on Store で ESPHome を検索してインストールできます。

  • シナリオ 2:OpenWRT Docker/Docker での Home Assistant での ESPHome インストール(Add-on Store なし)

Home Assistant Container をインストールしているため、Add-on Store 経由で ESPHome サービスを簡単にダウンロードできないので、妥協案が必要です。

ESPHome イメージをダウンロードする必要があります。

esphome/esphome:latest

コンテナが作成されるページで、いくつかの簡単な設定を行う必要があります。

  • Container Name: あなたのコンテナ名
  • Docker Image: ダウンロードしたばかりの esphome イメージを選択
  • Network: host モードを選択
  • Environment Variables(-e): あなたの環境変数

上記を入力したら、保存して適用します。コンテナが作成されたことが確認できます。また、それを開始する必要があります。

Home Assistant で ESPHome をダウンロードするのと同じ効果を実現するために、Home Assistant の設定ファイルを変更する必要があります。

Home Assistant コンテナに移動します。

Home Assistant のターミナルに移動します。

ターミナルで以下のコマンドを入力します。

vi configuration.yaml

configuration.yaml の末尾に以下の内容を追加してください。

# Example configuration.yaml entry
panel_iframe:
esphome:
title: "ESPHome"
url: "http://192.168.100.1:6052"
icon: mdi:chip

dockerコンテナから出るには、Home Assistantコンテナシェルでexitと入力します。これが完了したら、Home Assistantコンテナを再起動します。

新しいブラウザページを作成し、アドレスhttp://homeassistant:8123/を入力してHome Assistantアカウントにログインすると、左側のツールバーにESPHomeが表示されます。

XIAO ESP32C3とESPHomeの接続を設定する

ステップ2. ハードウェアの準備

このチュートリアルの目標は、Home Assistantダッシュボードで24GHz mmWave人体静的存在モジュールLiteのデータ情報を確認できるようにすることです。

メインボードを通してデバイスをコンピュータに接続します。配線図は以下の表に示されています。

XIAO ESP32C324GHz mmWave人体静的
存在モジュールLite
5V-->5V
GND-->GND
D2-->RX
D3-->TX

ステップ3. XIAO ESP32C3とHome Assistantを同じLANに接続する

Home Assistantがすでにネットワークに接続されていることを確認してください。例えば、ネットワークケーブルを介してデバイスに接続している場合です。その後、XIAO ESP32C3もこのネットワークに接続できるように、ローカルネットワーク(例:WiFi)をオンにするだけです。

以下では、LinkStar H68Kを例として使用します。私の目標は、XIAOをLinkStar H68Kのホットスポットに接続することです。

OpenWRTのNetworkタブで、Wireless --> ADDを選択します。

Device ConfigurationTransmit Powerでは、autoを選択します。

Interface Configuration設定については、以下の指示に従って入力してください。

  • General Setup
    • Mode: LinkStarがインターネットにアクセスする方法によって異なります。ケーブル接続を使用している場合はClientを選択し、WiFiに接続している場合はAccess Pointを選択します。
    • ESSID: WiFiの名前を入力してください。スペースや特殊文字は避けるようにしてください。
    • Network: lanにチェックを入れます。
  • Wireless Security
    • Encryption: WPA2-PSK
    • Key: 設定したいWiFiパスワードを入力します。

上記の情報を入力したら、右下のSave and Applyをクリックし、LinkStarがホットスポットを開くまで少し待ちます。

このホットスポットにデバイスが接続されていない場合、信号なしと表示されます。

すべてを考慮して、Home Assistantページに戻りましょう。

NEW DEVICEをクリックします。次にContinueをクリックします。

新しいポップアップウィンドウで、設定したいアプリケーションの名前と、LinkStarで設定したホットスポットの名前とパスワード(または独自のWiFi)を入力してください。XIAO ESP32C3とHome Assistantが同じLAN上にあることを確認してください。

次にNextをクリックします。

デバイスタイプでは、ESP32-C3を選択してください。

次にNextをクリックします。

Encryption keyをクリックして、安全な場所に保存してください。このキーは後のステップで使用します。

次にSKIPをクリックします。

ステップ4. XIAO ESP32C3の設定yamlファイルを変更する

次に、作成したデバイスタブをクリックし、左下のEDITボタンを押します。

このyamlファイルに変更を加える必要があることに注意してください。変更する内容を2つの主要部分に分けており、下図の①と②に対応しています。

  • の内容では、設定したデバイス名以外は変更しないでください。残りの内容については、以下のコードを参照してください。
# part 1:
substitutions:
name: "xiao-esp32c3"
friendly_name: "XIAO ESP32C3"

esphome:
name: "${name}"
friendly_name: "${friendly_name}"
name_add_mac_suffix: true
project:
name: "seeedstudio.mmwave_kit"
version: "2.0"
platformio_options:
board_build.flash_mode: dio
board_build.mcu: esp32c3

external_components:
- source: github://limengdu/mmwave-kit-external-components@main
refresh: 0s

esp32:
board: esp32-c3-devkitm-1
variant: esp32c3
framework:
type: esp-idf

# Enable logging
logger:
hardware_uart: USB_SERIAL_JTAG
level: DEBUG
  • コンテンツの で、captive_portal: の後に以下のコードをコピーしてください。
完全なコードをプレビューするにはここをクリック
# Sets up Bluetooth LE (Only on ESP32) to allow the user
# to provision wifi credentials to the device.
esp32_improv:
authorizer: none

# Sets up the improv via serial client for Wi-Fi provisioning.
# Handy if your device has a usb port for the user to add credentials when they first get it.
# improv_serial: # Commented until improv works with usb-jtag on idf

uart:
id: uart_bus
baud_rate: 115200
rx_pin: 4
tx_pin: 5
parity: NONE
stop_bits: 1

seeed_mr24hpc1:
id: my_seeed_mr24hpc1

text_sensor:
- platform: seeed_mr24hpc1
heart_beat:
name: "Heartbeat"
product_model:
name: "Product Model"
product_id:
name: "Product ID"
hardware_model:
name: "Hardware Model"
hardware_version:
name: "Hardware Version"
keep_away:
name: "Active Reporting Of Proximity"
motion_status:
name: "Motion Information"
custom_mode_end:
name: "Custom Mode Status"

binary_sensor:
- platform: seeed_mr24hpc1
has_target:
name: "Presence Information"

sensor:
- platform: seeed_mr24hpc1
custom_presence_of_detection:
name: "Static Distance"
movement_signs:
name: "Body Movement Parameter"
custom_motion_distance:
name: "Motion Distance"
custom_spatial_static_value:
name: "Existence Energy"
custom_spatial_motion_value:
name: "Motion Energy"
custom_motion_speed:
name: "Motion Speed"
custom_mode_num:
name: "Current Custom Mode"

switch:
- platform: seeed_mr24hpc1
underlying_open_function:
name: Underlying Open Function Info Output Switch

button:
- platform: seeed_mr24hpc1
restart:
name: "Module Restart"
custom_set_end:
name: "End Of Custom Mode Settings"

select:
- platform: seeed_mr24hpc1
scene_mode:
name: "Scene"
unman_time:
name: "Time For Entering No Person State (Standard Function)"
existence_boundary:
name: "Existence Boundary"
motion_boundary:
name: "Motion Boundary"

number:
- platform: seeed_mr24hpc1
sensitivity:
name: "Sensitivity"
custom_mode:
name: "Custom Mode"
existence_threshold:
name: "Existence Energy Threshold"
motion_threshold:
name: "Motion Energy Threshold"
motion_trigger:
name: "Motion Trigger Time"
motion_to_rest:
name: "Motion To Rest Time"
custom_unman_time:
name: "Time For Entering No Person State (Underlying Open Function)"

次に、右上の保存ボタンをクリックしてください。

ステップ5. XIAO ESP32C3にファームウェアをアップロード

  • 方法1: 直接コンパイルしてアップロード

x86デバイスを使用していて、デバイスポートでXIAOが確認できる場合は、プログラムをコンパイルしてXIAOにアップロードできます。

XIAOをデバイスに接続します。

デバイスバーの右下にある3つの点をクリックし、Installを選択します。

Plug into the computer running ESPHome Dashboardをクリックします。

接続されたポートを選択します。

これで、必要なボードパッケージがすべてダウンロードされ、ESPHomeファームウェアがXIAO ESP32C3に書き込まれます。書き込みが成功すると、以下の出力が表示されます。

XIAOをデバイスに接続してもポートが見つからない場合は、2番目の方法を試してください。

  • 方法2: ホストを使用してコンパイル済みファームウェアをアップロード

LinkStar H68Kのようなソフトルーターは外部MCUデバイスの認識をサポートしていないため、まずコンパイル済みファームウェアをダウンロードし、その後別のPCを介してファームウェアをアップロードする必要があります。

右上のInstallボタンをクリックします。次に最後の項目Manual downloadを選択します。

Modern formatを選択します。

その後、ダウンロードとコンパイルに長時間かかりますので、しばらくお待ちください。すべての準備が整うと、ファームウェアが自動的にコンピューターにダウンロードされます。

XIAO ESP32C3にファームウェアをアップロードするには、いくつかのオプションがあります。ここでは2つの方法を紹介します:

適切なドライバーがインストールされていることを確認してください。以下は、ESPデバイスで使用される一般的なチップのドライバーです。

  1. CP2102ドライバー: Windows & Mac

  2. CH342、CH343、CH9102ドライバー: WindowsMac

  3. CH340、CH341ドライバー: WindowsMac

ChromeまたはEdgeウェブブラウザでESPhome Webツールを開きます。

CONNECTをクリックします。

ポップアップウィンドウでXIAO ESP32シリアルポートを選択します。

INSTALLをクリックし、上記の手順でダウンロードした.binファイルを選択します。

ドライバーをインストールしてブラウザを変更しても方法1でファームウェアをアップロードできない場合は、方法2を試してください。具体的なインストール方法と手順については、公式チュートリアルを参照してください。

tip

XIAO ESP32C3のログメッセージを観察したい場合は、このソフトウェアのView Logsボタンからも確認できます。

アップロードが完了したら、XIAO ESP32C3をPCから切断し(ログを確認する必要がない限り)、XIAOに単独で電源を供給するだけです。

すべてがうまくいけば、XIAO ESP32C3は設定したWiFiを検索して接続します。

私の場合と同様に、LinkStar H68Kのネットワークを使用します。ネットワークオプションでそれを見つけることができ、LinkStar H68Kによって割り当てられたIPアドレスを確認できます。

通常、この時点でHome Assistantでは、デバイスのステータスもオフラインからオンラインに変わります。

Home Assistant パネルの設定

ステップ 6. XIAO ESP32C3 への接続

LAN 上に多くの Home Assistant デバイスがない場合、Home Assistant は自動的に ESP デバイスを検索し、デバイスタブに追加することができます。このデバイスは 設定デバイスとサービス タブ内で確認できます。

自動検索されない場合は、XIAO ESP32C3 の IP アドレスに基づいて接続することもできます。

統合を追加 をクリックし、esphome を検索します。

次に、ポート番号 6053 を含む XIAO ESP32C3 の IP アドレスを入力します。その後、送信 をクリックします。

入力した IP アドレスとポート番号が正しい場合、暗号化キーの入力を求められます。これはステップ 4 で保存するよう指示したものです。

その後、送信 をクリックします。

この時点で、デバイス追加の手順が正常に完了しました。

ステップ 7. 24GHz mmWave Module Lite 機能概要

スイートの全機能とこれらの機能の使用方法を素早く理解するために、このセクションを注意深く読む必要があります。より詳細な情報が必要な場合は、製品のユーザーマニュアルを読むことをお勧めします。

ダッシュボードの設定とパラメータの詳細については、ESPHome Docs で詳細な記事をまとめましたので、完全な記事と詳細を読むためにそちらに移動してください。

ステップ 8. Home Assistant パネルの設定

デフォルトのカードがデータ表示において非常に退屈で使いにくいと感じる場合、Home Assistant は選択できる幅広い既製のダッシュボードを提供しています。

お好みに合わせて独自のダッシュボードを作成できます。

例えば、情報出力を制御するオプションを素敵なスイッチに変更できます。

人の動きの速度を視覚的なダッシュボード表示に変更できます。

これが私が作成したものです。スマートホーム制御センターの素質があるように見えます。

これまでで、チュートリアルの内容を正常に完了しました。

XIAO ESP32C3を使用してGroveをHome Assistantに接続する

もちろん、XIAO ESP32C3にはHome Assistantでの24GHz mmWave人体静的存在検知モジュールLiteのサポート以上の機能があり、このドキュメントでより多くのチュートリアルを見つけて独自の用途に活用できます。

創造力を発揮してください!

トラブルシューティング

FAQ1: ESPhome Webツールを使用してファームウェアをアップロードする際に以下のエラーが発生しました。どのように修正できますか?

A: アップロード中にこのプロンプトが表示された場合は、XIAO ESP32C3をPCから切断してください。その後、BOOTボタンを押したまま、BOOTボタンを押し続けながらボードをPCに接続し、ボタンを離してブートローダーモードに入ります。この時点で再接続してファームウェアを再度アップロードすれば十分です。

FAQ2: esphome flasherのチュートリアルに従ってLinux環境でesphome flasherをインストールできません?

A: 以下のコマンドを実行する際は、システムバージョンを選択する必要があります。そうしないとエラーが発生します。例えば、私のコンピューターがUbuntu 22.04の場合、実行すべきコマンドは以下の通りです。

sudo apt install python3

pip3 install -U \
-f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-22.04/ \
wxPython

pip3 install esphomeflasher

FAQ3: 正しいWiFiとパスワードを入力したのに、XIAO ESP32C3のIPアドレスが表示されないのはなぜですか?

A: この問題が発生した場合は、XIAO ESP32C3のアンテナが正しく接続されているかを確認してください。アンテナが既に接続されている場合は、可能であればXIAOがLinkStarから3m以内にあることを確認してください(より強力なアンテナに交換していない限り)。 それでもXIAOが表示されない場合は、esphome flasherソフトウェアを使用してXIAOのログ情報を確認し、ログを通じてXIAOの接続を確認できます。 xiaoを再接続して、WiFiの検索と再接続を試行させることができます。

FAQ4: Jlinkフラッシュファームウェアを使用したが、「Programming of range @address 0x08000000 failed (block verification error) Program failed Failed to program and verify target」エラーが発生した?

Jlinkフラッシュファームウェアを使用してこのエラーが発生した場合、以下のいずれかの状況にある可能性があります。

  1. センサーがまったく正常に動作しなくなり、センサーからメッセージを受信できない。
  2. 無効または不正なファームウェアを使用しようとしている。
caution

レーダーが元々正常に動作していた場合は、正しいファームウェアを使用していることを再度確認してください!使用するファームウェアはレーダーごと、センサーモデルごとに異なります!また、UART経由のファームウェアアップグレードとJlink経由のファームウェアアップグレードは同じではありません!以下の手順を続行するのを停止してください。

製品が例外の場合にこのエラーメッセージが表示されることを確認しました

レーダーがまったく動作していない場合、このエラーメッセージが表示されるのは正常である可能性があります。

レーダーの異常動作により、レーダーが読み取り/書き込み保護メカニズムをトリガーし、一般的にユーザーが製品にプログラムをフラッシュすることが許可されなくなったため、レーダーの読み取り/書き込み保護メカニズムのロックを解除する必要があります。

読み取りと書き込みの保護解除は高リスクであるため、読み取りと書き込みの保護解除方法をここで一般に公開することはありません。必要な方のためにこちらのzipファイルに方法を配置します。異常なレーダーの保護が解除されると、ファームウェアを再度更新して正常動作を復元できます。

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

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

Loading Comments...