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.

by Francesco Pace

FULL CAD BOM FIRMWARE DOCS

HomeAutomation

Built withESP32

difficulty
●●○○○
time
an evening
license
GPL-3.0
repo
repo ACTIVE9,460 stars
1
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.

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 items

From our check of the build. Exact quantities and part numbers are in the creator’s BOM.

  • One supported ESP32 development board per roomFind
  • 2.4 GHz Wi-Fi network already in most homesFind

BUILDS OF THE WEEK

Five open-source builds worth your weekend, every week.

Checked like this one: what’s really in the repo, what it costs, how hard it is. One email, unsubscribe anytime.

Can I build this?

Printnothing required
BuyOne supported ESP32 development board (C6, C5, C3, S3, S2 or classic ESP32) per room, and the 2.4 GHz Wi-Fi network already in most homes.
ToolsA USB cable and desktop Chrome for browser flashing; Home Assistant with ESPHome or MQTT if you want it in your smart home.
SkillsYAML configuration and basic ESPHome familiarity. No programming. If Home Assistant and ESPHome are already running, this is a straightforward component install. If not, the learning curve is in those platforms, not the sensor.
TimeFifteen to thirty minutes: ten for flashing and YAML setup, another ten to twenty for tuning the threshold or testing the neural network mode.
Cost$ — one inexpensive ESP32 development board per room; everything else is already in the house or free.
SafetyNone beyond ordinary low-voltage electronics. The ESP32 runs on 3.3V or 5V USB power. No mains, no lithium cells to charge, no lasers, no moving parts.

Build at your own risk. Projects involve tools, electronics and sometimes mains voltage — follow the creator’s safety notes.

More builds like this

All projects

Gallery

Start here

Navigation into the creator’s own docs — we don’t rewrite the guide, we route you to the source.

  1. 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. 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. 3.Add the sensor to Home Assistant (ESPHome auto-discovery; the motion sensor, threshold control, and debug sensors appear immediately.)
  4. 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?

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.

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.

GitHub

Star the project on GitHub

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.