Imagine knowing whether someone is home — or whether an elderly parent has gotten out of bed — without placing a single camera in your house. No video feeds, no cloud subscriptions, no worrying about footage being hacked or leaked. This is exactly what WiFi presence detection makes possible.
By analyzing subtle fluctuations in the WiFi signals already bouncing around your home, modern software can reliably determine whether a room is occupied, whether the person inside is moving or resting, and in advanced setups, even estimate body posture — all with zero cameras and complete local privacy.
- No video data is ever captured or stored
- Works entirely offline — your router never phones home
- No footage that can be subpoenaed, hacked, or leaked
- Family members and guests aren't unknowingly filmed
- Still effective in the dark, behind furniture, or through walls
In this guide, we'll explain how WiFi presence detection actually works, what you can realistically detect with consumer hardware, how to set it up on a Mac, and where the technology shines (and where it falls short).
How WiFi Presence Detection Works
Your WiFi router constantly broadcasts radio signals at 2.4 GHz or 5 GHz. These signals reflect off walls, furniture — and the human body. When a person moves through a room, their body absorbs and scatters some of those radio waves, causing tiny, measurable changes in the signal strength received by nearby devices.
The metric most commonly used for this is RSSI (Received Signal Strength Indicator) — a value measured in dBm that every WiFi chip reports. When no one is present, RSSI stays relatively stable. When a person enters the room and moves around, RSSI fluctuates in characteristic patterns. Even breathing and a heartbeat can create micro-fluctuations detectable by sensitive hardware.
Two main approaches
- RSSI-based sensing — reads the signal strength reported by your existing WiFi adapter. No extra hardware required. Accuracy is moderate: good for room-level occupancy (present / absent), less precise for fine-grained movement.
- CSI-based sensing (Channel State Information) — captures per-subcarrier amplitude and phase data. Requires a compatible network card (e.g., Intel 5300 NIC on Linux). Far more sensitive — can detect breathing rate, walking direction, even fall detection.
The good news for most Mac users: RSSI-based sensing works right now with the built-in Apple WiFi chip, using free, open-source tools. CSI-based sensing is more powerful but requires additional hardware, covered in the Limitations section below.
What You Can Detect With WiFi
The capabilities depend heavily on your approach (RSSI vs CSI) and the quality of your signal environment. Here's a realistic breakdown:
Presence / Absence
Is anyone in the room? Works reliably with RSSI on most setups. Accuracy 90%+.
Motion vs. Stillness
Is the person moving or sitting still? RSSI variance patterns reveal this clearly.
Sleep Monitoring
Detect whether someone is in bed and breathing normally. Possible with CSI hardware.
Breathing / Heart Rate
Micro-motion detection via CSI. Useful for elderly care. Requires specialized NIC.
Pose Estimation
Projects like wifi-densepose can estimate body keypoints. Needs CSI + ML model.
Fall Detection
Sudden drop in motion signature can trigger an alert. Life-saving for senior living.
For a typical smart home use case — turning lights off when no one is home, adjusting the thermostat, or getting notified when someone enters — RSSI-based presence detection is entirely sufficient and requires no additional hardware.
Setting Up WiFi Sensing on macOS
macOS exposes WiFi RSSI data through its CoreWLAN framework and the
Prerequisites
- macOS 12 Monterey or later (tested up to macOS 15 Sequoia)
- Python 3.9+ (pre-installed or via Homebrew:
brew install python) - Mac connected to a WiFi network (2.4 GHz or 5 GHz)
- A second device (phone, laptop) connected to the same network as a passive signal reference
-
Install dependencies
Open Terminal and install the required Python libraries.
# Install dependencies
pip3 install numpy scipy pyobjc-framework-CoreWLAN
# Verify airport utility is available
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I-
Poll RSSI continuously
Create a file called
wifi_sense.pyand paste the code below.
import subprocess, time, json, collections, statistics
AIRPORT = "/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport"
WINDOW = 30 # seconds of history to keep
THRESH = 4.0 # dBm std-dev threshold for "motion detected"
history = collections.deque(maxlen=WINDOW)
def get_rssi():
result = subprocess.run([AIRPORT, "-I"], capture_output=True, text=True)
for line in result.stdout.splitlines():
if "agrCtlRSSI" in line:
return int(line.split(":")[1].strip())
return None
while True:
rssi = get_rssi()
if rssi:
history.append(rssi)
if len(history) >= 10:
std = statistics.stdev(history)
status = "🟢 Motion detected" if std > THRESH else "⚪ Room appears empty"
print(f"RSSI: {rssi} dBm | StdDev: {std:.2f} | {status}")
time.sleep(1)-
Run and calibrate
Start the script and observe the output. Walk around the room, then sit still, then leave entirely. Adjust
THRESHup or down until the motion / no-motion boundary feels accurate for your environment.
python3 wifi_sense.py
# Example output:
RSSI: -62 dBm | StdDev: 1.12 | ⚪ Room appears empty
RSSI: -65 dBm | StdDev: 5.87 | 🟢 Motion detected
RSSI: -61 dBm | StdDev: 6.34 | 🟢 Motion detected
RSSI: -63 dBm | StdDev: 0.94 | ⚪ Room appears empty-
Trigger automations
Once your script reliably reports presence vs. absence, connect it to Home Assistant via an MQTT broker, or use a shell script to toggle macOS Shortcuts, control HomeKit scenes, or send a push notification. The detection logic itself is the hard part — integration is straightforward.
Real-World Applications
WiFi presence detection is no longer a research curiosity — it's a practical tool with real impact across several domains.
Elderly Care & Safety
Monitor whether an elderly parent got out of bed on time, detect unusual inactivity, or trigger a fall alert — all without installing cameras in private spaces like bathrooms or bedrooms.
HVAC Automation
Smart thermostats waste energy heating empty rooms. WiFi sensing provides real occupancy data to turn heating or AC on only when someone is actually present, cutting energy bills by 20–30%.
Security & Intrusion Detection
Detect unexpected presence when no one should be home. Unlike PIR motion sensors, WiFi sensing works through walls and covers a whole floor from a single device.
Smart Lighting
Go beyond basic motion sensors. WiFi presence detection can tell the difference between someone sitting quietly reading and an empty room — keeping lights on when they should be on.
Office Space Optimization
Understand real desk and meeting room utilization without camera surveillance. Helps facility managers right-size office space and reduce real-estate costs.
Pet Monitoring
Know when your cat or dog is active vs. resting. Some setups can even detect unusual behavior patterns that might indicate a health issue.
Limitations — Being Honest
WiFi presence detection is powerful, but it's not magic. Here are the real-world limitations you should understand before investing time in a setup.
RSSI alone can't do pose estimation
Detecting whether a room is occupied? Easy. Estimating body keypoints like shoulders, elbows, and knees (DensePose-style)? That requires CSI data from a compatible network card, plus a trained deep learning model (e.g., WiPose, P2-Net). RSSI-only setups are limited to coarse presence and motion classification.
Environment-specific calibration required
Every home is different. Metal furniture, thick concrete walls, and interference from neighbors' networks all affect accuracy. You'll need to experiment with threshold values for your specific environment. What works in an open studio apartment may need tuning in a Victorian terrace house.
Pets cause false positives
A dog or large cat moving around a room will trigger motion detection just like a human. Distinguishing between a person and a pet requires additional signal processing or secondary sensors (e.g., floor pressure sensors, Bluetooth tags on pets).
CSI requires specialized hardware
Getting full CSI data on macOS is not currently supported via public APIs. For research-grade sensing (breathing, heartbeat, pose estimation), you need a Linux machine with an Intel 5300 or Atheros AR9580 NIC, or dedicated commercial hardware like Cognitive Systems Aura or Everactive sensors. The macOS RSSI approach described above is great for occupancy — not for medical-grade monitoring.
Multiple people are hard to count
RSSI-based sensing can tell you "someone is here" reliably. Counting exactly how many people are in the room is significantly harder, even with CSI, because signals from multiple bodies overlap and interfere with each other.
The Camera-Free Future of Home Monitoring
WiFi presence detection represents a genuinely exciting shift in how we think about smart home automation and safety monitoring. The technology is mature enough today for practical deployments — especially for the core use cases of occupancy detection, energy management, and elderly safety.
The key insight is this: you don't need to compromise your privacy to have a smart, aware home. The radio signals already filling your space contain enough information to make meaningful decisions about lighting, heating, security, and care — without a single pixel of video ever being captured.
As hardware becomes more accessible and open-source tools like wifi-densepose mature, the line between "research prototype" and "works on my Mac" is disappearing fast. Whether you're a developer tinkering on a weekend project or someone looking for a privacy-respecting way to keep an eye on an aging parent, this is the right time to explore what WiFi sensing can do for you.
🛠️ More Free Tools While You're Here
ToolBox offers 50+ free online tools — no account required, no watermarks, no limits. Try our most popular tools below.
JSON Formatter Image Compressor PDF Compressor Browse All Tools →