explaingit

francescopace/espectre

7,260PythonAudience · generalComplexity · 3/5Setup · moderate

TLDR

ESPectre detects room occupancy by reading Wi-Fi signal disturbances from a 10-euro ESP32 sensor, integrating with Home Assistant to trigger automations like lights or alerts without any camera.

Mindmap

mindmap
  root((ESPectre))
    What it does
      WiFi motion detection
      Room occupancy sensing
      No camera required
    How it works
      ESP32 microcontroller
      Channel State Info
      Signal filtering
      ML classification mode
    Integration
      Home Assistant
      ESPHome component
      YAML configuration
    Use cases
      Smart lighting
      Security monitoring
      Multi-room coverage
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Detect whether a room is occupied without cameras by installing a cheap ESP32 sensor that reads changes in Wi-Fi signals.

USE CASE 2

Turn lights on automatically when someone enters a room using a Home Assistant automation triggered by the ESPectre binary sensor.

USE CASE 3

Alert yourself when a space that should be empty, like a server room, shows unexpected movement activity.

Tech stack

PythonESP32ESPHomeYAMLHome Assistant

Getting it running

Difficulty · moderate Time to first run · 30min

Requires an ESP32 microcontroller (around 10 euros) and a running Home Assistant instance with ESPHome installed.

In plain English

ESPectre is a motion detection system that works using Wi-Fi signals instead of cameras or microphones. When a person moves through a room, their body disturbs the radio waves traveling between a Wi-Fi router and a small sensor device. The sensor, an ESP32 microcontroller costing around 10 euros, picks up those disturbances and uses them to determine whether the room is occupied or empty. The technical name for what the sensor reads is Channel State Information, or CSI. The project processes this raw signal data through a series of steps: stabilizing the hardware gain, automatically selecting the most useful frequency channels, filtering out noise and statistical outliers, and then classifying the result as motion or idle. A newer machine learning mode, added in version 2.5, runs a neural network directly on the device and skips the manual calibration step. The system integrates directly with Home Assistant, the popular open-source home automation platform, via a component called ESPHome. Once set up, each sensor appears in Home Assistant automatically as a binary sensor showing motion or no motion, along with a numeric movement score and an adjustable detection threshold. You can use these in any Home Assistant automation, such as turning lights on when someone enters a room or sending an alert when a space that should be empty shows activity. Setup requires no programming. Configuration is done in YAML, which is a plain-text format that looks like a structured list. The README estimates 10 to 15 minutes for the initial setup. Multiple sensors can cover multiple rooms, each reporting independently to the same Home Assistant instance. On placement, the README recommends positioning the sensor 3 to 8 meters from the router and at desk height, roughly 1 to 1.5 meters off the floor. Metal objects between the router and sensor reduce accuracy. The system works through ordinary walls because Wi-Fi signals pass through them, and it requires no physical contact or wearable device from the people being monitored.

Copy-paste prompts

Prompt 1
Write a Home Assistant automation that turns on the living room lights when ESPectre reports motion and turns them off 5 minutes after motion stops.
Prompt 2
How do I write the ESPHome YAML configuration for ESPectre to cover a room where the router is about 5 meters away with some furniture in between?
Prompt 3
How do I add a second ESPectre sensor for a second room so both appear as separate binary sensors in Home Assistant?
Open on GitHub → Explain another repo

← francescopace on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.