feat: Add baseline calibration & presence detection (v1.7)
CALIBRATE command captures per-subcarrier CSI amplitudes over a timed window and stores the averaged baseline in NVS. PRESENCE command enables real-time scoring via normalized Euclidean distance against the baseline, with rolling window averaging and 10s holdoff on state transitions. New commands: CALIBRATE [3-60|STATUS|CLEAR], PRESENCE [ON|OFF|THRESHOLD] New NVS keys: bl_amps (blob), bl_nsub, presence, pr_thresh New STATUS fields: presence=, pr_score= New events: calibrate=done, presence=0|1
This commit is contained in:
13
ROADMAP.md
13
ROADMAP.md
@@ -120,6 +120,19 @@ Note: Promiscuous mode (probe/deauth capture) disabled on original ESP32 — bre
|
||||
- [ ] Deep sleep mode with wake-on-CSI-motion
|
||||
- [ ] Battery-optimized duty cycling
|
||||
|
||||
## v1.7 - Baseline Calibration & Presence Detection [DONE]
|
||||
- [x] CALIBRATE command (capture N seconds of CSI with room empty, average per-subcarrier amplitudes, store in NVS)
|
||||
- [x] CALIBRATE STATUS / CALIBRATE CLEAR subcommands
|
||||
- [x] Presence scoring (normalized Euclidean distance of live CSI vs baseline, rolling window)
|
||||
- [x] PRESENCE ON/OFF command (NVS persisted, requires valid baseline)
|
||||
- [x] PRESENCE THRESHOLD command (tunable 0.001-1.0, NVS persisted)
|
||||
- [x] Presence events (`EVENT,<hostname>,presence=<0|1> score=<float>`) with 10s holdoff
|
||||
- [x] Calibration done event (`EVENT,<hostname>,calibrate=done packets=<n> nsub=<n>`)
|
||||
- [x] presence= and pr_score= fields in STATUS reply
|
||||
- [x] NVS persistence for baseline (bl_amps blob, bl_nsub) and presence config
|
||||
- [ ] Tune presence threshold per room with real-world testing
|
||||
- [ ] Pi-side presence event handling in watch daemon
|
||||
|
||||
## v2.0 - Hardware Upgrade (ESP32-S3/C6)
|
||||
|
||||
Requires replacing current ESP32 (original) DevKitC V1 boards with ESP32-S3
|
||||
|
||||
Reference in New Issue
Block a user