spaxel/dashboard
jedarden 14c49cb919 feat(breathing): implement stationary person detection via breathing analysis
Add FFT-based breathing detection with long-dwell presence tracking:

- FFTBreathingDetector: Rolling 30-second buffer, Hann window, FFT analysis
  to detect periodic breathing signals in 0.2-1.0 Hz band
- DwellTracker: State machine with CLEAR → MOTION_DETECTED →
  POSSIBLY_PRESENT → STATIONARY_DETECTED transitions
- Health gating: Detection disabled when link health < 0.7
- Dashboard: Slow-pulsing blue dot for stationary detection with BPM tooltip
- Timeline: Event logging on transition to STATIONARY_DETECTED

Physics: CSI phase oscillates at 2x breathing rate due to round-trip
path length change. 15 BPM breathing → 0.5 Hz CSI phase oscillation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-29 20:25:17 -04:00
..
css feat(dashboard): guided troubleshooting and first-time UX 2026-03-28 04:19:06 -04:00
js feat(breathing): implement stationary person detection via breathing analysis 2026-03-29 20:25:17 -04:00
index.html feat(breathing): implement stationary person detection via breathing analysis 2026-03-29 20:25:17 -04:00
jest.config.js feat(dashboard): interactive onboarding wizard for ESP32-S3 node provisioning 2026-03-28 02:36:58 -04:00
package-lock.json feat(dashboard): interactive onboarding wizard for ESP32-S3 node provisioning 2026-03-28 02:36:58 -04:00
package.json feat(dashboard): interactive onboarding wizard for ESP32-S3 node provisioning 2026-03-28 02:36:58 -04:00