[{"data":1,"prerenderedAt":325},["ShallowReactive",2],{"project-45953977":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":35,"aspects":36,"strip":42,"post_text":44,"what":45,"said":89,"maker_in_thread":159,"shape":166,"grid":170,"attempts":287,"same_week":288,"maker_shows":173,"maker_hidden":317,"reader_version":318,"card":319},"45953977","ESPectre","Motion detection based on Wi-Fi spectre analysis","title","Show HN: ESPectre – Motion detection based on Wi-Fi spectre analysis","https:\u002F\u002Fgithub.com\u002Ffrancescopace\u002Fespectre","github.com","francescopace",1763390454,2025,215,50,286,3837,8,"notable","infrastructure","home automation sensing","other",[24,25,26,27,28],"wi-fi sensing","csi motion detection","esp32","home assistant","presence detection","curious",0.092,{"positive":32,"neutral":33,"mixed":34,"critical":34},3,18,0,21,{"idea":37,"performance":38,"docs":39,"execution":40,"pricing":41},{"positive":32,"critical":34},{"positive":34,"critical":34},{"positive":34,"critical":34},{"positive":34,"critical":34},{"positive":34,"critical":34},[34,43,34,32,34,32,34,43,34,32,32,32,34,32,34,34,32,32,34,32,32,34,32,32,34,34,34,32,32,34,43,32,32,32,34,32,34,34,34,34],5,"Hi everyone, I'm the author of ESPectre.\n\nThis is an open-source (GPLv3) project that uses Wi-Fi signal analysis to detect motion using CSI data, and it has already garnered almost 2,000 stars in two weeks.\n\nKey technical details:\n\n- The system does NOT use Machine Learning, it relies purely on Math. — Runs in real-time on a super affordable chip like the ESP32. - It integrates seamlessly with Home Assistant via MQTT.",{"problem":46,"audience":52,"pricing":52,"motivation":53,"time_to_build":52,"stack":62,"openness":86,"stage":87,"team_size":88},{"value":47,"source":48,"evidence":49},"Detects motion in a room using Wi-Fi signal analysis instead of dedicated sensors.","maker",[50],{"id":51},"post",null,{"value":54,"source":48,"evidence":55},"Open-source motion sensing; maker also exploring a Wi-Fi theremin and hide-and-seek game.",[56,59],{"id":57,"by":11,"text":58},"45959155","Fun fact: I’m working on turning ESPectre into a Wi‑Fi Theremin (the musical instrument you play by moving your hands near an antenna). The idea of “playing” by simply moving…",{"id":60,"by":11,"text":61},"45959925","You hit the nail on the head! That's precisely the motivation. Having two kids myself, I've thought of turning it into a game: blindfolded hide-and-seek where the pitch of the…",[63,72,76,80],{"value":64,"source":48,"evidence":65},"ESP32-S3",[66,69],{"id":67,"by":11,"text":68},"45958166","ESPectre takes a different architectural approach that might address some of the challenges you encountered: 1. Instead of STA\u002FAP mode on a single ESP32, ESPectre uses the…",{"id":70,"by":11,"text":71},"45959711","The price difference can vary wildly by region, but €10 is still super cheap compared to a dedicated presence sensor! Regarding the chip recommendation, it’s a classic trade-off:…",{"value":73,"source":48,"evidence":74},"MQTT",[75],{"id":51},{"value":77,"source":48,"evidence":78},"Home Assistant",[79],{"id":51},{"value":81,"source":48,"evidence":82},"Butterworth, Wavelet, Hampel and SG filters",[83],{"id":84,"by":11,"text":85},"45959010","Interesting note, I actually disabled promiscuous mode after some testing because it made the CSI signal noisier and consumed more resources. I found that normal station mode…","open_source","launched","unknown",{"praise":90,"objections":107,"requests":121,"questions":129,"alternatives":147},[91],{"value":92,"source":93,"evidence":94},"Interesting, cheap open-source approach to presence sensing.","commenter",[95,99,103],{"id":96,"by":97,"text":98},"45957473","tetris11","Amazing stuff! Am I right in understanding that only a single ESP32 device is needed (plus a router)?",{"id":100,"by":101,"text":102},"45958046","Gys","Interesting! Are you familiar with tommysense.com? I think it doing something similar? Did not yet have time to try it.",{"id":104,"by":105,"text":106},"45959541","TGower","Using two ESP32-S3 modules you can get ~6000 packets per second with CSI data. I'm using this as a cheap replacement for specialty high-G gyroscope modules, but it could see use…",[108,114],{"value":109,"source":48,"evidence":110},"Single sensor likely insufficient for large areas like 100 m² apartments.",[111],{"id":112,"by":11,"text":113},"45958878","It really depends on the environment: wall materials, interference, signal strength, and even temperature and humidity all play a role. Honestly, 100 m² is probably too large for…",{"value":115,"source":93,"evidence":116},"Mesh routers may cause ESP32 to roam and monitor the wrong space.",[117],{"id":118,"by":119,"text":120},"45961786","acl","In terms of layout of rooms and useful monitoring, you have to be able to configure which node it attaches to, right? Because it's going to monitor the physical space between…",[122],{"value":123,"source":93,"evidence":124},"Ability to ignore pets such as cats.",[125],{"id":126,"by":127,"text":128},"45960296","sgc","I see you have done a fair amount of work to document calibration for various scenarios. Have you tried to calibrate to ignore cats? Can you prioritize different algorithms to…",[130,141],{"value":131,"source":93,"evidence":132},"Whether one sensor covers multiple rooms or a whole apartment.",[133,137],{"id":134,"by":135,"text":136},"45957643","pmontra","Probably one per room because all the examples at https:\u002F\u002Fgithub.com\u002Ffrancescopace\u002Fespectre\u002Fblob\u002Fmain\u002FCALIBRATION.md are about a single room. Is the author reads this, how does…",{"id":138,"by":139,"text":140},"45958727","yoavm","How about if I want to monitor the apartment as a whole? Would 100m2 be too much for one sensor to handle?",{"value":142,"source":93,"evidence":143},"Whether it works with mesh routers.",[144],{"id":145,"by":119,"text":146},"45958475","Would this work with a mesh router?",[148,152],{"value":149,"source":93,"evidence":150},"Tommysense",[151],{"id":100,"by":101,"text":102},{"value":153,"source":93,"evidence":154},"Bermuda BLE trilateration",[155],{"id":156,"by":157,"text":158},"45959953","vsviridov","It's neat that Tommysense works on top of esphome... I'm currently using Bermuda BLE trilateration, but it doesn't quite work, especially in a multy-story living space (e.g. a…",{"comments":35,"answered":18,"key":160},[161,162,163],{"id":57,"text":58},{"id":60,"text":61},{"id":164,"text":165},"45963523","That's a great thought. The challenge is that Wi-Fi sensing (CSI) is measuring multipath changes across a few meters, not direct motion in a small volume like Leap Motion. I…",{"commenters":35,"max_depth":167,"maker_replies":35,"first_comment_mins":168,"lifespan_hours":169},7,309,42,[171,174,178,179,182,185,187,190,192,195,198,200,204,207,209,211,212,214,216,220,222,224,225,227,228,229,232,234,237,239,241,243,246,249,252,254,256,258,260,261,263,265,266,268,269,271,275,278,281,285],[57,34,34,172,11,173],"project\u002Fneutral\u002Fidea",1,[175,34,43,176,177,34],"45959427","project\u002Fpositive\u002Fidea","reconnecting",[60,34,34,172,11,173],[180,34,34,181,177,34],"45966834","commenter\u002Fneutral\u002Fidea",[183,34,32,172,184,34],"45960041","cweagans",[164,34,34,186,11,173],"project\u002Fneutral\u002Fperformance",[188,34,32,186,189,34],"45960506","quinnjh",[191,34,34,186,11,173],"45963770",[193,34,34,194,189,34],"45971178","commenter\u002Fneutral\u002Fnone",[196,34,43,176,197,34],"45963262","4gotunameagain",[199,34,34,172,11,173],"45963538",[201,34,32,202,203,34],"45977361","project\u002Fneutral\u002Fdocs","James-Bennet",[205,173,32,172,206,34],"45957860","roger_",[67,173,34,208,11,173],"project\u002Fneutral\u002Fexecution",[210,173,32,208,206,34],"45958860",[84,173,34,208,11,173],[213,173,32,172,206,34],"45959765",[215,173,34,172,11,173],"45959895",[217,218,34,181,219,34],"45959487",2,"jstanley",[221,218,34,194,11,173],"45959667",[96,32,32,223,97,34],"project\u002Fneutral\u002Fnone",[134,32,32,223,135,34],[226,32,34,223,11,173],"45958341",[138,32,32,186,139,34],[112,32,34,186,11,173],[230,32,32,231,139,34],"45959227","project\u002Fneutral\u002Fpricing",[70,32,34,233,11,173],"project\u002Fneutral\u002Fdesign",[235,32,32,186,236,34],"45971509","venusenvy47",[100,238,32,172,101,34],4,[240,238,34,172,11,173],"45958219",[156,238,34,242,157,34],"other\u002Fneutral\u002Fnone",[244,238,34,242,245,34],"45962173","mike2872",[247,238,34,248,11,173],"45963050","maker\u002Fpositive\u002Fnone",[250,43,32,172,251,34],"45960385","sert_121",[253,43,34,194,11,173],"45963442",[126,255,32,172,127,34],6,[257,255,34,186,11,173],"45963432",[259,255,43,176,127,34],"45966473",[104,167,32,186,105,34],[262,167,34,208,11,173],"45959800",[264,167,32,208,105,34],"45961383",[145,18,32,186,119,34],[267,18,34,186,11,173],"45958676",[118,18,32,208,119,34],[270,18,34,208,11,173],"45964079",[272,273,34,242,274,34],"45959887",9,"culi",[276,273,34,277,11,173],"45959978","project\u002Fneutral\u002Fprivacy",[279,273,34,280,274,34],"45961375","other\u002Fneutral\u002Fprivacy",[282,283,34,242,284,34],"45959517",10,"raggi",[286,283,34,242,11,173],"45959778",[],[289,293,298,303,308,313],{"id":290,"name":291,"points":292,"category":20},"45974012","downdetectorsdowndetector",591,{"id":294,"name":295,"points":296,"category":297},"45931331","searchepsteinfiles.com",329,"data",{"id":299,"name":300,"points":301,"category":302},"45984461","F32",302,"hardware",{"id":304,"name":305,"points":306,"category":307},"45967079","trisolarchaos.com",249,"learning_science",{"id":309,"name":310,"points":311,"category":312},"45958988","Astral",236,"dev_tools",{"id":314,"name":315,"points":316,"category":312},"45938517","Continuous Claude",170,false,"v2",{"id":320,"name":5,"line":6,"ai":317,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":321,"top":18,"kw":322,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":323,"url":9,"mix":324,"praise":92,"objection":109,"sub":21},45953977,0.09,[24,25,26,27,28],"0503030503330300330330330003305333030000",[32,33,34,34],1794036685868]