Highlights
- Detection and calibration hardened across stacks: multi-strategy NBVI band selection, Hampel on by default, stricter NBVI defaults, conservative hint-band fallback, unified 12-subcarrier defaults, and a 100-packet detection window.
- Runtime motion policy aligned between firmware and Micro-ESPectre: edge-driven binary motion publish, configurable
motion_on_hits/motion_off_hits(default3/3), andevaluation_intervaldecoupled frompublish_interval. - ML detector reliability improved on all chips: datasets recollected, chip-grouped training, updated 9-feature model (
9 -> 32 -> 16 -> 1), Hampel-aligned weights, raw-std features for ML, and a more gradual temperature-scaled Movement Score for Home Assistant. - Traffic generator defaults to
ping: ICMP ping replaces DNS as the default CSI traffic source on both ESPHome and Micro-ESPectre (dnsremains available).
Detection and calibration
- Traffic generator default is
ping: improves compatibility with routers that ignore or rate-limit root-domain DNS queries. - Hampel enabled by default (
hampel_enabled=true, threshold5.0MAD). - NBVI selects the lowest-FP band among four strategies per window (Entropy Spaced, MAD Clustered, Classic Spaced, Classic Clustered); scoring exposes
nbvi_classic,nbvi_entropy, andnbvi_mad. - NBVI defaults tightened:
alpha0.75,percentile5,noise_gate_percentile15; calibration FP uses the runtime adaptive threshold (P95 x 1.1). - Hint-band fallback is more conservative: keeps the current/default band when both candidates already meet the
<=5%FP target and the hint is not meaningfully worse. - Default detection window is 100 packets (
DETECTOR_DEFAULT_WINDOW_SIZE/SEG_WINDOW_SIZE). - Motion state is edge-driven and filterable: binary
IDLE <-> MOTIONtransitions publish immediately;motion_on_hits/motion_off_hitsapply consecutive-hit filtering to both MVS and ML (default3/3). evaluation_intervaldecoupled frompublish_interval: detector evaluation defaults to every25packets; metric/log publishing keeps its own cadence.- Micro-ESPectre runtime matches firmware policy: same evaluation/hit filtering before MQTT publish;
inforeports the new knobs;./me deployshipsruntime_policy.py. - Micro-ESPectre per-packet overhead reduced for ML and MVS on device.
ML detector
- ML uses raw turbulence std, not CV normalization: fixes ESP32 feature-scale mismatch with gain-locked chips; CV normalization remains MVS-only.
- Movement Score is more gradual for Home Assistant: temperature scaling before sigmoid; default threshold
5.0unchanged for binary detection. - Production model refreshed: 9 inputs (
turb_mean,turb_std,turb_max,turb_min,turb_iqr,turb_skewness,turb_autocorr,turb_mad,waveform_length); topology9 -> 32 -> 16 -> 1; weights retrained on Hampel-filtered input. - Training pipeline hardened:
StratifiedGroupKFoldby chip, stratified internal validation, hard-positive mining for near-threshold motion. - Per-chip datasets recollected under stricter quality controls (gain-locked, 128 SC HT20, balanced baseline/motion); used for NBVI validation, MVS tests, and ML training.
Added
examples/espectre-s3-touch-lcd.yaml: Waveshare-compatible ESP32-S3 Touch LCD 1.47" profile with on-device motion status../me detect: live host-side ML inference from the UDP CSI stream (replacestools/12_test_motion_stream.py).- CSI research notebooks:
micro-espectre/notebooks/01_csi_data_explorer.ipynb,02_feature_extraction_and_ml.ipynb.
Changed
- ESPHome baseline
2026.5.0; examples/QEMU now requiremin_version: 2026.5.0. - Docs and config templates:
pingdefault traffic generator;./me detectdocumented alongsidestreamandcollect. - Removed
examples/uart/; optionalhardware_uart: UART0documented for USB-UART bridge setups.
Fixed
- Cross-stack real-data test pairing: C++ harness matches Python by using full ISO timestamps with fractional seconds.
- Micro-ESPectre collector and dataset QA: monotonic packet drain during interactive collect; consistent pair-ratio rounding in quality reports.
- Code scanning and collect tooling: addressed reported alerts; safer temp files, UDP bind handling, and
--bind-ipon./me collect.
CI and project maintenance
- DCO commit-signoff enforcement and CodeQL workflow for C++ and Python.
- QEMU smoke tests stabilized: PHY emulator limits handled, ESP32 coverage restored, unsupported C6 matrix entries removed.
- Workflow permissions and Dependabot grouping tuned to reduce noise.