← WiFi Sensing Fundamentals

From raw frames to "someone is here"

12 min

Rooms have fingerprints

An empty room produces a stable CSI signature — not constant (radio always flickers), but statistically steady. Detection is therefore a two-step dance:

  1. Learn the empty room (the baseline).
  2. Measure distance from it (the anomaly score).

Step 1: the baseline

Capture minutes-to-days of empty-room CSI and store, per subcarrier, its mean and spread (standard deviation). Production fleets keep baselines fresh with an exponential moving average — old data fades, slow environmental drift (temperature, a moved chair) gets absorbed instead of alarming forever.

Step 2: the score

For each new frame, compute a z-score per subcarrier: how many standard deviations from baseline? Combine across subcarriers (mean of absolute z-scores is a fine start). Then:

  • Score persistently high → something changed in the space.
  • Score oscillating at 0.2–0.5 Hz → breathing.
  • Large rhythmic swings → walking.

The false-alarm war

Every real deployment fights the same three enemies:

  • WiFi channel switches — your router hops channels and the whole signature shifts. Detect the cliff-edge jump and re-baseline instead of alarming.
  • Rain, fans, HVAC — periodic mechanical motion looks alive. Multi-node meshes disambiguate: a fan bends one path, a walking person bends paths in sequence.
  • Stuck baselines — if a device rebooted into a changed room, its baseline lies. Our production sentinels auto-re-baseline when scores stay pegged for 10 minutes; steal that idea.

Honest limits

CSI tells you presence, motion, rhythm, roughly where (with a mesh). It does not tell you who, and cross-wall performance depends on construction. Design your product promises around what the physics actually delivers.


Sign in to use this feature — it takes 20 seconds and it’s free. Sign in Next lesson →