Torna agli aggiornamenti
New releaseAug 18, 2026

espectre snapshot-dev

ESPectre - Sistema di rilevamento del movimento basato sull'analisi dello spettro Wi-Fi (CSI), con integrazione con Home Assistant.

Condividi

License ESPHome Platform Release CI codecov

🛜 ESPectre 👻

Sistema di rilevamento del movimento basato sull'analisi dello spettro Wi-Fi (CSI), con integrazione nativa con Home Assistant tramite ESPHome.

[!TIP] Nuovo rilevatore ML: rilevamento del movimento basato su rete neurale. Nessuna calibrazione richiesta, eseguito sul dispositivo. Questa è una funzionalità sperimentale e i feedback sono benvenuti nella discussione dedicata al rilevatore ML. È disponibile anche una build snapshot con le ultime modifiche (usa gli asset -ml per il rilevatore basato su machine learning), oppure segui la guida alla configurazione per una configurazione personalizzata.


Indice


In 3 punti

  1. Cosa fa: Rileva il movimento utilizzando il Wi-Fi (niente telecamere, niente microfoni)
  2. Cosa ti serve: Un dispositivo ESP32 da ~€10 (consigliati S3 e C6, supportate altre varianti)
  3. Tempo di configurazione: 10-15 minuti

Cosa ti serve

Hardware

  • Router Wi-Fi 2.4GHz - quello che hai già a casa va benissimo
  • ESP32 con supporto CSI - ESP32-C6, ESP32-S3, ESP32-C3, ESP32 (originale) o altre varianti. Vedi SETUP.md per la tabella completa di confronto delle piattaforme.

Bundle 3 x ESP32-S3 DevKit con antenne esterne ESP32-S3 DevKit con antenne esterne

Software (tutto gratuito)

  • Home Assistant (su Raspberry Pi, PC, NAS o cloud)
  • ESPHome (integrato in Home Assistant o standalone)

Competenze richieste

  • Conoscenza base di YAML per la configurazione
  • Familiarità con Home Assistant (opzionale ma consigliata)
  • NESSUNA competenza di programmazione richiesta
  • NESSUNA configurazione del router necessaria

Avvio rapido

Tempo di configurazione: ~10-15 minuti
Difficoltà: Facile (solo configurazione YAML)

  1. Configurazione e installazione: Segui la guida completa in SETUP.md
  2. Ottimizzazione: Ottimizza per il tuo ambiente con TUNING.md

Dashboard Home Assistant di ESPectre Dashboard di Home Assistant con rilevamento del movimento in tempo reale, controllo della soglia e sensori di debug


Come funziona

Quando qualcuno si muove in una stanza, "disturba" le onde Wi-Fi che viaggiano tra il router e il sensore. È come quando muovi la mano davanti a una torcia e vedi l'ombra cambiare.

Il dispositivo ESP32 "ascolta" questi cambiamenti e capisce se c'è movimento.

Vantaggi

  • Niente telecamere (privacy totale)
  • Nessun dispositivo indossabile richiesto (niente braccialetti o sensori da indossare)
  • Funziona attraverso le pareti (il Wi-Fi attraversa le pareti)
  • Molto economico (~€10 in totale)

Vuoi capire i dettagli tecnici? Vedi ALGORITHMS.md per la spiegazione del CSI e la documentazione sull'elaborazione del segnale.


Cosa puoi farci

Esempi pratici

  • Sicurezza domestica: Ricevi un avviso se qualcuno entra mentre sei via
  • Assistenza agli anziani: Monitora l'attività per rilevare cadute o inattività prolungata
  • Automazione intelligente: Accendi luci/riscaldamento solo quando qualcuno è presente
  • Risparmio energetico: Spegni automaticamente i dispositivi nelle stanze vuote
  • Monitoraggio dei bambini: Avvisa se escono dalla stanza durante la notte
  • Controllo del clima: Riscalda/raffredda solo le zone occupate

Dove posizionare il sensore

Il posizionamento ottimale del sensore è fondamentale per un rilevamento affidabile del movimento.

Distanza consigliata dal router

Intervallo ottimale: 3-8 metri

DistanzaSegnalePercorsi multipliSensibilitàRumoreRaccomandazione
< 2mTroppo forteMinimoBassaBasso❌ Troppo vicino
3-8mForteBuonoAltaBassoOttimale
> 10-15mDeboleVariabileBassaAlto❌ Troppo lontano

Consigli per il posizionamento

Da fare:

  • Posiziona il sensore nell'area da monitorare (non necessariamente in linea diretta con il router)
  • Altezza: 1-1.5 metri da terra (altezza di scrivania/tavolo)
  • Antenna esterna: usa un connettore IPEX per una migliore ricezione

Da non fare:

  • Evita ostacoli metallici tra router e sensore (frigoriferi, armadi metallici)
  • Evita angoli o spazi chiusi (riduce la diversità dei percorsi multipli)

Architettura del sistema

Pipeline di elaborazione

ESPectre utilizza una pipeline di elaborazione mirata per il rilevamento del movimento:``` ┌─────────────┐ │ CSI Data │ Raw Wi-Fi Channel State Information └──────┬──────┘ │ ▼ ┌─────────────┐ │ Gain Lock │ AGC/FFT stabilization (~3 seconds) │ │ Locks hardware gain for stable measurements └──────┬──────┘ │ ▼ ┌─────────────┐ │ Auto │ Automatic subcarrier selection (once at boot) │ Calibration │ Selects optimal 12 subcarriers (NBVI) └──────┬──────┘ │ ▼ ┌─────────────┐ │ Adaptive │ auto: P95 × 1.1 | min: P100 │ Threshold │ or fixed manual value └──────┬──────┘ │ ▼ ┌─────────────┐ │ Hampel │ Turbulence outlier removal │ Filter │ (enabled by default) └──────┬──────┘ │ ▼ ┌─────────────┐ │ Low-pass │ Noise reduction (smoothing) │ Filter │ (optional, disabled by default) └──────┬──────┘ │ ▼ ┌─────────────┐ │ Detection │ MVS or ML score │ Evaluation │ every evaluation_interval packets └──────┬──────┘ │ ▼ ┌─────────────┐ │ Hit Filter │ motion_on_hits / motion_off_hits │ │ edge-driven IDLE ↔ MOTION └──────┬──────┘ │ ▼ ┌─────────────┐ │ Home │ Edge-driven motion binary + │ Assistant │ periodic Movement Score / Threshold └─────────────┘

### Sensore singolo o multiplo```
┌─────────┐  ┌─────────┐  ┌─────────┐
│ ESP32   │  │ ESP32   │  │ ESP32   │
│ Room 1  │  │ Room 2  │  │ Room 3  │
└────┬────┘  └────┬────┘  └────┬────┘
     │            │            │
     └────────────┴────────────┘
                  │
                  │ ESPHome Native API
                  ▼
         ┌────────────────────┐
         │   Home Assistant   │
         │   (Auto-discovery) │
         └────────────────────┘

Ogni sensore viene rilevato automaticamente da Home Assistant con:

  • Sensore binario per il rilevamento del movimento, pubblicato immediatamente sui cambi di stato
  • Sensore del punteggio di movimento, pubblicato alla cadenza periodica
  • Soglia regolabile (entità numerica)

Selezione automatica delle sottoportanti

ESPectre implementa NBVI (Normalized Band Variance Index) per la selezione automatica delle sottoportanti, ottenendo prestazioni quasi ottimali (F1>96%) con zero configurazione manuale. L'algoritmo seleziona 12 sottoportanti non consecutive in base a metriche di stabilità e diversità spettrale.

⚠️ IMPORTANTE (modalità MVS): Mantieni la stanza silenziosa e ferma per 10 secondi dopo l'avvio del dispositivo. L'auto-calibrazione viene eseguita in questo periodo e il movimento influirà sull'accuratezza del rilevamento. La modalità ML salta la calibrazione.

Per i dettagli dell'algoritmo, vedere ALGORITHMS.md.


FAQ per Principianti

Clicca per espandere le FAQ

D: Ho bisogno di conoscenze di programmazione per usarlo?
R: No! ESPectre utilizza file di configurazione YAML. Basta scaricare l'esempio, flasharlo e configurare il WiFi tramite l'app ESPHome o l'interfaccia web.

D: Funziona con il mio router?
R: Sì, se il tuo router ha Wi-Fi a 2.4GHz (praticamente tutti i router moderni ce l'hanno).

D: Quanto costa in totale?
R: Hardware: ~€10 per un dispositivo ESP32 (S3/C6 consigliati, anche altre varianti funzionano). Software: tutto gratuito e open source. Avrai anche bisogno di Home Assistant in esecuzione da qualche parte (Raspberry Pi ~€35-50, o qualsiasi PC/NAS esistente).

D: Devo modificare qualcosa sul router?
R: No! Il router funziona normalmente. Il sensore "ascolta" i segnali Wi-Fi senza modificare nulla.

D: Funziona attraverso i muri?
R: Sì, il segnale Wi-Fi a 2.4GHz penetra il cartongesso. I muri in cemento armato riducono la sensibilità, ma il rilevamento rimane possibile a distanze ridotte.

D: Quanti sensori servono per una casa?
R: Dipende dalle dimensioni. Un sensore può monitorare ~50 m². Per case più grandi, usa più sensori (1 sensore ogni 50-70 m² per una copertura ottimale).

D: Può distinguere tra persone e animali domestici?
R: Il sistema utilizza un modello di segmentazione a 2 stati (IDLE/MOTION) che identifica il movimento generico senza distinguere tra persone, animali domestici o altri oggetti in movimento. Per una classificazione più sofisticata (persone vs animali, riconoscimento delle attività, rilevamento dei gesti), sarebbero necessari modelli AI/ML addestrati (vedi sezione Evoluzione Futura).

D: Funziona con reti Wi-Fi mesh?
R: Sì, funziona normalmente. Assicurati che l'ESP32 si connetta alla banda a 2.4 GHz.

D: Quanto è accurato il rilevamento?
R: L'accuratezza del rilevamento dipende fortemente dall'ambiente e richiede una corretta regolazione. I fattori che influenzano le prestazioni includono: disposizione della stanza, materiali delle pareti, posizione dei mobili, distanza dal router (ottimale: 3-8m) e livelli di interferenza. In condizioni ottimali con una regolazione adeguata, il sistema fornisce un rilevamento affidabile del movimento. Regola il parametro segmentation_threshold per tarare la sensibilità in base al tuo ambiente specifico.

D: Qual è il consumo energetico?
R: ~500mW tipici durante il funzionamento continuo. Il firmware include il supporto per l'ottimizzazione energetica e le modalità di deep sleep possono essere implementate per implementazioni a batteria, anche se ciò richiederebbe modifiche personalizzate al codice.

D: Se non funziona, posso ricevere aiuto?
R: Sì, apri un Issue su GitHub o contattami via email.


Sicurezza e Privacy

Considerazioni su Privacy, Sicurezza ed Etica (clicca per espandere)

Natura dei Dati Raccolti

Il sistema raccoglie dati anonimi relativi alle caratteristiche fisiche del canale radio Wi-Fi:

  • Ampiezze e fasi delle sottoportanti OFDM
  • Varianze statistiche del segnale
  • NON raccolti: identità personali, contenuti delle comunicazioni, immagini, audio

I dati CSI rappresentano solo le proprietà del mezzo di trasmissione e non contengono informazioni identificative dirette.

Vantaggi per la Privacy

  • Niente telecamere: Rispetto della privacy visiva
  • Niente microfoni: Nessuna registrazione audio
  • Niente dispositivi indossabili: Non richiede dispositivi indossabili
  • Dati aggregati: Solo metriche statistiche, non dati identificativi grezzi

⚠️ Disclaimer e Considerazioni Etiche

AVVERTENZA: Nonostante l'intrinseco anonimato dei dati CSI, questo sistema può essere utilizzato per:

  • Monitoraggio non consensuale: Rilevare la presenza/i movimenti di persone senza il loro consenso esplicito
  • Profilazione comportamentale: Con modelli AI avanzati, dedurre i modelli di vita quotidiana
  • Violazione della privacy domestica: Tracciare le attività all'interno delle abitazioni private

Responsabilità d'Uso

L'utente è l'unico responsabile dell'utilizzo di questo sistema e deve:

  1. Ottenere il consenso esplicito da tutte le persone monitorate
  2. Rispettare le normative locali (GDPR in UE, leggi locali sulla privacy)
  3. Informare chiaramente della presenza del sistema di rilevamento
  4. Limitare l'uso a scopi legittimi (sicurezza domestica, domotica personale)
  5. Proteggere i dati con crittografia e accesso controllato
  6. NON usarlo per sorveglianza illegale, stalking o violazione della privacy altrui

Approfondimento Tecnico

Per i dettagli degli algoritmi (MVS, calibrazione NBVI, filtro di Hampel), vedere ALGORITHMS.md.

Per le metriche di prestazione (matrice di confusione, F1-score, benchmark), vedere PERFORMANCE.md.


Strategia a Due Piattaforme

Questo progetto segue un approccio a doppia piattaforma per bilanciare la velocità di innovazione con la stabilità produttiva:

ESPectre (Questo Repository) - Piattaforma di Produzione

Destinatari: Utenti finali, appassionati di smart home, utenti Home Assistant

  • Componente ESPHome con integrazione nativa in Home Assistant
  • Configurazione YAML - nessuna programmazione richiesta
  • Auto-rilevamento - i dispositivi appaiono automaticamente in Home Assistant
  • Pronto per la produzione - stabile, testato, facile da distribuire
  • Dimostrativo - presenta i risultati della ricerca in un pacchetto user-friendly

Micro-ESPectre - Piattaforma R&S

Destinatari: Ricercatori, sviluppatori, applicazioni accademiche/industriali

  • Implementazione in Python/MicroPython per prototipazione rapida
  • Basato su MQTT - integrazione flessibile (non limitata a Home Assistant)
  • Iterazione rapida - testa nuovi algoritmi in secondi, non minuti
  • Strumenti di analisi - suite completa per l'analisi dei dati CSI
  • Casi d'uso: Ricerca accademica, sensing industriale, sviluppo di algoritmi

Micro-ESPectre ti fornisce le basi per:

  • Conteggio delle persone
  • Riconoscimento delle attività (camminare, cadere, sedersi, dormire)
  • Localizzazione e tracking
  • Riconoscimento dei gesti

Flusso di Sviluppo```

┌─────────────────────┐ Validated ┌──────────────────────┐ │ Micro-ESPectre │ ─────────────────► │ ESPectre │ │ (R&D Platform) │ algorithms │ (Production Platform)│ │ │ │ │ │ • Fast prototyping │ │ • ESPHome component │ │ • Algorithm testing │ │ • Home Assistant │ │ • Data analysis │ │ • End-user ready │ │ • MQTT flexibility │ │ • Native API │ └─────────────────────┘ └──────────────────────┘

**Ciclo di innovazione**: le nuove funzionalità e i nuovi algoritmi vengono prima sviluppati e validati in Micro-ESPectre (Python), poi portati in ESPectre (C++) una volta dimostratisi efficaci.

---

## Evoluzione futura

Mentre ESPectre v2.x si concentra sul **rilevamento del movimento** (MVS + selezione automatica della sottoportante), il progetto sta esplorando capacità di machine learning per applicazioni avanzate:

| Capacità | Stato | Descrizione |
|------------|--------|-------------|
| **Rilevatore ML** | Sperimentale | Rete neurale (MLP 9→32→16→1) |
| **Riconoscimento gesti** | Pianificato | Rileva gesti della mano (scorrimento, spinta, cerchio) per il controllo della casa intelligente |
| **Riconoscimento attività umane** | Pianificato | Identifica attività (seduto, camminare, cadere) |
| **Conteggio persone** | Pianificato | Stima il numero di persone in una stanza |
| **Localizzazione 3D** | Ricerca | Posizionamento indoor (precisione 30-50 cm) tramite array di antenne coerenti in fase |

Il rilevatore ML è già disponibile con `detection_algorithm: ml` nella tua configurazione YAML. Per i dettagli sull'algoritmo, vedi [ALGORITHMS.md](https://github.com/francescopace/espectre/blob/HEAD/micro-espectre/ALGORITHMS.md#ml-neural-network-detector) e `PERFORMANCE.md` per le metriche attuali.  
L'infrastruttura di raccolta dati e addestramento ML è documentata in [ML_DATA_COLLECTION.md](https://github.com/francescopace/espectre/blob/HEAD/micro-espectre/ML_DATA_COLLECTION.md).

Vedi [ROADMAP.md](https://github.com/francescopace/espectre/blob/HEAD/ROADMAP.md) per piani dettagliati, tempistiche e come contribuire.

---

## Documentazione

### ESPectre (Produzione)

| Documento | Descrizione |
|----------|-------------|
| [Intro](https://github.com/francescopace/espectre/blob/HEAD/README.md) | (Questo file) Panoramica del progetto, avvio rapido, FAQ |
| [Guida all'installazione](https://github.com/francescopace/espectre/blob/HEAD/SETUP.md) | Installazione e configurazione con ESPHome |
| [Guida alla regolazione](https://github.com/francescopace/espectre/blob/HEAD/TUNING.md) | Regolazione dei parametri per un rilevamento ottimale |
| [Prestazioni](https://github.com/francescopace/espectre/blob/HEAD/PERFORMANCE.md) | Benchmark, matrice di confusione, punteggio F1 |
| [Il Gioco](https://github.com/francescopace/espectre/blob/HEAD/docs/game/README.md) | Gioco browser, API di streaming USB, regolazione interattiva della soglia |
| [Suite di test](https://github.com/francescopace/espectre/blob/HEAD/test/README.md) | Documentazione dei test PlatformIO Unity |

### Micro-ESPectre (R&S)

| Documento | Descrizione |
|----------|-------------|
| [Intro](https://github.com/francescopace/espectre/blob/HEAD/micro-espectre/README.md) | Panoramica della piattaforma R&S, CLI, MQTT, Web Monitor |
| [Algoritmi](https://github.com/francescopace/espectre/blob/HEAD/micro-espectre/ALGORITHMS.md) | Documentazione scientifica di MVS, calibrazione NBVI, filtro di Hampel |
| [Strumenti di analisi](https://github.com/francescopace/espectre/blob/HEAD/micro-espectre/tools/README.md) | Script di analisi e ottimizzazione CSI |
| [Raccolta dati ML](https://github.com/francescopace/espectre/blob/HEAD/micro-espectre/ML_DATA_COLLECTION.md) | Creazione di dataset etichettati per il machine learning |
| [Riferimenti](https://github.com/francescopace/espectre/blob/HEAD/micro-espectre/README.md#references) | Articoli accademici e risorse di ricerca |

### Progetto

| Documento | Descrizione |
|----------|-------------|
| [Roadmap](https://github.com/francescopace/espectre/blob/HEAD/ROADMAP.md) | Visione del progetto e piani ML |
| [Contribuire](https://github.com/francescopace/espectre/blob/HEAD/CONTRIBUTING.md) | Come contribuire (codice, dati, documentazione) |
| [Changelog](https://github.com/francescopace/espectre/blob/HEAD/CHANGELOG.md) | Cronologia versioni e note di rilascio |
| [Sicurezza](https://github.com/francescopace/espectre/blob/HEAD/SECURITY.md) | Policy di sicurezza e segnalazione di vulnerabilità |
| [Codice di condotta](https://github.com/francescopace/espectre/blob/HEAD/CODE_OF_CONDUCT.md) | Linee guida della community |

---

## Media

| Articoli | Titolo |
|-------------|-------|
| Medium | [Come ho trasformato il mio Wi-Fi in un sensore di movimento - Parte 1](https://medium.com/@francesco.pace/how-i-turned-my-wi-fi-into-a-motion-sensor-61a631a9b4ec?sk=c7f79130d78b0545fce4a228a6a79af3&utm_source=github&utm_medium=readme&utm_campaign=espectre) |
| Medium | [Come ho trasformato il mio Wi-Fi in un sensore di movimento - Parte 2](https://medium.com/@francesco.pace/how-i-turned-my-wi-fi-into-a-motion-sensor-part-2-62038130e530?sk=7c8b6f11cf3fcb8d279648016ebff72a&utm_source=github&utm_medium=readme&utm_campaign=espectre) |
| IoT For All | [Come ho trasformato il mio Wi-Fi in un sensore di movimento](https://www.iotforall.com/wifi-motion-sensor-iot) |
| Hackaday | [Crea il tuo sensore di presenza basato su ESP32, senza hardware speciale](https://hackaday.com/2026/01/28/make-your-own-esp32-based-person-sensor-no-special-hardware-needed/) |
| Adafruit Learn | [Rilevatore di presenza umana ESPectre per Feather](https://learn.adafruit.com/espectre-human-detector-for-feather) |
| Seeed Studio Wiki | [Distribuire Espectre su Seeed Studio XIAO ESP32 Series con ESPHome](https://wiki.seeedstudio.com/xiao-esp32--series-espresense/) |

| Blog | Discussione |
|----------|------------|
| Home Assistant | [ESPectre - Rilevamento del movimento Wi-Fi per Home Assistant](https://community.home-assistant.io/t/espectre-wi-fi-motion-detection-for-home-assistant/961251) |

| Video | Video |
|---------|-------|
| @GithubAwesome | [ESPectre](https://www.youtube.com/shorts/iQ_DPHLn8ms) |

| Podcast | Episodio |
|-------------|---------|
| Hackaday | [Episodio del podcast 355: Rilevatori di persone, walkie-talkie, smartphone open source...](https://hackaday.com/2026/01/30/hackaday-podcast-episode-355-person-detectors-walkie-talkies-open-smartphones-and-a-wifi-traffic-light/) |

---

## Progetti correlati

- [radio-presence-scanner](https://github.com/francescopace/radio-presence-scanner): progetto complementare per il rilevamento di presenza focalizzato sulle osservazioni radio BLE dai dispositivi host (Python), con dashboard HTTP opzionale.
- [micropython-esp32-csi](https://github.com/francescopace/micropython-esp32-csi): fork MicroPython personalizzato che espone le API CSI di ESP32, usato come base firmware per il prototipaggio rapido di CSI nel flusso di lavoro Micro-ESPectre.

---

## Riconoscimenti

ESPectre sfrutta le capacità CSI Wi-Fi native dei chip ESP32. Grazie a [Espressif](https://www.espressif.com/) per aver reso accessibile la CSI nel framework ESP-IDF e per aver riconosciuto ESPectre come [progetto della community](https://github.com/espressif/esp-csi#6-related-resources) nel loro repository [esp-csi](https://github.com/espressif/esp-csi).

---

## Licenza

Questo progetto è rilasciato sotto la **GNU General Public License v3.0 (GPLv3)**.

GPLv3 garantisce che:
- Il software rimane libero e open source
- Chiunque può usarlo, studiarlo, modificarlo e distribuirlo
- Le modifiche devono essere condivise sotto la stessa licenza
- Protegge i diritti degli utenti finali e la libertà del software

Vedi [LICENSE](https://github.com/francescopace/espectre/blob/HEAD/LICENSE) per il testo completo della licenza.

I contributi sono inviati sotto GPLv3 e devono includere un trailer DCO
`Signed-off-by` su ogni commit (`git commit -s`).

## Autore

**Francesco Pace**  
Email: [[email protected]](mailto:[email protected])  
LinkedIn: [linkedin.com/in/francescopace](https://www.linkedin.com/in/francescopace/)

Se trovi ESPectre utile e vuoi sostenere il suo sviluppo, puoi offrirmi un caffè. È del tutto facoltativo.
Lavoro a questo progetto perché ne sono appassionato. I contributi mi aiutano ad acquistare nuovo hardware per ampliare l'elenco dei dispositivi testati e supportati, e a dedicare più tempo alle nuove funzionalità.

<a href="https://www.buymeacoffee.com/espectre" target="_blank"><img src="https://assets.kitploit.com/production/public/readmes/9574/a7e8174c892355a24fbaec083cbef385d097a0b488fd4823dbbb0061643bb5e2.png" alt="Buy Me A Coffee" style="height: 60px !important;width: 217px !important;" ></a>

Categorie