Skip to main content
The most common smart-home failure is lights switching off while you are sitting still. The root cause is using motion pulses where presence holds are needed. WiFi CSI provides the hold signal that keeps automations active while someone remains in the space.

Presence-hold vs motion-pulse

PIR emits motion pulses. When motion stops, the pulse ends and the automation assumes empty. CSI occupancy and presence detection emit holds: the space remains “occupied” while a still person breathes in it. Automation platforms should subscribe to hold and clear events, not motion edges, for anything that should persist while a person is present.

Debouncing and hysteresis

Raw CSI flickers at detection boundaries. A person near the edge of coverage, environmental noise, or multipath fading can toggle occupancy rapidly. Production automations need three filtering layers:
  1. Entry debounce — Require N consecutive occupied samples before declaring presence. This prevents false triggers from brief noise.
  2. Exit hysteresis — Require M consecutive empty samples before clearing. This prevents lights turning off while you pause between keystrokes.
  3. Minimum hold time — Once occupied, maintain hold for at least T seconds regardless of brief dips.
These are application-layer concerns on top of Wavey’s raw events. The sensing pipeline produces the signal; your automation logic defines the user experience.

HVAC and scene design

Occupancy-aware HVAC needs a sustained signal, not a motion trigger. A home office occupied for three hours of focused work should not cycle ventilation off because the occupant stopped typing. Wire occupancy holds to climate zones. Use motion pulses for entry scenes (“arrived home” triggers). Layer activity detection only when you need behavior-responsive scenes, not for basic presence.

Integration surface

Wavey emits structured events: occupancy state, motion intensity, and presence confidence. These are suitable for Home Assistant, custom MQTT bridges, or direct API integration. The open-source stack on GitHub documents current event schemas.

Occupancy detection

The hold signal source for automation

Getting started

Deployment architecture and first nodes

vs PIR

Why PIR fails for presence holds