TOMMY vs ESPectre
Compare TOMMY's Wi-Fi sensing approach with ESPectre, an open-source Wi-Fi CSI motion detection project. Technology, setup, and capabilities compared.
ESPectre and TOMMY both detect motion by analyzing Wi-Fi Channel State Information (CSI) on ESP32 devices, but they take very different approaches. ESPectre is an open-source (GPL-3.0) project where a single ESP32 "listens" to the Wi-Fi link between itself and your router. TOMMY is a closed-source system where multiple ESP32 devices form a sensing mesh and measure signals between each other, which lets you define arbitrary zones.
If you prefer an open-source solution and single-device-per-area sensing is enough for your use case, ESPectre is a solid option. If you want multi-device zones, richer integration, and an easier install, TOMMY is a better fit.
| Aspect | TOMMY | ESPectre |
|---|
| Released | 17 August 2025 | 2 November 2025 |
| Technology | Wi-Fi sensing (Channel State Information) | Wi-Fi sensing (Channel State Information) |
| Protocol | Wi-Fi (802.11) | Wi-Fi (802.11) |
| Signal Analysis | Measures fluctuations in Wi-Fi signals | Measures fluctuations in Wi-Fi signals |
| Topology | Mesh - ESP32 devices measure links between each other | Star - ESP32 measures the link between itself and the router |
| Aspect | TOMMY | ESPectre |
|---|
| Device count | 2 or more devices | 1 or more devices |
| Device compatibility | ESP32, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-S2, ESP32-S3 | ESP32, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-S2, ESP32-S3 |
| Aspect | TOMMY | ESPectre |
|---|
| Zones | Freely defined by placing devices. A zone is the mesh formed between the devices you assign to it | Limited to the router-to-device path. Each ESP32 senses motion along its link to the router, so you can only contain a zone within a single room if the router sits in that room |
| Detection area | Motion is detected in the mesh area formed by the ESP32 devices in a zone | Motion is detected along the path between your router and the ESP32 |
| Obstacle penetration | Can detect motion through obstacles and walls | Can detect motion through obstacles and walls |
| Motion filtering | Cannot differentiate between human movement and other moving objects (pets, curtains, fans, etc.). Human vs. non-human filtering planned for Q2 2026 | Cannot differentiate between human movement and other moving objects (pets, curtains, fans, etc.) |
| Stationary presence sensing | Supported with compatible hardware (see Detection Mode) | Not supported |
| Aspect | TOMMY | ESPectre |
|---|
| Installation | Home Assistant add-on or Docker container (~2 mins setup) | CLI tool (~10-15 mins setup, as stated in the docs) |
| Home Assistant integration | Native Home Assistant integration with automatic entity creation, or integrate through Matter | Integrates with Home Assistant through MQTT and manual entity creation |
| ESPHome support | Supported | Supported |
| Aspect | TOMMY | ESPectre |
|---|
| Privacy | Runs locally, no cloud required | Runs locally, no cloud required |
| System type | Closed-source, proprietary system | Open source (GPL-3.0) |
| Price | Free Trial Mode. Pro Edition available as one-time purchase | Free |
- You want stationary presence sensing
- You want to define arbitrary zones by placing devices rather than being tied to the router-to-device path
- You want a one-click install through the Home Assistant add-on store or Docker
- You want native Home Assistant integration or Matter integration out of the box
- You want a fully open-source solution and are comfortable with GPL-3.0
- Single-device, single-area motion detection is enough for your use case
- You're fine with a CLI-based setup and wiring things up through MQTT manually
- You want to get started with zero software cost and only hardware to buy