πŸ“ˆ GH Trending Explorer 🎲 Surprise me

← all repos

andrisgauracs / wifi-sensing-kit

git clone https://github.com/andrisgauracs/wifi-sensing-kit.git

Teach three $10 ESP32-S3 boards to recognise what you're doing from WiFi alone, with your webcam as the teacher

β€”
stars, 24h
β€”
stars, 7 days
+182
stars, 30 days Β· #1,383
182
β˜… total
29
forks Β· 0 open issues

Star history starts 2026-10-20; the chart appears after the second daily snapshot.

LanguageHTML
LicenseMIT
Created2026-10-10 (10d ago)
Last push9d ago
Watchers0
OwnerUser

Links

README excerpt
# wifi-sensing-kit
Teach three $10 ESP32-S3 boards to recognise what you're doing β€” sitting, squatting, spinning,
walking, jumping, standing, or nobody home β€” from your WiFi alone. Your webcam is the teacher
while you train; then you cover it and the WiFi keeps going.
Built on RuView's open-source CSI firmware, with two changes:
each board lights up in its own colour, and the boards measure **each other** as well as the router,
so the room gets sensing links that cross it instead of all fanning out from the router.
## What to expect (measured, not marketing)
One person, one living room, three boards, one afternoon. Training: 3 rounds of 8 movements.
Test: a **separate** session recorded afterwards, judged by the camera:
| Movement | WiFi correct | | Movement | WiFi correct |
|---|---|---|---|---|
| Nobody home | 100% | | Standing | 84% |
| Jumping | 97% | | Squatting | 79% |
| Sitting | 93% | | Walking | 70% |
| Spinning | 92% | | Waving | 13% (mostly read as jumping) |
**79.5% overall across 8 movements β€” guessing gets 12.5%.** Router links alone: 76.3%; only the
*amount* of motion: 63.1%. Your numbers will differ; `python kit/evaluate.py` gives you yours.
What it **doesn't** do: draw a skeleton, track your exact position (it can tell roughly which part of
a room you're in), or carry over to another room, another person, or boards that have been moved β€”
you retrain. See docs/how-it-works.md for why.
## What you need
- **3 Γ— ESP32-S3** dev boards with β‰₯ 8 MB flash (e.g. ESP32-S3-DevKitC-1 N16R8), USB **data** cables,
 and USB chargers to power them in place
- a **2.4 GHz WiFi** network (the boards can't join 5 GHz)
- a computer on that network with a **webcam** (macOS or Linux; Windows works for the dashboards)
- **ESP-IDF** v5.4 or v5.5 to build the firmware β€” install guide
- about an hour, and enough energy for ~10 minutes of squats
## Setup
 [code] 
1. **WiFi password** β€” save it alone in a text file (default `~/.wifi-sensing-pass`), `chmod 600` it.
 Put your network name in `config.yaml`.
2. **Find your boards** β€” plug all three in over USB (the board's *native* USB socket if it has two)
 and run `.venv/bin/python firmware/discover.py`. Paste the printed `boards:` list into `config.yaml`.
3. **Build** β€” `.venv/bin/python firmware/build.py` (downloads RuView v0.8.8, applies the patch, builds).
4. **Flash** β€” `.venv/bin/python firmware/flash.py`. Each board is flashed, joins your WiFi, and lights
 up in its colour.
5. **Router address** β€” `.venv/bin/python firmware/discover.py --router`, put it in `config.yaml`
 as `router_bssid`, then `firmware/build.py` and `firmware/flash.py --app-only` once more.
6. **Place the boards** around the room at chest height on chargers; nothing metal in between.
7. **Run** β€” `.venv/bin/python kit/server.py` and open .
## The three dashboards
| Page | What it shows |
|---|---|
| **Signals** (`/`) | Live CSI heatmap per board, packet rates, the board's own presence/motion detection |
| **Room map** (`/room.html`) |