Skip to main content

Seeed Studio XIAO ESP32-C3でESPresenseをHome Assistantと連携してデプロイする

この文書では、オープンソースのBluetooth存在検知システムESPresenseSeeed Studio XIAO ESP32-C3と統合する方法について説明します。XIAO ESP32-C3をベースとした存在検知ノードは、Home AssistantのMQTT Roomコンポーネントと連携して屋内位置測定を可能にします。

プロジェクト概要

ESPresenseは、MQTTを使用してHome Assistantと連携するように設計されたオープンソースのBluetooth Low Energy(BLE)存在検知システムです。

この移行では:

1. XIAO ESP32-C3ビルド環境の追加

.ini設定が更新され、Seeed Studio XIAO ESP32-C3専用のビルド環境が追加されました。

[env:seeed_xiao_esp32c3]
extends = esp32c3-cdc ; XIAO ESP32-C3 uses native USB CDC
board = seeed_xiao_esp32c3
board_build.filesystem = spiffs
lib_deps =
${esp32c3.lib_deps}
${sensors.lib_deps}
build_flags =
-D CORE_DEBUG_LEVEL=1
-D FIRMWARE='"xiao-esp32c3"' ; Firmware identifier
-D SENSORS
${esp32c3-cdc.build_flags}

2. レポート応答性の向上

データレポートをより応答性の高いものにするため、defaults.hの複数のパラメータが以下のように調整されました:

A. 移動感度の向上

早期レポートをトリガーする距離閾値が0.5 mから0.1 mに削減されました。小さな移動でも「早期レポート」ロジックが有効になります。

#define DEFAULT_SKIP_DISTANCE 0.1  // changed from 0.5

B. 強制レポート間隔の短縮

最大レポート間隔が5秒から1〜2秒に削減され、移動が最小限の場合でもよりタイムリーなデータ更新が保証されます。

#define DEFAULT_SKIP_MS 1000       // changed from 5000, now is 1 second

C. Wi-FiとBLEの共存改善(2.4 GHz)

2.4 GHz Wi-Fi(非C5チップ)を使用する場合、Bluetoothスキャンは共有アンテナを独占しないように調整されます。BLEスキャンウィンドウはスキャン間隔よりもわずかに小さく設定され、Wi-FiがMQTT接続とデータ送信に十分なエアタイムを確保できます。

#define BLE_SCAN_INTERVAL 0x80  // 128
#define BLE_SCAN_WINDOW 0x60 // reduced from 0x80 (~75% duty cycle)

この変更により、内部競合を削減し、無線リソースの先取りによる遅延を最小限に抑えることができます。

ハードウェア要件

  • Seeed Studio XIAO ESP32-C3
  • USB-Cケーブル(データ転送対応)
  • PC(Windows/macOS/Linux)
  • 安定したWi-Fiネットワーク(2.4 GHz)
  • Home Assistantインスタンス

ソフトウェア・ツール

ツール目的
PlatformIOビルドシステム・フラッシュツール
ESP-IDFツールチェーン(ESPresense経由)ファームウェアビルド
Webブラウザデバイス設定
Home Assistant存在検知統合
Mosquitto Broker(HAアドオン)MQTTバックエンド
MQTT Explorer(オプション)MQTTデバッグ
nRF Connect(Androidのみ)BLEアドバタイジング

1. Home Assistant – MQTTブローカーセットアップ

Mosquitto Brokerアドオンのインストール

  • Home Assistantを開く

    Home Assistantをまだセットアップしていない場合は、設定についてガイドを参照してください。

  • Settings → Add-ons → Add-on Storeをクリック

  • Mosquitto brokerを検索してインストール。インストール後:

    • Startをクリック

    • 有効にする:

      • ✔ Start on boot
      • ✔ Watchdog

MQTT認証情報の作成

  • Configuration → Logins → Addに移動

  • 専用のMQTTユーザーを作成(推奨)

  • 記録:

    • ユーザー名
    • パスワード
    • Home AssistantのIPアドレス

2. ESPresenseのビルド・フラッシュ

  • ESPresenseコードファイルをダウンロードし、PlatformIOを使用してプロジェクトを開きます。

    Platform IOをまだセットアップしていない場合は、ダウンロードについてガイドを参照してください。

  • 依存関係のインストールと環境セットアップが完了するまで待ちます。seeed_xiao_esp32c3環境を選択し、正しいポートを選択してビルド・アップロードします。

  • ファームウェアのフラッシュが完了するまで待ち、Resetボタンを押してXIAO ESP32-C3を再起動します。

3. Wi-Fi・MQTT設定(キャプティブポータル)

  • XIAO ESP32-C3に電源を供給

  • PCまたはスマートフォンでWi-Fi設定を開き、ESPresense AP(例:ESPresense-XXXX)に接続

  • ブラウザを開く:http://192.168.4.1

  • Webページで以下のフィールドを入力:

    フィールド説明
    Room Name論理的な部屋識別子(例:room1
    Wi-Fi SSID2.4 GHzネットワーク
    Wi-Fi Passwordネットワークパスワード
    MQTT Broker IPHome AssistantのIP
    MQTT Port1883(デフォルト)
    MQTT UsernameMosquittoセットアップから
    MQTT PasswordMosquittoセットアップから
  • Saveをクリック

  • 保存後、XIAO ESP32-C3を再起動します。デバイスは自動的にWiFiとMQTTに接続します。

    推奨事項: 意味のある存在比較のために、異なる部屋に少なくとも2つのXIAO ESP32-C3ノードをデプロイしてください。

  • 次に、Home Assistantを開き、Settings → Devices & Servicesに移動

  • ESPresenseノードが自動的に表示され、デバイス名の形式は:

    ESPresense + <Room Name>

4. BLEデバイスブロードキャスト

次に、個人デバイスをBLE経由でESPresenseが検出できるようにする必要があります。場合によっては、デバイスがBLE経由でブロードキャストできるようにするアプリをインストールする必要があります。

iOSデバイス

Appleデバイスは様々なBTLE連続性メッセージを発信し、多くの場合apple:100?:*-*のフィンガープリントで識別されます。

複数のiPhoneがある家庭では、近接情報が衝突し、重複したフィンガープリントが発生する可能性があります。この問題を解決するには、https://espresense.com/devices/apple を参照してください。

Androidデバイス(手動アドバタイジング)

Androidデバイスは通常口が重く、BLEアドバタイズメントを発信させるためにアプリが必要です。そのため、デバイスを見つけるためのアプリが必要になります。

  • nRF Connectをインストールしてアプリを開く

  • ADVERTISER → "+" → ADD RECORDに移動し、Manufacturer Dataを選択

  • 入力:

    フィールド
    Company ID0x004C(これはApple Inc.の固定IDで、すべてのiBeaconはこのメーカーIDを使用する必要があります。)
    Data0215E2C56DB5DFFB48D2B060D0F5A71096E000010001C5

    データ形式の説明

    セクション説明
    0215iBeaconプレフィックス
    E2C56D...96E0UUID(16バイト)
    0001Major
    0001Minor
    C5測定電力
  • 保存してアドバタイジングをONに切り替え

その他のサポートされているデバイス:

https://espresense.com/devices

MQTTデータ検証

MQTT Explorerを使用して、ESPresenseが公開するすべてのトピックを表示できます。

  • 接続先:
    • Host:HAのIP
    • Port:1883
    • Username / Password
  • UUIDの最初の8文字を使用して検索

5. MQTT Roomセンサーによる部屋の存在検知

configuration.yaml を編集

  • Settings → Add-ons → Terminal に移動し、ターミナルを開く

  • 実行:

    ls /config

    configuration.yaml が存在することを確認します。

  • ファイルを編集:

    nano /config/configuration.yaml
  • 追加:

    sensor:
    - platform: mqtt_room
    device_id: "iBeacon:e2c56db5-dffb-48d2-b060-d0f5a71096e0-1-1"
    name: "My iBeacon"
    state_topic: "espresense/devices/iBeacon:e2c56db5-dffb-48d2-b060-d0f5a71096e0-1-1"
    timeout: 60
    away_timeout: 120

YAML のインデントは重要です

  • スペースのみを使用
  • TAB は使用しない
  • 保存:

    • Ctrl + O → Enter
    • Ctrl + X

検証と再起動

  • Settings → System → Developer Tools に移動
  • YAML タブを開き、Check Configuration をクリック、有効な場合は Restart をクリック

6. ダッシュボードにエンティティを追加

再起動後:

  • Developer Tools → States に移動

  • 検索:

    sensor.my_ibeacon
  • エンティティが部屋名で更新される場合、セットアップは完了です

    センサーの初期化には時間がかかる場合があります。ステータスが not_home と表示される場合は、しばらくお待ちください。長時間経過しても状態の更新がない場合は、MQTT Explorer を使用して ESPresense がオフラインになっていないか確認するか、個人デバイスが正常にスキャンできることを確認することをお勧めします。

  • エンティティを Dashboard に追加

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

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

Loading Comments...