<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Francesco Pace on Medium]]></title>
        <description><![CDATA[Stories by Francesco Pace on Medium]]></description>
        <link>https://medium.com/@francesco.pace?source=rss-c018f1dbb53c------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*5RnXmzy0hU9N2iuqMU_6Lg.png</url>
            <title>Stories by Francesco Pace on Medium</title>
            <link>https://medium.com/@francesco.pace?source=rss-c018f1dbb53c------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 14 Nov 2026 02:56:29 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@francesco.pace/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[How I Turned My Wi-Fi Into a Motion Sensor - Part 3]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@francesco.pace/how-i-turned-my-wi-fi-into-a-motion-sensor-part-3-37bb9a14d91e?source=rss-c018f1dbb53c------2"><img src="https://cdn-images-1.medium.com/max/1672/1*gjqh_A_3sAZRXXA9WtzY9g.png" width="1672"></a></p><p class="medium-feed-snippet">What a Wi-Fi Motion Sensor Really Measures.</p><p class="medium-feed-link"><a href="https://medium.com/@francesco.pace/how-i-turned-my-wi-fi-into-a-motion-sensor-part-3-37bb9a14d91e?source=rss-c018f1dbb53c------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@francesco.pace/how-i-turned-my-wi-fi-into-a-motion-sensor-part-3-37bb9a14d91e?source=rss-c018f1dbb53c------2</link>
            <guid isPermaLink="false">https://medium.com/p/37bb9a14d91e</guid>
            <category><![CDATA[wifi-sensing]]></category>
            <category><![CDATA[espectre]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[esp32]]></category>
            <category><![CDATA[signal-processing]]></category>
            <dc:creator><![CDATA[Francesco Pace]]></dc:creator>
            <pubDate>Fri, 11 Sep 2026 12:53:03 GMT</pubDate>
            <atom:updated>2026-09-11T13:43:13.655Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[How to Build a Semantic Discovery Layer for Your Company]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@francesco.pace/how-to-build-a-semantic-discovery-layer-for-your-company-8ffb1f9ac011?source=rss-c018f1dbb53c------2"><img src="https://cdn-images-1.medium.com/max/1197/1*lxXcmGPsckhDjZJwv_vKOA.png" width="1197"></a></p><p class="medium-feed-snippet">Embeddings, hybrid ranking and the engineering decisions that actually decide whether a system like this works.</p><p class="medium-feed-link"><a href="https://medium.com/@francesco.pace/how-to-build-a-semantic-discovery-layer-for-your-company-8ffb1f9ac011?source=rss-c018f1dbb53c------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@francesco.pace/how-to-build-a-semantic-discovery-layer-for-your-company-8ffb1f9ac011?source=rss-c018f1dbb53c------2</link>
            <guid isPermaLink="false">https://medium.com/p/8ffb1f9ac011</guid>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[software-engineering]]></category>
            <category><![CDATA[open-source]]></category>
            <dc:creator><![CDATA[Francesco Pace]]></dc:creator>
            <pubDate>Sat, 02 May 2026 17:32:28 GMT</pubDate>
            <atom:updated>2026-05-02T17:32:28.381Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[We Are Dehumanizing Our Companies. AI Doesn’t Have To.]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@francesco.pace/we-are-dehumanizing-our-companies-ai-doesnt-have-to-2aeee4d4cac2?source=rss-c018f1dbb53c------2"><img src="https://cdn-images-1.medium.com/max/1197/1*MmeP3My9PKRnBZlu5cjQcA.png" width="1197"></a></p><p class="medium-feed-snippet">Most companies already have the talent they need. They just can&#x2019;t find it.</p><p class="medium-feed-link"><a href="https://medium.com/@francesco.pace/we-are-dehumanizing-our-companies-ai-doesnt-have-to-2aeee4d4cac2?source=rss-c018f1dbb53c------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@francesco.pace/we-are-dehumanizing-our-companies-ai-doesnt-have-to-2aeee4d4cac2?source=rss-c018f1dbb53c------2</link>
            <guid isPermaLink="false">https://medium.com/p/2aeee4d4cac2</guid>
            <category><![CDATA[artificial-intelligence]]></category>
            <category><![CDATA[semantic-search]]></category>
            <category><![CDATA[hr]]></category>
            <category><![CDATA[leadership]]></category>
            <category><![CDATA[future-of-work]]></category>
            <dc:creator><![CDATA[Francesco Pace]]></dc:creator>
            <pubDate>Sat, 02 May 2026 17:27:48 GMT</pubDate>
            <atom:updated>2026-05-02T18:02:42.613Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[How I Turned My Wi-Fi Into a Motion Sensor - Part 2]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@francesco.pace/how-i-turned-my-wi-fi-into-a-motion-sensor-part-2-62038130e530?source=rss-c018f1dbb53c------2"><img src="https://cdn-images-1.medium.com/max/2600/1*YoytXq5ncPRfOAag3RMplA.jpeg" width="5712"></a></p><p class="medium-feed-snippet">Two months, 4000+ GitHub stars, and many formulas later.</p><p class="medium-feed-link"><a href="https://medium.com/@francesco.pace/how-i-turned-my-wi-fi-into-a-motion-sensor-part-2-62038130e530?source=rss-c018f1dbb53c------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@francesco.pace/how-i-turned-my-wi-fi-into-a-motion-sensor-part-2-62038130e530?source=rss-c018f1dbb53c------2</link>
            <guid isPermaLink="false">https://medium.com/p/62038130e530</guid>
            <category><![CDATA[wifi-sensing]]></category>
            <category><![CDATA[home-assistant]]></category>
            <category><![CDATA[esp32]]></category>
            <category><![CDATA[motion-detection]]></category>
            <category><![CDATA[espectre]]></category>
            <dc:creator><![CDATA[Francesco Pace]]></dc:creator>
            <pubDate>Wed, 31 Dec 2025 16:41:33 GMT</pubDate>
            <atom:updated>2026-09-11T13:43:52.503Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[How I Turned My Wi-Fi Into a Motion Sensor…]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@francesco.pace/how-i-turned-my-wi-fi-into-a-motion-sensor-61a631a9b4ec?source=rss-c018f1dbb53c------2"><img src="https://cdn-images-1.medium.com/max/2600/1*_BWnNV7hToAzcftuRIIZpA.jpeg" width="5712"></a></p><p class="medium-feed-snippet">&#x2026; using only the waves emitted by my router and a bit of mathematics.</p><p class="medium-feed-link"><a href="https://medium.com/@francesco.pace/how-i-turned-my-wi-fi-into-a-motion-sensor-61a631a9b4ec?source=rss-c018f1dbb53c------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@francesco.pace/how-i-turned-my-wi-fi-into-a-motion-sensor-61a631a9b4ec?source=rss-c018f1dbb53c------2</link>
            <guid isPermaLink="false">https://medium.com/p/61a631a9b4ec</guid>
            <category><![CDATA[wifi-sensing]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[esp32]]></category>
            <category><![CDATA[home-assistant]]></category>
            <category><![CDATA[espectre]]></category>
            <dc:creator><![CDATA[Francesco Pace]]></dc:creator>
            <pubDate>Sun, 16 Nov 2025 20:27:44 GMT</pubDate>
            <atom:updated>2026-09-11T12:55:51.610Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Come ho trasformato il mio Wi-Fi in un sensore di movimento…]]></title>
            <link>https://medium.com/@francesco.pace/come-ho-trasformato-il-mio-wi-fi-in-un-sensore-di-movimento-40053fd83128?source=rss-c018f1dbb53c------2</link>
            <guid isPermaLink="false">https://medium.com/p/40053fd83128</guid>
            <category><![CDATA[espectre]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[wifi-sensing]]></category>
            <category><![CDATA[esp32]]></category>
            <category><![CDATA[home-assistant]]></category>
            <dc:creator><![CDATA[Francesco Pace]]></dc:creator>
            <pubDate>Sun, 16 Nov 2025 17:41:54 GMT</pubDate>
            <atom:updated>2025-11-17T07:15:07.495Z</atom:updated>
            <content:encoded><![CDATA[<p>… usando solo le onde emesse dal mio router e un po’ di matematica.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_BWnNV7hToAzcftuRIIZpA.jpeg" /><figcaption>Il mio “laboratorio” casalingo: un ESP32-S3 con antenna esterna.</figcaption></figure><h3>Il momento dell’impazienza</h3><p>Il 26 settembre 2025 è stato pubblicato lo standard <a href="https://standards.ieee.org/ieee/802.11bf/11574/">IEEE 802.11bf</a>, che permette al Wi-Fi di rilevare movimento in modo nativo. Ma io non ho voluto aspettare.</p><p>I primi device compatibili arriveranno tra qualche mese (forse) ma io, appassionato di domotica, ho un problema con l’attesa 😅.</p><p>Così ho sviluppato un piccolo sistema di motion detection basato sull’analisi dello spettro Wi-Fi che:</p><ul><li>Usa un microcontrollore da meno di 10€ (ESP32-S3) come rilevatore</li><li>Si integra nativamente con Home Assistant</li><li>Rileva movimenti anche attraverso i muri (privacy “quasi” garantita)</li><li><strong>Usa solo matematica e signal processing (niente AI)</strong></li></ul><p>Il <a href="https://www.linkedin.com/posts/francescopace_opensource-homeassistant-iot-activity-7390792086159110144-2O7G?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAAABSmisBgOdy75CIfnqYAfhf2eRMvJ3d8UQ">post LinkedIn</a> che ho scritto quel giorno è diventato virale in pochissimo tempo superando i <strong>4000 like</strong> e il progetto su GitHub (<a href="https://github.com/francescopace/espectre">ESPectre</a>) ha raggiunto quasi <strong>2000 stars</strong> in due settimane. Forse non ero l’unico impaziente!</p><h3>Chi sono e perché l’ho fatto</h3><p>Mi chiamo Francesco Pace, sono laureato in matematica e lavoro nel mondo IT da più di 20 anni. La domotica è una delle mie passioni e recentemente mi sono imbattuto nel mondo del <strong>WI-FI Sensing</strong>.</p><p>Anche se lo standard <strong>802.11bf </strong>è stato appena rilasciato, di fatto, la tecnologia sottostante non è nuova e risale alla fine degli anni 90. Si chiama <strong>Channel State Information</strong> (CSI) e si tratta di elaborare una grande quantità di informazioni fisiche provenienti dalle varie sottoportanti (subcarrier) del segnale WI-FI.</p><p>Il problema? Il segnale è <strong>estremamente rumoroso</strong>. Elettrodomestici, televisori, cellulari e le persone stesse generano interferenze continue. Per questo motivo, la maggior parte delle soluzioni esistenti utilizza tecniche di Machine Learning per pulire i dati e riconoscere i pattern specifici del movimento umano.</p><p>In un mondo ormai dominato dall’AI e dal Machine Learning, volevo dimostrare che fosse possibile ottenere ottimi risultati anche con hardware economico, utilizzando <strong>solo matematica e signal processing</strong>. Niente reti neurali, niente training di modelli, niente dataset da gigabyte: solo algoritmi matematici, filtri digitali e l’analisi classica del segnale.</p><h3>Come funziona: l’invisibile che diventa visibile</h3><h4>L’analogia della torcia</h4><p>Immagina di tenere una torcia accesa in una stanza buia. Se muovi la mano davanti alla luce, l’ombra cambia. Se qualcuno cammina nella stanza, le ombre si muovono in modo diverso.</p><p>Il Wi-Fi funziona allo stesso modo, ma con onde elettromagnetiche invisibili invece che con la luce. Quando qualcuno si muove in una stanza, “disturba” le onde Wi-Fi che viaggiano tra il router e il sensore. Il sensore “ascolta” questi cambiamenti e capisce se c’è movimento.</p><h4>Cosa sono i dati CSI</h4><p>Tecnicamente, quello che analizziamo si chiama <strong>CSI (Channel State Information)</strong>: informazioni sullo stato del canale radio.</p><p>Nei sistemi Wi-Fi moderni (OFDM, Orthogonal Frequency-Division Multiplexing), il segnale viene trasmesso su decine di <strong>subcarrier, </strong>cioè frequenze diverse che viaggiano in parallelo. Per ogni subcarrier, il ricevitore calcola:</p><ul><li><strong>Ampiezza</strong>: quanto è forte il segnale</li><li><strong>Fase</strong>: quanto è “spostato” rispetto al segnale originale</li></ul><p>Quando una persona si muove, cambia:</p><ul><li>La <strong>propagazione multipath</strong> (il segnale rimbalza su pareti, mobili, corpo umano)</li><li>L’<strong>effetto Doppler</strong> (il movimento crea micro-variazioni di frequenza)</li><li>La <strong>distribuzione del campo elettromagnetico</strong> nello spazio</li></ul><p>Questi cambiamenti sono <strong>rilevabili matematicamente</strong> anche attraverso i muri, senza bisogno di telecamere o microfoni. Ma come funziona esattamente? Entriamo nel dettaglio.</p><h3>La matematica di base</h3><p>Qui inizia la parte interessante. Come si passa da onde radio a “c’è qualcuno in casa”?</p><h4>1. Selezione dei subcarrier con PCA</h4><p>L’ESP32-S3 fornisce 64 subcarrier (128 byte totali). Ogni subcarrier viene rappresentato come un <strong>numero complesso</strong> con due componenti:</p><ul><li><strong>I (In-phase)</strong>: la componente “reale” del segnale, allineata con l’onda di riferimento</li><li><strong>Q (Quadrature)</strong>: la componente “immaginaria”, sfasata di 90° rispetto alla prima</li></ul><p>Questa rappresentazione I/Q cattura sia l’<strong>ampiezza</strong> che la <strong>fase</strong> del segnale:</p><ul><li><strong>Ampiezza</strong> = √(I² + Q²) → quanto è forte il segnale</li><li><strong>Fase</strong> = arctan(Q/I) → quanto è “spostato” rispetto al segnale originale</li></ul><p>Perché è importante? Perché quando una persona si muove, cambia <strong>sia</strong> l’ampiezza (il segnale si attenua o si rafforza) <strong>sia</strong> la fase (il segnale arriva con un ritardo diverso a causa dei rimbalzi). I numeri complessi ci permettono di catturare entrambe queste informazioni in un unico valore.</p><p>Ma non tutti i 64 subcarrier sono ugualmente utili. Alcuni sono più rumorosi, altri più sensibili al movimento.</p><p>Qui ci viene in aiuto una tecnica chiamata <strong>Principal Component Analysis (PCA)</strong>, che permette di identificare quali subcarrier contengono più informazioni utili. Nel mio caso, si tratta dei subcarrier dal 47 al 58.</p><p>Questa scelta non è arbitraria, è il risultato di un’analisi matematica che massimizza il rapporto segnale/rumore. La letteratura scientifica a riguardo conferma che la selezione dei subcarrier è cruciale per ottenere buone performance con hardware a basso costo come l’ESP32-S3.</p><h4>2. Moving Variance Segmentation (MVS)</h4><p>Il cuore del sistema è un algoritmo che chiameremo <strong>Moving Variance Segmentation</strong>. Funziona così:</p><h4>Step 1: Calcolo della turbulenza spaziale</h4><p>Per ogni pacchetto CSI, calcolo la <strong>deviazione standard delle ampiezze</strong> dei subcarrier selezionati:</p><pre>turbulence = std(amplitudes[47:58])</pre><p>Questa metrica cattura quanto il segnale è “disturbato” nello spazio delle frequenze.</p><h4>Step 2: Varianza mobile</h4><p>Mantengo un buffer circolare delle ultime 20 misure di turbulenza e calcolo la <strong>varianza mobile</strong>:</p><pre>moving_variance = var(turbulence_buffer[t-20:t])</pre><p>Perché la varianza e non la media? Perché il movimento crea <strong>fluttuazioni</strong>, non solo cambiamenti di livello. La varianza cattura proprio queste fluttuazioni.</p><h4>Step 3: Soglia adattiva</h4><p>Durante una fase di calibrazione iniziale (2–3 minuti in ambiente quieto), raccolgo le varianze mobili e calcolo:</p><pre>threshold = mean(variances) + K * std(variances)</pre><p>Dove K=2.5 è un fattore empirico. Questa è una <strong>soglia adattiva</strong> che si adatta automaticamente all’ambiente specifico (dimensioni stanza, materiali, interferenze).</p><h4>Step 4: Macchina a stati</h4><p>Il sistema opera con una semplice macchina a stati a 2 livelli:</p><ul><li><strong>IDLE</strong>: moving_variance &lt; threshold → nessun movimento</li><li><strong>MOTION</strong>: moving_variance ≥ threshold → movimento rilevato</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*x744T3EelYcHHd0VWjprqg.png" /><figcaption>Nell’immagine: i due grafici superiori mostrano lo stato quieto (baseline), mentre quelli inferiori mostrano il rilevamento del movimento. I grafici in blu rappresentano la “turbolenza” spaziale del segnale.</figcaption></figure><h4>3. Pipeline di filtri digitali</h4><p>A questo punto sappiamo <strong>rilevare il movimento</strong> (grazie alla Moving Variance Segmentation), ma per task più avanzati come la <strong>classificazione</strong> (distinguere tra camminata, corsa, caduta, gesture) serve andare oltre.</p><p>Per classificare il tipo di movimento, dobbiamo estrarre informazioni più dettagliate dal segnale, chiamate <strong>feature</strong>. Ma prima di farlo, è fondamentale <strong>ripulire il segnale dal rumore di fondo</strong> (denoising): elettrodomestici, interferenze Wi-Fi, vibrazioni ambientali creano un &quot;rumore&quot; che maschera i pattern del movimento umano.</p><p>Per far questo si applica una <strong>pipeline di filtri digitali</strong> in sequenza, ognuno specializzato nel rimuovere un tipo specifico di rumore:</p><h4>Butterworth Low-Pass (8Hz)</h4><p>Rimuove il rumore ad alta frequenza (&gt;8Hz) causato da interferenze ambientali:</p><pre>H(s) = 1 / (1 + (s/ωc)^(2n))</pre><p>Dove ωc = 8Hz e n=4 (ordine del filtro).</p><h4>Wavelet Daubechies db4</h4><p>Questo è il filtro più interessante. Basandomi su uno studio del 2022 (<a href="https://scholarspace.manoa.hawaii.edu/server/api/core/bitstreams/a2d2de7c-7697-485b-97c5-62f4bf1260d0/content">Location Intelligence System</a>), ho scoperto che il <strong>wavelet db4 supera i filtri tradizionali</strong> (Butterworth, Gaussian) per il denoising del CSI su ESP32.</p><p>Il wavelet db4 decompone il segnale in:</p><ul><li><strong>Coefficienti di approssimazione</strong> (low-pass): segnale pulito</li><li><strong>Coefficienti di dettaglio</strong> (high-pass): rumore</li></ul><p>Mantengo solo i coefficienti di approssimazione, eliminando il rumore persistente a bassa frequenza.</p><h4>Hampel Filter</h4><p>Rimuove gli outlier usando la <strong>Median Absolute Deviation (MAD)</strong>:</p><pre>MAD = median(|x_i - median(x)|)<br>outlier if |x_i - median(x)| &gt; k * MAD</pre><p>Con k=3, questo filtro è robusto e non parametrico.</p><h4>Savitzky-Golay</h4><p>Smoothing polinomiale che preserva i picchi del segnale (importante per rilevare movimenti rapidi).</p><h4>4. Estrazione delle feature matematiche</h4><p>Dopo aver rilevato il movimento e ottenuto un segnale pulito, possiamo ora estrarre le feature dal segnale filtrato:</p><h4>Feature Statistiche</h4><ol><li><strong>Varianza</strong>: var(signal) - variabilità del segnale</li><li><strong>Skewness</strong>: E[(X-μ)³]/σ³ - asimmetria della distribuzione</li><li><strong>Kurtosis</strong>: E[(X-μ)⁴]/σ⁴ - 3 - &quot;code pesanti&quot; della distribuzione</li><li><strong>Entropia di Shannon</strong>: H(X) = -Σ p(x) log₂ p(x) - disordine del segnale</li><li><strong>IQR (Interquartile Range)</strong>: Q3 - Q1 - spread robusto</li></ol><h4>Feature Spaziali</h4><ol><li><strong>Varianza spaziale</strong>: variabilità tra subcarrier adiacenti</li><li><strong>Correlazione spaziale</strong>: corr(subcarrier[i], subcarrier[i+1])</li><li><strong>Gradiente spaziale</strong>: mean(|subcarrier[i+1] - subcarrier[i]|)</li></ol><h4>Feature Temporali</h4><ol><li><strong>Delta mean</strong>: mean(|CSI[t] - CSI[t-1]|) - cambiamento medio</li><li><strong>Delta variance</strong>: var(|CSI[t] - CSI[t-1]|) - variabilità del cambiamento</li></ol><p>Queste feature possono essere usate per task più avanzati (conteggio persone, riconoscimento attività), ma <strong>non sono necessarie per il semplice rilevamento movimento</strong>.</p><h3>I risultati</h3><h4>Performance del sistema</h4><p>Dopo settimane di test e studio di decine di papers, i risultati sono ottimi:</p><ul><li><strong>Rilevamento presenza</strong>: ~95% di accuratezza (IDLE vs MOTION)</li><li><strong>Latenza</strong>: &lt;50ms per pacchetto (il sistema processa ~20–100 pacchetti/secondo in tempo reale)</li></ul><h4>Casi d’uso reali</h4><p>Il limite è solo la fantasia ma riporto alcuni scenari pratici:</p><ol><li><strong>Sicurezza domestica</strong>: notifiche quando viene rilevato movimento</li><li><strong>Automazioni smart</strong>: luci che si accendono solo quando serve</li><li><strong>Risparmio energetico</strong>: riscaldamento che si spegne nelle stanze vuote</li><li><strong>Monitoraggio anziani</strong>: alert se non c’è movimento per troppo tempo</li><li><strong>Presenza in ufficio</strong>: ottimizzazione spazi di lavoro</li></ol><h3>Perché matematica e non AI?</h3><ol><li><strong>Nessun training richiesto</strong>: funziona out-of-the-box dopo 2 minuti di calibrazione</li><li><strong>Leggero</strong>: gira su un microcontrollore da meno di 10€ in tempo reale</li><li><strong>Deterministico</strong>: stesso input → stesso output (niente “black box”)</li></ol><h4>Limiti dell’approccio matematico</h4><p>L’approccio matematico ha dei limiti:</p><ul><li>Non distingue tra persone e animali domestici</li><li>Non conta quante persone ci sono</li><li>Non riconosce attività specifiche (camminata, corsa, caduta…)</li></ul><p>Per questi task più complessi, servono modelli ML. Ma la bellezza di ESPectre è che le<strong> feature matematiche</strong> estratte sono perfette come<strong> input per una rete neurale</strong>.</p><h4>Integrazione ML-ready via MQTT</h4><p>Ogni dispositivo ESP32 pubblica su MQTT un messaggio JSON contenente sia i dati di segmentazione che le feature estratte. Ecco un esempio:</p><pre>{<br>  &quot;movement&quot;: 2.45,<br>  &quot;threshold&quot;: 2.20,<br>  &quot;state&quot;: &quot;motion&quot;,<br>  &quot;segments_total&quot;: 6,<br>  &quot;features&quot;: {<br>    &quot;variance&quot;: 315.5,<br>    &quot;skewness&quot;: 0.85,<br>    &quot;kurtosis&quot;: 1.23,<br>    &quot;entropy&quot;: 4.56,<br>    &quot;iqr&quot;: 89.2,<br>    &quot;spatial_variance&quot;: 234.1,<br>    &quot;spatial_correlation&quot;: 0.67,<br>    &quot;spatial_gradient&quot;: 12.3,<br>    &quot;temporal_delta_mean&quot;: 45.6,<br>    &quot;temporal_delta_variance&quot;: 78.9<br>  },<br>  &quot;timestamp&quot;: 1730066405<br>}</pre><h3>Privacy e considerazioni etiche</h3><p>Anche se i dati CSI sono tecnicamente anonimi (non contengono immagini o audio), il sistema è in grado di rilevare presenza e movimento di persone. Questo solleva importanti questioni etiche e legali.</p><h4>Rischi potenziali</h4><p>Il sistema può essere usato per:</p><ul><li>Monitoraggio non consensuale</li><li>Profilazione comportamentale</li><li>Violazione della privacy domestica</li></ul><h4>Conformità legale</h4><p><strong>Importante</strong>: In conformità con il GDPR europeo, i dati che permettono di identificare pattern comportamentali di individui possono essere considerati dati personali, anche se non contengono informazioni identificative dirette. L’utente che usa questa tecnologia è personalmente responsabile di:</p><ul><li>Ottenere consenso esplicito e informato da tutte le persone monitorate</li><li>Rispettare GDPR e leggi locali sulla privacy</li><li>Informare chiaramente della presenza del sistema (es. tramite segnaletica visibile)</li><li>Limitare l’uso a scopi legittimi (sicurezza personale, automazione domestica consentita)</li><li>Implementare misure di sicurezza adeguate per proteggere i dati raccolti</li><li>Fornire accesso ai dati e possibilità di cancellazione su richiesta</li></ul><p>Come tutti gli strumenti, questa tecnologia può essere usata in modo etico o non etico. La responsabilità legale ricade interamente sull’utilizzatore finale.</p><h4>Raccomandazioni pratiche</h4><ul><li>Usa il sistema solo in ambienti di cui hai il controllo (la tua casa)</li><li>Non installare dispositivi in spazi condivisi senza consenso esplicito di tutti gli occupanti</li><li>Documenta l’uso del sistema e le finalità</li><li>Considera l’impatto sulla privacy anche di visitatori occasionali</li></ul><h3>Risorse</h3><h4><strong>Progetto e Contatti</strong></h4><ul><li><strong>GitHub</strong>: <a href="https://github.com/francescopace/espectre">github.com/francescopace/espectre</a></li><li><strong>LinkedIn</strong>: <a href="https://www.linkedin.com/in/francescopace/">linkedin.com/in/francescopace</a></li><li><strong>Email</strong>: <a href="/service/mailto:francesco.pace@gmail.com">francesco.pace@gmail.com</a></li></ul><h4>Riferimenti Scientifici</h4><p>Questo progetto si basa su una ricerca approfondita nel campo del Wi-Fi Sensing e dell’analisi CSI:</p><p><strong>[1]</strong> Università di Bologna. <strong><em>Wi-Fi Sensing per Human Identification attraverso CSI</em></strong>. Tesi universitaria, 2021. Disponibile: <a href="https://amslaurea.unibo.it/id/eprint/29166/1/tesi.pdf">https://amslaurea.unibo.it/id/eprint/29166/1/tesi.pdf</a></p><p><strong>[2]</strong> Politecnico di Milano. <strong><em>Channel State Information (CSI) Features Collection in Wi-Fi</em></strong>. Tesi di laurea magistrale, 2022. Disponibile: <a href="https://www.politesi.polimi.it/handle/10589/196727">https://www.politesi.polimi.it/handle/10589/196727</a></p><p><strong>[3]</strong> Wang, W., Liu, A. X., Shahzad, M., Ling, K., &amp; Lu, S. <strong><em>Indoor Motion Detection Using Wi-Fi Channel State Information in Flat Fading Environments</em></strong>. Sensors, 18(7), 2018. Disponibile: <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC6068568/">https://pmc.ncbi.nlm.nih.gov/articles/PMC6068568/</a></p><p><strong>[4]</strong> Hernandez, S. M., &amp; Bulut, E. <strong><em>WiFi Motion Detection: A Study into Efficacy and Classification</em></strong>. arXiv preprint arXiv:1908.08476, 2019. Disponibile: <a href="https://arxiv.org/abs/1908.08476">https://arxiv.org/abs/1908.08476</a></p><p><strong>[5]</strong> Zou, H., Zhou, Y., Yang, J., Gu, W., Xie, L., &amp; Spanos, C. <em>CSI-HC: </em><strong><em>A WiFi-Based Indoor Complex Human Motion Recognition Method</em></strong>. Mobile Information Systems, 2020. Disponibile: <a href="https://onlinelibrary.wiley.com/doi/10.1155/2020/3185416">https://onlinelibrary.wiley.com/doi/10.1155/2020/3185416</a></p><p><strong>[6]</strong> Hernandez, S. M., Seker, R., &amp; Bulut, E. <strong><em>Location Intelligence System for People Estimation During Emergency Using WiFi Channel State Information</em></strong>. Proceedings of the 55th Hawaii International Conference on System Sciences (HICSS), 2022. Disponibile: <a href="https://scholarspace.manoa.hawaii.edu/server/api/core/bitstreams/a2d2de7c-7697-485b-97c5-62f4bf1260d0/content">https://scholarspace.manoa.hawaii.edu/server/api/core/bitstreams/a2d2de7c-7697-485b-97c5-62f4bf1260d0/content</a></p><h3>Conclusioni</h3><p><a href="https://github.com/francescopace/espectre"><strong>ESPectre</strong></a> dimostra che è possibile creare sistemi di sensing avanzati con hardware economico e approcci matematici classici.</p><p>Il futuro del Wi-Fi Sensing è promettente, e progetti come questo permettono a chiunque di sperimentare oggi con tecnologie che diventeranno standard domani.</p><p>Il codice è completamente opensource (GPLv3): sperimenta, modifica, migliora e se ti è piaciuto, lascia una stella ⭐ su <a href="https://github.com/francescopace/espectre">GitHub</a>!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=40053fd83128" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>