
espectre snapshot-dev
ESPectre - Wi-Fiスペクトル解析(CSI)に基づく動体検知システム、Home Assistant統合付き。
🛜 ESPectre 👻
Wi-Fiスペクトル解析(CSI)に基づく動作検知システム。ESPHomeを介したHome Assistantネイティブ統合対応。
[!TIP] 新しいML検出器: ニューラルネットワークベースの動作検知。キャリブレーション不要、デバイス上で動作。これは実験的な機能であり、専用のML検出器ディスカッションでフィードバックを歓迎します。最新の変更を含むスナップショットビルドも利用可能です(機械学習ベースの検出器には
-mlアセットを使用)。またはカスタム設定についてはセットアップガイドを参照してください。
目次
- 3行でまとめると
- 必要なもの
- クイックスタート
- 仕組み
- できること
- センサー配置ガイド
- システムアーキテクチャ
- よくある質問(初心者向け)
- セキュリティとプライバシー
- 技術的な詳細
- 2プラットフォーム戦略
- 今後の進化
- ドキュメント
- メディア
- 関連プロジェクト
- 謝辞
- ライセンス
- 作者
3行でまとめると
- 何をするか: Wi-Fiを使って動きを検出(カメラもマイクも不要)
- 必要なもの: 約10ユーロのESP32デバイス(S3およびC6推奨、その他のバリアントも対応)
- セットアップ時間: 10~15分
必要なもの
ハードウェア
- 2.4GHz Wi-Fiルーター - 自宅にあるもので十分動作します
- CSI対応ESP32 - ESP32-C6、ESP32-S3、ESP32-C3、ESP32(オリジナル)など。完全なプラットフォーム比較表はSETUP.mdを参照してください。
外部アンテナ付きESP32-S3 DevKit
ソフトウェア(すべて無料)
- Home Assistant(Raspberry Pi、PC、NAS、クラウド上で動作)
- ESPHome(Home Assistantに統合済み、またはスタンドアロン)
必要なスキル
- 基本的なYAML知識(設定用)
- Home Assistantに慣れていること(推奨だが必須ではない)
- プログラミング不要
- ルーターの設定不要
クイックスタート
セットアップ時間: 約10~15分
難易度: 簡単(YAML設定のみ)
リアルタイム動作検知、しきい値制御、デバッグセンサーを備えたHome Assistantダッシュボード
仕組み
誰かが部屋の中で動くと、ルーターとセンサーの間を移動するWi-Fi波を「乱します」。まるで懐中電灯の前で手を動かして影の変化を見るようなものです。
ESP32デバイスはこれらの変化を「聞き取り」、動きがあるかどうかを判断します。
利点
- カメラ不要(完全なプライバシー)
- ウェアラブル不要(ブレスレットやセンサーを身につける必要なし)
- 壁を通して動作(Wi-Fiは壁を通り抜ける)
- 非常に安価(約10ユーロ)
技術的な詳細を知りたいですか? CSIの説明と信号処理のドキュメントについてはALGORITHMS.mdを参照してください。
できること
実用的な例
- ホームセキュリティ: 不在時に誰かが入ったらアラートを受け取る
- 高齢者ケア: 活動を監視し、転倒や長時間の無活動を検出
- スマート自動化: 人がいる時だけ照明/暖房をオンにする
- 省エネ: 空室のデバイスを自動的にオフにする
- 子供の見守り: 夜間に部屋を出た場合にアラート
- 気候制御: 占有ゾーンのみ冷暖房
センサー配置ガイド
信頼性の高い動作検知には、センサーの最適な配置が重要です。
ルーターからの推奨距離
最適範囲: 3~8メートル
| 距離 | 信号 | マルチパス | 感度 | ノイズ | 推奨 |
|---|---|---|---|---|---|
| < 2m | 強すぎる | 最小限 | 低い | 低い | ❌ 近すぎる |
| 3~8m | 強い | 良好 | 高い | 低い | ✅ 最適 |
| > 10~15m | 弱い | 変動 | 低い | 高い | ❌ 遠すぎる |
配置のヒント
推奨:
- 監視するエリアにセンサーを配置(必ずしもルーターとの見通し線上である必要なし)
- 高さ:地上1~1.5メートル(机/テーブルの高さ)
- 外部アンテナ:IPEXコネクタを使用して受信を改善
避けるべきこと:
- ルーターとセンサーの間の金属製障害物(冷蔵庫、金属製キャビネット)を避ける
- 隅や囲まれたスペースを避ける(マルチパスの多様性が減少)
システムアーキテクチャ
処理パイプライン
ESPectreは動作検知に特化した処理パイプラインを使用します:``` ┌─────────────┐ │ CSI Data │ Raw Wi-Fi Channel State Information └──────┬──────┘ │ ▼ ┌─────────────┐ │ Gain Lock │ AGC/FFT stabilization (~3 seconds) │ │ Locks hardware gain for stable measurements └──────┬──────┘ │ ▼ ┌─────────────┐ │ Auto │ Automatic subcarrier selection (once at boot) │ Calibration │ Selects optimal 12 subcarriers (NBVI) └──────┬──────┘ │ ▼ ┌─────────────┐ │ Adaptive │ auto: P95 × 1.1 | min: P100 │ Threshold │ or fixed manual value └──────┬──────┘ │ ▼ ┌─────────────┐ │ Hampel │ Turbulence outlier removal │ Filter │ (enabled by default) └──────┬──────┘ │ ▼ ┌─────────────┐ │ Low-pass │ Noise reduction (smoothing) │ Filter │ (optional, disabled by default) └──────┬──────┘ │ ▼ ┌─────────────┐ │ Detection │ MVS or ML score │ Evaluation │ every evaluation_interval packets └──────┬──────┘ │ ▼ ┌─────────────┐ │ Hit Filter │ motion_on_hits / motion_off_hits │ │ edge-driven IDLE ↔ MOTION └──────┬──────┘ │ ▼ ┌─────────────┐ │ Home │ Edge-driven motion binary + │ Assistant │ periodic Movement Score / Threshold └─────────────┘
### 単一または複数のセンサー```
┌─────────┐ ┌─────────┐ ┌─────────┐
│ ESP32 │ │ ESP32 │ │ ESP32 │
│ Room 1 │ │ Room 2 │ │ Room 3 │
└────┬────┘ └────┬────┘ └────┬────┘
│ │ │
└────────────┴────────────┘
│
│ ESPHome Native API
▼
┌────────────────────┐
│ Home Assistant │
│ (Auto-discovery) │
└────────────────────┘
各センサーは、Home Assistant によって自動的に検出され、以下の機能を備えています:
- 動き検出のバイナリセンサー、状態変化時に即座に公開
- 動きスコアセンサー、定期的な周期で公開
- 調整可能なしきい値(数値エンティティ)
自動サブキャリア選択
ESPectre は、自動サブキャリア選択のために NBVI(正規化帯域分散指数)を実装しており、手動設定不要で最適に近いパフォーマンス(F1>96%)を達成します。このアルゴリズムは、安定性メトリクスとスペクトル多様性に基づいて、連続しない12個のサブキャリアを選択します。
⚠️ 重要 (MVS モード): デバイス起動後10秒間、部屋を静かで動きのない状態に保ってください。この間に自動キャリブレーションが実行され、動きがあると検出精度に影響します。ML モードではキャリブレーションをスキップします。
アルゴリズムの詳細については、ALGORITHMS.md を参照してください。
初心者向け FAQ
FAQ を展開するにはクリック
Q: 使用するためにプログラミングの知識は必要ですか?
A: いいえ!ESPectre は YAML 設定ファイルを使用します。サンプルをダウンロードしてフラッシュし、ESPHome アプリまたは Web インターフェースを介して WiFi を設定するだけです。
Q: 私のルーターで動作しますか?
A: はい、ルーターが 2.4GHz Wi-Fi を備えていれば動作します(事実上すべての最新ルーターは備えています)。
Q: 合計でいくらかかりますか?
A: ハードウェア:ESP32 デバイス(S3/C6推奨、他のバリエーションも動作可能)で約€10。ソフトウェア:すべて無料でオープンソース。また、Home Assistant をどこかで実行している必要があります(Raspberry Pi 約€35-50、または既存の PC/NAS)。
Q: ルーターに何か変更を加える必要がありますか?
A: いいえ!ルーターは通常通り動作します。センサーは何も変更せずに Wi-Fi 信号を「リッスン」します。
Q: 壁越しでも動作しますか?
A: はい、2.4GHz Wi-Fi 信号は乾式壁を透過します。鉄筋コンクリート壁は感度を低下させますが、距離を短くすれば検出は可能です。
Q: 家にはいくつのセンサーが必要ですか?
A: サイズによります。1つのセンサーで約50m²を監視できます。より大きな家では、複数のセンサーを使用してください(最適なカバレッジのため50-70m²ごとに1つのセンサー)。
Q: 人とペットを区別できますか?
A: システムは2状態のセグメンテーションモデル(IDLE/MOTION)を使用しており、人、ペット、その他の動く物体を区別せずに一般的な動きを識別します。より高度な分類(人対ペット、活動認識、ジェスチャー検出)には、訓練されたAI/MLモデルが必要になります(将来の進化セクションを参照)。
Q: メッシュWi-Fiネットワークでも動作しますか?
A: はい、通常通り動作します。ESP32 が 2.4 GHz 帯域に接続されていることを確認してください。
Q: 検出精度はどのくらいですか?
A: 検出精度は環境に大きく依存し、適切な調整が必要です。パフォーマンスに影響する要因には、部屋のレイアウト、壁の素材、家具の配置、ルーターからの距離(最適:3〜8m)、干渉レベルなどがあります。適切に調整された最適な条件下では、システムは信頼性の高い動き検出を提供します。segmentation_threshold パラメータを調整して、特定の環境に感度を合わせてください。
Q: 消費電力はどのくらいですか?
A: 連続動作時の標準消費電力は約500mWです。ファームウェアには電力最適化のサポートが含まれており、バッテリー駆動の展開にはディープスリープモードを実装できますが、コードのカスタム変更が必要になります。
Q: 動作しない場合、ヘルプを得られますか?
A: はい、GitHub で Issue を開くか、メールで連絡してください。
セキュリティとプライバシー
プライバシー、セキュリティ、倫理的考慮事項(クリックして展開)
収集されるデータの性質
システムは、Wi-Fi 無線チャネルの物理的特性に関連する匿名データを収集します:
- OFDM サブキャリアの振幅と位相
- 統計的な信号分散
- 収集しないもの:個人識別情報、通信内容、画像、音声
CSI データは伝送媒体の特性のみを表し、直接的な識別情報は含まれません。
プライバシーの利点
- カメラなし:視覚的プライバシーの尊重
- マイクなし:音声録音なし
- ウェアラブルなし:ウェアラブルデバイス不要
- 集約データ:生の識別データではなく、統計的メトリクスのみ
⚠️ 免責事項と倫理的考慮事項
警告: CSI データの本質的な匿名性にもかかわらず、このシステムは以下の目的に使用される可能性があります:
- 非合意監視:明示的な同意なしに人の存在/動きを検出
- 行動プロファイリング:高度な AI モデルを使用して日常生活パターンを推測
- 家庭内プライバシー侵害:個人の家の中での活動を追跡
使用責任
このシステムの使用に関する責任はすべてユーザーにあり、以下のことを行わなければなりません:
- 監視対象者全員から明示的な同意を得る
- 現地の規制を尊重する(EUのGDPR、現地のプライバシー法)
- センシングシステムの存在を明確に通知する
- 使用を正当な目的に限定する(ホームセキュリティ、個人のホームオートメーション)
- 暗号化とアクセス制御でデータを保護する
- 違法な監視、ストーキング、他人のプライバシー侵害には使用しない
技術的な詳細
アルゴリズムの詳細(MVS、NBVIキャリブレーション、Hampelフィルター)については、ALGORITHMS.md を参照してください。
パフォーマンスメトリクス(混同行列、F1スコア、ベンチマーク)については、PERFORMANCE.md を参照してください。
2プラットフォーム戦略
このプロジェクトは、イノベーションのスピードと本番安定性のバランスを取るためにデュアルプラットフォームアプローチを採用しています。
ESPectre(このリポジトリ)- 本番プラットフォーム
対象: エンドユーザー、スマートホーム愛好家、Home Assistant ユーザー
- ESPHome コンポーネント:Home Assistant とのネイティブ統合
- YAML 設定 - プログラミング不要
- 自動検出 - デバイスが Home Assistant に自動的に表示される
- 本番対応 - 安定、テスト済み、簡単にデプロイ可能
- デモンストレーション的 - 研究結果をユーザーフレンドリーなパッケージで紹介
Micro-ESPectre - 研究開発プラットフォーム
対象: 研究者、開発者、学術/産業アプリケーション
- Python/MicroPython 実装:迅速なプロトタイピング用
- MQTTベース - 柔軟な統合(Home Assistant に限定されない)
- 高速イテレーション - 数分ではなく数秒で新しいアルゴリズムをテスト
- 分析ツール - CSI データ分析のための包括的なスイート
- ユースケース: 学術研究、産業用センシング、アルゴリズム開発
Micro-ESPectre は、以下の基礎を提供します:
- 人数カウント
- 活動認識(歩行、転倒、着席、睡眠)
- 位置特定と追跡
- ジェスチャー認識
開発フロー```
┌─────────────────────┐ Validated ┌──────────────────────┐ │ Micro-ESPectre │ ─────────────────► │ ESPectre │ │ (R&D Platform) │ algorithms │ (Production Platform)│ │ │ │ │ │ • Fast prototyping │ │ • ESPHome component │ │ • Algorithm testing │ │ • Home Assistant │ │ • Data analysis │ │ • End-user ready │ │ • MQTT flexibility │ │ • Native API │ └─────────────────────┘ └──────────────────────┘
**Innovation cycle**: 新機能とアルゴリズムは、まず Micro-ESPectre (Python) で開発・検証され、効果が確認された後、ESPectre (C++) に移植されます。
---
## 今後の進化
ESPectre v2.x は **動き検出** (MVS + 自動サブキャリア選択) に焦点を当てていますが、プロジェクトは高度なアプリケーション向けに機械学習機能を模索しています:
| 機能 | ステータス | 説明 |
|------------|--------|-------------|
| **ML 検出器** | 実験的 | ニューラルネットワーク (MLP 9→32→16→1) |
| **ジェスチャ認識** | 計画中 | スマートホーム制御のための手のジェスチャ (スワイプ、プッシュ、サークル) を検出 |
| **人間行動認識** | 計画中 | 活動 (座位、歩行、転倒) を識別 |
| **人数カウント** | 計画中 | 室内の人数を推定 |
| **3D 位置推定** | 研究中 | 位相コヒーレントアンテナアレイによる屋内測位 (30~50cm 精度) |
ML 検出器は、YAML 設定で `detection_algorithm: ml` を指定することで既に利用可能です。アルゴリズムの詳細は [ALGORITHMS.md](https://github.com/francescopace/espectre/blob/HEAD/micro-espectre/ALGORITHMS.md#ml-neural-network-detector) を、現在のメトリクスについては `PERFORMANCE.md` を参照してください。
ML データ収集とトレーニング基盤については、[ML_DATA_COLLECTION.md](https://github.com/francescopace/espectre/blob/HEAD/micro-espectre/ML_DATA_COLLECTION.md) に文書化されています。
詳細な計画、タイムライン、貢献方法については [ROADMAP.md](https://github.com/francescopace/espectre/blob/HEAD/ROADMAP.md) を参照してください。
---
## ドキュメント
### ESPectre (本番)
| ドキュメント | 説明 |
|----------|-------------|
| [概要](https://github.com/francescopace/espectre/blob/HEAD/README.md) | (このファイル) プロジェクト概要、クイックスタート、FAQ |
| [セットアップガイド](https://github.com/francescopace/espectre/blob/HEAD/SETUP.md) | ESPHome を使ったインストールと設定 |
| [チューニングガイド](https://github.com/francescopace/espectre/blob/HEAD/TUNING.md) | 最適な検出のためのパラメータ調整 |
| [パフォーマンス](https://github.com/francescopace/espectre/blob/HEAD/PERFORMANCE.md) | ベンチマーク、混同行列、F1 スコア |
| [ゲーム](https://github.com/francescopace/espectre/blob/HEAD/docs/game/README.md) | ブラウザゲーム、USB ストリーミング API、インタラクティブなしきい値調整 |
| [テストスイート](https://github.com/francescopace/espectre/blob/HEAD/test/README.md) | PlatformIO Unity テストドキュメント |
### Micro-ESPectre (研究開発)
| ドキュメント | 説明 |
|----------|-------------|
| [概要](https://github.com/francescopace/espectre/blob/HEAD/micro-espectre/README.md) | R&D プラットフォーム概要、CLI、MQTT、Web モニター |
| [アルゴリズム](https://github.com/francescopace/espectre/blob/HEAD/micro-espectre/ALGORITHMS.md) | MVS、NBVI キャリブレーション、Hampel フィルタの科学的ドキュメント |
| [解析ツール](https://github.com/francescopace/espectre/blob/HEAD/micro-espectre/tools/README.md) | CSI 解析と最適化スクリプト |
| [ML データ収集](https://github.com/francescopace/espectre/blob/HEAD/micro-espectre/ML_DATA_COLLECTION.md) | 機械学習のためのラベル付きデータセットの構築 |
| [参考文献](https://github.com/francescopace/espectre/blob/HEAD/micro-espectre/README.md#references) | 学術論文と研究リソース |
### プロジェクト
| ドキュメント | 説明 |
|----------|-------------|
| [ロードマップ](https://github.com/francescopace/espectre/blob/HEAD/ROADMAP.md) | プロジェクトビジョンと ML 計画 |
| [貢献ガイド](https://github.com/francescopace/espectre/blob/HEAD/CONTRIBUTING.md) | 貢献方法 (コード、データ、ドキュメント) |
| [変更履歴](https://github.com/francescopace/espectre/blob/HEAD/CHANGELOG.md) | バージョン履歴とリリースノート |
| [セキュリティ](https://github.com/francescopace/espectre/blob/HEAD/SECURITY.md) | セキュリティポリシーと脆弱性報告 |
| [行動規範](https://github.com/francescopace/espectre/blob/HEAD/CODE_OF_CONDUCT.md) | コミュニティガイドライン |
---
## メディア
| 記事 | タイトル |
|-------------|-------|
| Medium | [Wi-Fi をモーションセンサーに変えた方法 - パート1](https://medium.com/@francesco.pace/how-i-turned-my-wi-fi-into-a-motion-sensor-61a631a9b4ec?sk=c7f79130d78b0545fce4a228a6a79af3&utm_source=github&utm_medium=readme&utm_campaign=espectre) |
| Medium | [Wi-Fi をモーションセンサーに変えた方法 - パート2](https://medium.com/@francesco.pace/how-i-turned-my-wi-fi-into-a-motion-sensor-part-2-62038130e530?sk=7c8b6f11cf3fcb8d279648016ebff72a&utm_source=github&utm_medium=readme&utm_campaign=espectre) |
| IoT For All | [Wi-Fi をモーションセンサーに変えた方法](https://www.iotforall.com/wifi-motion-sensor-iot) |
| Hackaday | [特別なハードウェア不要、自作の ESP32 ベース人感センサー](https://hackaday.com/2026/01/28/make-your-own-esp32-based-person-sensor-no-special-hardware-needed/) |
| Adafruit Learn | [Feather 用 ESPectre 人感検出器](https://learn.adafruit.com/espectre-human-detector-for-feather) |
| Seeed Studio Wiki | [Seeed Studio XIAO ESP32 シリーズへの ESPectre の ESPHome を使ったデプロイ](https://wiki.seeedstudio.com/xiao-esp32--series-espresense/) |
| ブログ | 議論 |
|----------|------------|
| Home Assistant | [ESPectre - Home Assistant 向け Wi-Fi モーション検出](https://community.home-assistant.io/t/espectre-wi-fi-motion-detection-for-home-assistant/961251) |
| ビデオ | 動画 |
|---------|-------|
| @GithubAwesome | [ESPectre](https://www.youtube.com/shorts/iQ_DPHLn8ms) |
| ポッドキャスト | エピソード |
|-------------|---------|
| Hackaday | [ポッドキャストエピソード355:人感検出器、トランシーバー、オープンスマートフォン...](https://hackaday.com/2026/01/30/hackaday-podcast-episode-355-person-detectors-walkie-talkies-open-smartphones-and-a-wifi-traffic-light/) |
---
## 関連プロジェクト
- [radio-presence-scanner](https://github.com/francescopace/radio-presence-scanner): ホストデバイスからの BLE 無線観測に焦点を当てた補完的な在室検知プロジェクト (Python)。オプションの HTTP ダッシュボード付き。
- [micropython-esp32-csi](https://github.com/francescopace/micropython-esp32-csi): ESP32 CSI API を公開するカスタム MicroPython フォーク。Micro-ESPectre ワークフローにおける高速 CSI プロトタイピングのファームウェア基盤として使用。
---
## 謝辞
ESPectre は ESP32 チップのネイティブ Wi-Fi CSI 機能を活用しています。CSI を ESP-IDF フレームワークで利用可能にし、ESPectre を [esp-csi](https://github.com/espressif/esp-csi) リポジトリの [コミュニティプロジェクト](https://github.com/espressif/esp-csi#6-related-resources) として認めてくれた [Espressif](https://www.espressif.com/) に感謝します。
---
## ライセンス
このプロジェクトは **GNU General Public License v3.0 (GPLv3)** の下で公開されています。
GPLv3 は以下を保証します:
- ソフトウェアがフリーでオープンソースであり続けること
- 誰でも使用、研究、修正、配布できること
- 修正版は同一ライセンスのもとで共有されなければならないこと
- エンドユーザーの権利とソフトウェアの自由を保護すること
完全なライセンステキストは [LICENSE](https://github.com/francescopace/espectre/blob/HEAD/LICENSE) を参照してください。
コントリビューションは GPLv3 のもとで提出され、各コミットに DCO の `Signed-off-by` トレーラー (`git commit -s`) を含める必要があります。
## 著者
**Francesco Pace**
メール: [[email protected]](mailto:[email protected])
LinkedIn: [linkedin.com/in/francescopace](https://www.linkedin.com/in/francescopace/)
ESPectre を有用だと感じ、開発を支援したい場合は、コーヒーを一杯ご馳走していただけると助かります。完全に任意です。
私はこのプロジェクトに情熱を持って取り組んでいます。ご支援は、テスト済み・サポート対象デバイスのリストを拡大するための新しいハードウェアの購入や、新機能の開発に多くの時間を割くことに役立ちます。
<a href="https://www.buymeacoffee.com/espectre" target="_blank"><img src="https://assets.kitploit.com/production/public/readmes/9574/a7e8174c892355a24fbaec083cbef385d097a0b488fd4823dbbb0061643bb5e2.png" alt="Buy Me A Coffee" style="height: 60px !important;width: 217px !important;" ></a>