YOU CAN BUILD A WI-FI MOTION SENSOR THAT WORKS WITHOUT A CAMERA
A cheap ESP32 watches how movement disturbs the Wi-Fi signal in a room, no camera involved.
HomeAutomation
Built withESP32
- difficulty
- ●●○○○
- time
- an evening
- license
- GPL-3.0
- repo
- repo ACTIVE9,460 stars
●●○○○ · an evening · GPL-3.0 · 9,460 stars · repo ACTIVE
WHAT YOU’LL NEED
Jump to section
COMPAREE VERDICT
ESPectre turns an ESP32 into a motion sensor by reading Wi-Fi channel state information, the measurements the chip already makes about the radio link to your access point. When someone moves through the room, they change how the signal travels, and the software watches for that change. The hardware is one supported ESP32 (C6, C5, C3, S3, S2 or the classic ESP32) and the 2.4 GHz Wi-Fi already in the house; nothing on the router is touched. You can flash it from the browser in desktop Chrome and connect it to Home Assistant through ESPHome or MQTT, or use Matter or a local HTTP API. There are two detection profiles: Lightweight, the default, which calibrates itself in a quiet room at startup, and High Accuracy, a small neural network running on the ESP32 that detects better and skips calibration at the cost of more CPU. There are no cameras, no microphones and nothing to wear. The stated uses are things like switching lights or heating when a room is in use, or an alert when there is movement where nobody should be; the README is explicit that it does not count people, prove a room is empty, or replace a certified security, medical or emergency system. The one thing most likely to go wrong is buying a board that is not on the supported list. Plan on one board per room. If you already run Home Assistant, this is an evening experiment with almost no cost.
IN THE REPO
GOOD TO KNOW
- —Complete ESPHome YAML component with example configuration and documented parameters.
- —Hardware list present: ESP32-C6, C5, C3, S3, S2 or the classic ESP32, plus a normal 2.4 GHz Wi-Fi 4 network.
- —Detailed setup instructions with screenshots of the Home Assistant integration and debug sensors.
- —Two detection profiles: Lightweight (default, calibrates itself in a quiet room) and High Accuracy (a small on-device neural network that needs no calibration).
- —Licensed GPL v3. Personal and open-source use is free; closed-source commercial firmware needs the separate commercial license the author offers.
- —No PCB, no 3D print, no enclosure — this is a software component for an off-the-shelf ESP32 board.
Parts to buy
2 itemsFrom our check of the build. Exact quantities and part numbers are in the creator’s BOM.
Can I build this?
Build at your own risk. Projects involve tools, electronics and sometimes mains voltage — follow the creator’s safety notes.
More builds like this
All projectsGallery
Start here
Navigation into the creator’s own docs — we don’t rewrite the guide, we route you to the source.
- 1.Check that your ESP32 board is supported (Supported: ESP32-C6, C5, C3, S3, S2 and the classic ESP32. Anything else, such as the ESP32-C2, is not on the list.)
- 2.Install ESPHome and flash the board (Add the external component to your ESPHome YAML, flash via USB. The repository README includes a complete example configuration.)
- 3.Add the sensor to Home Assistant (ESPHome auto-discovery; the motion sensor, threshold control, and debug sensors appear immediately.)
- 4.Check calibration and choose a detection profile (Lightweight calibrates itself in a quiet room; if it misses weaker movement, improve the signal or switch to High Accuracy. The tuning guide covers both.)
Resources
Documentation, files and community threads for this build — we link straight to the original sources and never rehost the creator’s files.
KNOWN ISSUES
- Buying a chip that is not on the supported list, such as an ESP32-C2. Stick to C6, C5, C3, S3, S2 or the classic ESP32.
- Expecting perfect detection without checking the signal. Placement, Bluetooth, mesh roaming and blocked LAN traffic all affect the CSI the sensor gets; the troubleshooting guide says to fix the signal and placement before changing detector settings.
- Judging the result before calibration finishes. The default Lightweight profile calibrates on a quiet room at startup; if people move around during that time, or the Wi-Fi traffic is bursty, calibration is slow or poor. Restart with the room quiet, or switch to High Accuracy, which needs no calibration.
- Placing the ESP32 in a metal enclosure or too close to the router. CSI works by reading multipath reflections; a Faraday cage kills the signal, and being right next to the router reduces the sensitivity to movement in the rest of the room.
- Expecting it to identify who moved or where they are in the room. It detects that movement happened, not who or what or which corner. For presence detection or automations that is enough; for tracking or identification it is not.
- Running it on a 5 GHz-only network. All supported chips work on 2.4 GHz; only the ESP32-C5 also supports 5 GHz, and detection quality there has not been measured yet, so start on a 2.4 GHz network.
Does it work through walls?
The project does not promise that. It senses movement in the area around the board, and the README says to plan one board per room. Walls, antennas and furniture between the board and the access point affect the signal, so test placement with the Monitor tool.
Can it tell who moved or where they are?
No. It detects that movement happened in the coverage area, not who, what, or which part of the room. For presence-based automation that is enough; for tracking or identification it is not.
Which detection mode should I use?
Start with the default Lightweight profile, which calibrates itself while the room is quiet at startup and uses little CPU. If it misses weaker movement or the link is noisy, switch to High Accuracy, a small neural network on the ESP32 that detects better and needs no calibration but uses more CPU and memory.
Does it work with a mesh network or multiple access points?
It measures the channel to one router or AP. If the ESP32 roams between nodes, detection may be inconsistent. Best results come from a single 2.4 GHz AP with stable coverage in the monitored room.
Is it as reliable as a PIR sensor?
The project does not compare itself with PIR sensors. It detects changes in the radio environment around the board, and results depend on placement: the setup guide notes that walls, antennas and furniture often matter more than distance. Treat it as an experiment and test it in your room before relying on it.
What about privacy?
No camera, no microphone, no image. Detection runs locally on the ESP32 and nothing needs the cloud; it reports motion and a movement score to Home Assistant, MQTT or Matter on your network. The README still warns that motion data can reveal routines or when nobody is home, so protect access to it and tell the people affected.
Community builds
No community builds yet — be the first, we feature the best ones.
Discussion1
FROM THE COMPAREE TEAM
The default Lightweight profile calibrates itself in a quiet room at startup, while the High Accuracy profile runs a small neural network on the ESP32 itself and skips that calibration at the cost of more CPU. Which would you try first, and how much tuning patience do you have before switching?
Francesco Pace
Francesco Pace built ESPectre to explore Wi-Fi sensing as a private, local alternative to cameras and PIR sensors for home automation. The project publishes not just firmware but its dataset, model weights and validation work.
DISCLAIMER
- Comparee is not the author of the projects featured here. All rights to each project belong to its creator — every page links to the original source, and we never host creators’ files.
- Information is provided without warranty and may become outdated as projects evolve. Prices are indicative bands only — always check the creator’s parts list for current costs.
- Building and operating any project is at your own responsibility. Protective equipment, safe workshop practice and compliance with local regulations are the builder’s responsibility.
CompareeTEAM1mo agoedited
Practical notes from our verification: the repository is very actively maintained, and the README is clear about supported chips — ESP32-C6, C5, C3, S3, S2 and the classic ESP32, on a normal 2.4 GHz Wi-Fi 4 network. The most common mistake will be buying a board outside that list, such as an ESP32-C2 or a random clone, without checking. Once that is right, setup is quick: you can flash from the browser in desktop Chrome, provision Wi-Fi on screen, and connect it to Home Assistant through ESPHome or MQTT. There are two detection profiles: Lightweight, the default, which calibrates its threshold in a quiet room at startup, and High Accuracy, a small neural network that costs more CPU but needs no quiet-room calibration. The README is upfront that this detects changes in the radio environment — it does not count people or prove a room is empty, and it is not a security system. It is a privacy-friendly experiment for people who want radio-based sensing without adding cameras. Correction (4 October 2026): we re-checked this page line by line against the project's own repository, documentation and videos, and fixed errors in earlier versions.