Open source (GPLv3), with a commercial license for closed-source products.
Repo: francescopace/espectre
Site: espectre.dev
#ESP32 #HomeAssistant #ESPHome
1 like · 7 views
ESPectre is now a (beta) built-in ESPHome component!
Hi r/Esphome,
I'm the author of ESPectre, an open-source platform that brings Wi-Fi motion sensing to ESP32 chips. The ESPHome 2026.10 beta now includes it as a built-in component, so you can turn a supported ESP32 on your Wi-Fi network into a motion sensor without any additional PIR or mmWave hardware!
The minimal config:
espectre:
binary_sensor:
- platform: espectre
motion:
name: "Motion"
What you get
- A motion binary sensor, plus a calibrating diagnostic sensor.
- A movement sensor with a 0–1 score, handy for graphs and your own automation thresholds.
- Diagnostics for CSI occupancy, accepted CSI rate, and traffic rates.
- A Recalibrate button and a select to switch the traffic source at runtime.
Options worth knowing
- detection_algorithm: lightweight (the default, calibrates at boot) or high_accuracy (a small neural network that needs no calibration).
- traffic_generator_mode: ping by default, or dns, dns_tcp, wifi_raw, and external.
- motion_on_hits and motion_off_hits set how quickly motion turns on and off.
It runs on the ESP32, S2, S3, C3, C5, and C6, with ESP-IDF 5.5.3+ or Arduino 3.3.7+. The C5 and C6 need ESP-IDF.
Good to know before you flash
- Keep the room still while Lightweight calibrates at boot.
- Wi-Fi power save stays off and A-MPDU is disabled, so OTA, the web server, and audio streaming can get slower. I wouldn't add it to a voice or media device.
- Bluetooth shares the radio, so a BT proxy on the same board can lower CSI quality. The ESPectre ESPHome guide has settings we tested for passive proxies.
- Roaming scans are paused after connecting. With several access points, pinning bssid means no fallback if that AP goes down.
- Plan on one board per room. It detects movement, not someone sitting still.
If you'd rather have Home Assistant generate the traffic, there's a Traffic Generator add-on that pairs with traffic_generator_mode: external.
- ESPHome docs: beta.esphome.io
- Project: francescopace/espectre
- Website: espectre.dev
Thanks to the ESPHome maintainers for the review. I'd love reports from different boards, antennas, and AP setups, especially mesh networks.
131 points · 51 comments
ESPectre v3.0.0: Wi-Fi motion sensing platform, SDK available via ESP-IDF component
Hi r/esp32,
I'm the author of ESPectre, an open-source project that uses the channel state information (CSI) of ESP32 radios to detect motion. No PIR, no mmWave, and no camera: just the board and your existing Wi-Fi network.
Version 3.0.0 is now available, and I’d like to highlight two key features:
1. The sensing engine is now a reusable C++ SDK on the ESP Component Registry. You can use it in your own firmware:
idf.py add-dependency "francescopace/espectre"
The runtime handles CSI capture, calibration, and detection, then calls you back:
void on_motion_state_changed(const espectre::RuntimeSnapshot &s) override {
if (!s.ready_to_publish) return; // still calibrating
publish_motion(s.motion_state == espectre::MotionState::MOTION);
}
Your firmware keeps boot, networking, OTA, and the product logic. If you want even less, you can skip the runtime and use only the detectors.
2. It's now a built-in ESPHome component. ESPHome 2026.10, in beta right now, ships ESPectre out of the box, built on the same SDK. No external components needed. This is the whole config (docs):
espectre:
binary_sensor:
- platform: espectre
motion:
name: "Motion"
Thanks to the ESPHome maintainers for the review.
Also in v3.0.0
- ESP32, S2, S3, C3, C5, and C6. The C5 can capture on 2.4 or 5 GHz.
- Ready-to-flash firmware: Native (MQTT, Home Assistant discovery, local HTTP API, and signed HTTPS OTA) and an experimental Matter occupancy sensor.
- Browser tools to flash, provision, and tune.
- Two detectors on a 0–1 scale: Lightweight calibrates at startup, and High Accuracy is a small neural network that needs no calibration.
- Gain-invariant features, so AGC stays on.
- A MicroPython port with the Lightweight detector.
Limits, honestly
- Plan on one board per room. It detects changes in the radio environment; it doesn't count or identify people, and it can't tell you whether someone is sitting still.
- It needs steady Wi-Fi traffic. A built-in ping generator handles that by default.
- For better CSI coverage, Wi-Fi power save stays off and frame aggregation (A-MPDU) is disabled.
Links
- Code: francescopace/espectre
- Website: espectre.dev
- Browser tools: espectre.dev
- SDK guide: espectre.dev
I'd love feedback from anyone who tries it, especially if you build the SDK into your own firmware.+
64 points · 5 comments
ESPectre: detect motion with Wi-Fi and an ESP32
Free guide: strideaiacademy.com
francescopace/espectre t.co
11 views
Mentions
Open source (GPLv3), with a commercial license for closed-source products. Repo: francescopace/espectre Site: espectre.dev #ESP32 #HomeAssistant #ESPHome
ESPectre is now a (beta) built-in ESPHome component! Hi r/Esphome, I'm the author of ESPectre, an open-source platform that brings Wi-Fi motion sensing to ESP32 chips. The ESPHome 2026.10 beta now includes it as a built-in component, so you can turn a supported ESP32 on your Wi-Fi network into a motion sensor without any additional PIR or mmWave hardware! The minimal config: espectre: binary_sensor: - platform: espectre motion: name: "Motion" What you get - A motion binary sensor, plus a calibrating diagnostic sensor. - A movement sensor with a 0–1 score, handy for graphs and your own automation thresholds. - Diagnostics for CSI occupancy, accepted CSI rate, and traffic rates. - A Recalibrate button and a select to switch the traffic source at runtime. Options worth knowing - detection_algorithm: lightweight (the default, calibrates at boot) or high_accuracy (a small neural network that needs no calibration). - traffic_generator_mode: ping by default, or dns, dns_tcp, wifi_raw, and external. - motion_on_hits and motion_off_hits set how quickly motion turns on and off. It runs on the ESP32, S2, S3, C3, C5, and C6, with ESP-IDF 5.5.3+ or Arduino 3.3.7+. The C5 and C6 need ESP-IDF. Good to know before you flash - Keep the room still while Lightweight calibrates at boot. - Wi-Fi power save stays off and A-MPDU is disabled, so OTA, the web server, and audio streaming can get slower. I wouldn't add it to a voice or media device. - Bluetooth shares the radio, so a BT proxy on the same board can lower CSI quality. The ESPectre ESPHome guide has settings we tested for passive proxies. - Roaming scans are paused after connecting. With several access points, pinning bssid means no fallback if that AP goes down. - Plan on one board per room. It detects movement, not someone sitting still. If you'd rather have Home Assistant generate the traffic, there's a Traffic Generator add-on that pairs with traffic_generator_mode: external. - ESPHome docs: beta.esphome.io - Project: francescopace/espectre - Website: espectre.dev Thanks to the ESPHome maintainers for the review. I'd love reports from different boards, antennas, and AP setups, especially mesh networks.
ESPectre v3.0.0: Wi-Fi motion sensing platform, SDK available via ESP-IDF component Hi r/esp32, I'm the author of ESPectre, an open-source project that uses the channel state information (CSI) of ESP32 radios to detect motion. No PIR, no mmWave, and no camera: just the board and your existing Wi-Fi network. Version 3.0.0 is now available, and I’d like to highlight two key features: 1. The sensing engine is now a reusable C++ SDK on the ESP Component Registry. You can use it in your own firmware: idf.py add-dependency "francescopace/espectre" The runtime handles CSI capture, calibration, and detection, then calls you back: void on_motion_state_changed(const espectre::RuntimeSnapshot &s) override { if (!s.ready_to_publish) return; // still calibrating publish_motion(s.motion_state == espectre::MotionState::MOTION); } Your firmware keeps boot, networking, OTA, and the product logic. If you want even less, you can skip the runtime and use only the detectors. 2. It's now a built-in ESPHome component. ESPHome 2026.10, in beta right now, ships ESPectre out of the box, built on the same SDK. No external components needed. This is the whole config (docs): espectre: binary_sensor: - platform: espectre motion: name: "Motion" Thanks to the ESPHome maintainers for the review. Also in v3.0.0 - ESP32, S2, S3, C3, C5, and C6. The C5 can capture on 2.4 or 5 GHz. - Ready-to-flash firmware: Native (MQTT, Home Assistant discovery, local HTTP API, and signed HTTPS OTA) and an experimental Matter occupancy sensor. - Browser tools to flash, provision, and tune. - Two detectors on a 0–1 scale: Lightweight calibrates at startup, and High Accuracy is a small neural network that needs no calibration. - Gain-invariant features, so AGC stays on. - A MicroPython port with the Lightweight detector. Limits, honestly - Plan on one board per room. It detects changes in the radio environment; it doesn't count or identify people, and it can't tell you whether someone is sitting still. - It needs steady Wi-Fi traffic. A built-in ping generator handles that by default. - For better CSI coverage, Wi-Fi power save stays off and frame aggregation (A-MPDU) is disabled. Links - Code: francescopace/espectre - Website: espectre.dev - Browser tools: espectre.dev - SDK guide: espectre.dev I'd love feedback from anyone who tries it, especially if you build the SDK into your own firmware.+
ESPectre: detect motion with Wi-Fi and an ESP32 Free guide: strideaiacademy.com francescopace/espectre t.co