// the find
francescopace/espectre
🛜 ESPectre 👻 - Motion detection system based on Wi-Fi spectre analysis (CSI), with Home Assistant integration.
ESPectre turns an ESP32 into a passive Wi-Fi motion sensor by reading Channel State Information (CSI) — the signal-level metadata that normally just helps the radio adapt. No camera, no microphone, no wearable. You flash it via ESPHome, configure with YAML, and it shows up in Home Assistant as a binary motion sensor. Target audience is home automation hobbyists who want presence detection without putting a camera in their bedroom.
The dual-platform architecture (C++ ESPHome component for production, Python Micro-ESPectre for R&D) is a smart engineering choice — it lets the algorithm side iterate fast without breaking the user-facing firmware. The NBVI automatic subcarrier selection (F1 > 96% claimed, with real test data in `.npz` files checked into the repo) means you don't have to manually tune which Wi-Fi subcarriers to watch. CI runs QEMU smoke tests against actual ESP32/S3/C3 configs, which is more honest than most embedded projects. The processing pipeline is clearly documented and the signal path — gain lock, calibration, Hampel filter, threshold, hit filter — is coherent and not over-engineered.
The 10-second boot calibration window in MVS mode is a real operational problem: any movement during those seconds silently poisons your baseline and you won't know until detection starts misbehaving. The ML detector is experimental and the model is tiny (9→32→16→1 MLP) — it'll work in the training environment but CSI signatures shift dramatically with furniture rearrangement or even seasonal humidity changes, and there's no documented retraining path for end users. Multi-sensor fusion is left entirely to Home Assistant automations; the sensors don't coordinate, so a person moving between rooms will produce overlapping motion events with no deduplication. Finally, the 'works through walls' claim is technically true but practically misleading — sensitivity through concrete is low enough that you'll likely need a sensor per room, bumping the cost story from '€10 total' to '€10 per room plus tuning time per room.'