Home automation with high usefulness and low annoyance tends to rely on reliable person sensing, and [francescopace]’s ESPectre shows one way to do that cheaply and easily by leveraging hardware that’s already present on a common dev board.
ESPectre is an ESP32-based open source motion detector that detects movement without any cameras or microphones. It works similarly to millimeter-wave (mmWave) radar motion detectors in the sense that when a person moves, wireless signals are altered slightly as a result. ESPectre can detect this disturbance by watching and analyzing the Wi-Fi channel state information (CSI) and doing some very smart math and filtering. It’s cheap, easy to deploy and use, and even integrates with Home Assistant.
Combining a sensor like this with something else like a passive infrared (PIR) motion sensor is one way to get really robust results. But keep in mind that PIR only senses what it can see, whereas ESPectre works on WiFi, which can penetrate walls.
Since ESPectre supports low-cost ESP32 variants and is so simple to get up and running, it might be worth your time to give it a trial run. There’s even a browser-based ghost-dodging game [francescopace] put online that uses an ESPectre board plugged in over USB, which seems like a fun way to get a feel for what it can do.

Struggling to see the point of this. A mmwave sensor only adds about a fiver to the BOM.
Ask Fugen-Ferdl’s buddy Ignacio López about saving a cent every part you build…
I’m struggling to understand why these types of comments still exist on HAD.
The point, [Chris], is because they can. Because it is something interesting to explore. Because they don’t have or want to spend the additional fiver. Just… because.
I still don’t understand why James Maxwell was doing what he was doing instead of drinking beer and chasing lassies.
Well said!
Ask Fugen-Ferdl’s buddy Ignacio López about saving a cent every part you build…
I think its clever.
So it actually also requires a router to broadcast, and that router must be within a specific distance range to work — it’s not a standalone sensor. THAT would be a nice hack.
I didn’t look into the code, but what distinguishes this from a simple received signal strength measurement, RSSI? Just a bit of signal classification?
So, what, you want us to do your homework?
I appreciate that this has a “play with it yourself” aspect to it but from my perspective, it’s a repeat, and i can’t tell if it really added anything new. If it does add anything new, i’m sorry i didn’t click through to find out.
It seems to me like in the past these kind of things have had a very specific experimenal design: they make a measurement with the signal present (a person or motion or heartbeat within range) and then they make a measurement with the signal absent, and then they try to discern the difference between these two measurements.
That’s the same technique used for a lot of the spookier quantum mechanics demonstrations, and the thing is, it sucks. Once you know that there is a difference, and what that difference is, the fact that you can measure something you already knew isn’t subjectively impressive and it isn’t objectively meaningful. That’s why the spookier parts of quantum mechanics remain unproven, because no one has been able to invent an experiment that can measure the difference without deciding it before measuring it.
The physical world we know and love is constantly showing up as noise in electronic signals. I think it’s really neat that it’s vaguely possible to treat that noise as a signal and discern the physical world from it. But so far as i can tell, outside of very narrow and controlled situations, no one has been able to demonstrate that regular wifi chipsets can really help you with that goal.