概要
ESPectre は、Wi-Fi チャネル状態情報 (CSI) を分析して人体の動きを検出します。約10ユーロの ESP32 デバイスのみで動作し、カメラやマイクが不要なため、プライバシーを保護します。Home Assistant とネイティブに統合し、ニューラルネットワークベースの検出器を含む複数の検出アルゴリズムをサポートしています。
README プレビュー
[](https://github.com/francescopace/espectre/blob/main/LICENSE)\n[](https://esphome.io/)\n[](https://www.espressif.com/en/products/socs)\n[](https://github.com/francescopace/espectre/releases/latest)\n[](https://github.com/francescopace/espectre/actions/workflows/ci.yml?query=branch%3Amain)\n[](https://codecov.io/gh/francescopace/espectre)\n\n# 🛜 ESPectre 👻\n\n**Motion detection system based on Wi-Fi spectre analysis (CSI), with native Home Assistant integration via ESPHome.**\n\n> [!TIP]\n> **New ML Detector**: Neural network-based motion detection. No calibration required, runs on-device. This is an experimental feature, and feedback is welcome in the dedicated [ML detector discussion](https://github.com/francescopace/espectre/discussions/126). A [snapshot build](https://github.com/francescopace/espectre/releases/tag/snapshot) with the latest changes is also available (use `-ml` assets for the machine learning based detector), or follow [Setup guide](SETUP.md#choosing-detection-algorithm) for custom configuration.\n\n---\n\n## Table of Contents\n\n- [In 3 Points](#in-3-points)\n- [What You Need](#what-you-need)\n- [Quick Start](#quick-start)\n- [How It Works](#how-it-works-simple-version)\n- [What You Can Do With It](#what-you-can-do-with-it)\n- [Sensor Placement Guide](#where-to-place-the-sensor)\n- [System Architecture](#system-architecture)\n- [FAQ](#faq-for-beginners)\n- [Security and Privacy](#security-and-privacy)\n- [Technical Deep Dive](#technical-deep-dive)\n- [Two-Platform Strategy](#two-platform-strategy)\n- [Future Evolution](#future-evolution)\n- [Documentation](#documentation)\n- [Media](#media)\n- [Related Projects](#related-projects)\n- [Acknowledgments](#acknowledgments)\n- [License](#license)\n- [Author](#author)\n\n---\n\n## In 3 Points\n\n1. **What it does**: Detects movement using Wi-Fi (no cameras, no microphones)\n2. **What you need**: A ~€10 ESP32 device (S3 and C6 recommended, other variants supported)\n3. **Setup time**: 10-15 minutes\n
FAQ (5)
トラブル対応ESP32-S3がESPHome/ESPectreの起動後に長時間キャリブレーション状態のままになるのはなぜですか?また、どのように修正すればよいですか?
キャリブレーションに時間がかかる場合、通常は実効的なCSIパケットレートが設定されたtraffic_generator_rateを大幅に下回っていることを意味します。デフォルトのDNSベースのトラフィックジェネレーターは、一部のルーターによって無視されるか、レート制限される場合があります。YAML設定でトラフィックジェネレーターをpingモードに切り替え、再コンパイルしてフラッシュしてください:
espectre:
traffic_generator_rate: 100
traffic_generator_mode: ping
再起動後、CSIパケットレートが100パケット/秒に近いことを確認してください。これにより、キャリブレーションははるかに速く完了するはずです。
トラブル対応ESPHomeでESPectreをNSPanel-Easyと統合する際に発生する-Wreorderおよび-Wformat=コンパイラ警告を修正するにはどうすればよいですか?
ESPectreを3.0.0-rc1以降にアップグレードしてください。このバージョンでは、コンストラクタの初期化順序と%u/uint32_tのログフォーマットに関する警告が修正されています。YAMLでは、外部コンポーネントをリリースタグに固定してください。例:
external_components:
- source:
type: git
url: https://github.com/francescopace/espectre
ref: 3.0.0-rc1
components: [ espectre ]
refresh: 300s
その後、ESPHomeファームウェアを再インストールしてください。これらの警告はNSPanel-EasyではなくESPectreによって生成されるものです。2.8.xではこれらは致命的ではなく、コンパイル、OTAインストール、モーション検知は引き続き動作します。
トラブル対応ESPHome/ESP-IDFでMQTTを有効にした後に発生するESP32-S3のタスクウォッチドッグによるloopTaskリセットは、どうすれば修正できますか?
このリセットは、CSI処理、BLE、ロギングが同時に実行されている間に、同期MQTT送信がESPHomeのメインループをブロックすることが原因で発生します。ESP-IDFでは、非同期MQTT送信を有効にし、discoveryとMQTTログ転送を無効にすることでMQTTのオーバーヘッドを削減してください:
mqtt:
broker: broker.hivemq.com
port: 1883
idf_send_async: true
discovery: false
log_topic: None
次のコマンドで再ビルドして書き込みます:
esphome run espectre-s3.yaml
idf_send_async: true はMQTT送信を別のタスクに移すため、loopTask をブロックしなくなります。discovery と log_topic を無効にすると、処理量とネットワークトラフィックが削減されます。この設定により、Wi-Fi、CSI、キャリブレーション、モーション検出、シリアルロギング、Home Assistant API、MQTTパブリッシングを動作させたまま、ウォッチドッグリセットが解決されることが確認されました。
トラブル対応フラッシュ書き込み成功後にESP32-S3でMicro-ESPectreがCSIパケットを0個しか受信しない問題の修正方法
インターネット接続は不要です。CSI の収集には、同一 LAN 上のデバイス間でのローカルな Wi-Fi トラフィックが必要です。ESP32-S3 は正常にアソシエートできていますが、トラフィックジェネレーターの再試行後も CSI が 0 のままであるため、同じネットワーク上の別の PC やスマートフォンからボードに向けて外部トラフィックを生成してください。ログに表示されている IP を使用します。例:
Linux/macOS:
ping 192.168.1.100
Windows:
ping -t 192.168.1.100
Micro-ESPectre が起動する間、30〜60 秒ほど実行し続けてください。また、ルーターが HT20 を使用した 802.11n/b/g などの互換モードで動作していることを確認してください。ping 実行中に CSI パケットが表示される場合、問題は AP/ルーターが内部のトラフィック生成/CSI トリガーのパスを処理できていないことにある可能性が高いです。外部 LAN トラフィックを使い続けるか、別のルーターでテストしてください。S3 チップが検出され、Wi-Fi に正常に接続できているため、ファームウェアの互換性が原因である可能性は低いです。
トラブル対応ESP32-S3でESPectreのmovement_scoreとmotion_detectedが「unknown」のままになる問題を修正する方法
トラフィックジェネレーターのレートを下げ、ping モードから dns モードに切り替えてから、キャリブレーションに十分な時間を取ってください。キャリブレーションでは、最初はログもセンサーの更新も出力されないことがあります。
espectre:
id: espectre_csi
traffic_generator_mode: dns
traffic_generator_rate: 50
既存の detection_algorithm 設定はそのままにしてください。再フラッシュした後、通常の起動時間よりも長めに待ってから sensor.movement_score と binary_sensor.motion_detected を確認してください。
それでも何もパブリッシュされない場合、原因は AP の非互換性である可能性が高いです。ルーターは ESP32-S3 に対して使用可能な 802.11n HT20 フレームを返す必要があります。ルーターが互換性のない Wi-Fi 6/AX や n-only の構成ではなく、互換性のある 2.4 GHz 802.11n/b/g/n モードに設定されていることを確認し、可能であれば別のアクセスポイントでテストしてください。