> ## Documentation Index
> Fetch the complete documentation index at: https://docs.waveyhq.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Device-Free Occupancy Detection with WiFi CSI

> Detect whether a room is occupied or empty using change-point detection against a learned WiFi CSI baseline. No cameras, wearables, or device counting required.

Wavey answers the most useful sensing question with a single bit: is anyone here? Binary occupancy detection compares live Channel State Information against an empty-room baseline. When the deviation exceeds a threshold sustained over a window, the space is declared occupied. No cameras, wearables, or MAC address counting is involved.

## Change-point detection on a baseline

Wavey learns an **empty-room baseline**: the mean amplitude profile, typical subcarrier variance, and phase structure when no one is in the space. Live CSI compared against this reference uses **change-point detection**. When the deviation exceeds a threshold sustained over a window, occupancy is declared.

An alternative feature family from the building-energy literature uses **signal tendency index (STI)** — shape similarity between adjacent CSI amplitude curves — with greedy subcarrier selection to pick frequencies most responsive to human presence. WiFree reported 99.1% occupancy detection on building-scale deployments. The mechanism differs from a single variance threshold, but the decision is the same: is the current CSI pattern consistent with an empty room?

The signal does not need to be clean. It needs to be different from empty. A person sitting still perturbs multipath enough to shift the baseline; breathing adds a periodic micro-Doppler component that an empty room never produces.

Threshold selection trades sensitivity against false triggers from environmental drift (HVAC cycling, a door opening). Hysteresis — requiring sustained deviation before flipping state, and sustained return before clearing — prevents flickering at the boundary.

## Why binary occupancy is the sweet spot

Occupancy is robust because the decision boundary is wide:

<CardGroup cols={3}>
  <Card title="Noise tolerance" icon="shield-check">
    You do not need to classify what happened, only that something happened.
  </Card>

  <Card title="Single-link sufficiency" icon="wifi">
    One TX-RX pair can detect presence in the channel; spatial diversity helps but is not required.
  </Card>

  <Card title="Low label burden" icon="tag">
    Empty vs occupied is easy to label or self-supervise from known-empty periods.
  </Card>
</CardGroup>

This is why building energy systems and smart-home HVAC start here. The [detection ladder](/concepts/detection-ladder) places occupancy at rung 2 — the first task that works reliably on commodity hardware.

## Not the same as phone counting

MAC-address analytics count devices, not people. One person with a phone, watch, and laptop registers as three. Five people sharing one laptop register as one. Device identifiers can constitute personal data under GDPR.

CSI occupancy reads how bodies disturb the radio field — no identifiers, no device dependency. Everyone in the space is detected whether or not they carry anything. For analytics semantics, see [occupancy analytics](/use-cases/occupancy-analytics).

## Building and HVAC control

Occupancy-aware HVAC does not need person count. It needs a reliable signal that the space is in use — including when occupants are still. A conference room with six people sitting quietly should not trigger ventilation shutdown because no one is waving.

CSI occupancy provides that hold signal. Pair it with motion for activity-responsive scenes in [smart-home automation](/use-cases/smart-home-automation).

## Further Reading

<CardGroup cols={2}>
  <Card title="Device-Free Occupancy Sensing Explained" icon="book-open" href="/posts/device-free-occupancy-sensing-explained">
    Baselines, drift, and cross-site transfer
  </Card>

  <Card title="Sensing Pipeline" icon="layers" href="/concepts/sensing-pipeline">
    Preprocessing before occupancy inference
  </Card>

  <Card title="Getting Started" icon="rocket" href="/getting-started">
    Set up your first Wavey deployment
  </Card>

  <Card title="Detection Ladder" icon="stairs" href="/concepts/detection-ladder">
    Where occupancy sits in the sensing hierarchy
  </Card>
</CardGroup>
