breathing, sensed without a camera.
Saans (साँस, “breath”) turns the WiFi signal already crossing a room into presence, breathing and safety signals. No camera, no wearable, no microphone. The raw radio never leaves the sensor.
ESP32-S3 sensors · Rust gateway · Python reference
Open source (MIT) · pre-hardware: every number here is synthetic
The whole message a sensor sends, twice a second. Raw radio stays on the node.
BPM mean breathing error across 64 synthetic scenarios, 64 of 64 within 0.5 BPM.
Rust feature frames byte-identical to the Python reference.
Price of one ESP32-S3 board. A room needs two.
The breathing error and the parity count above come from simulation. No board has been measured in a real room yet.
the problem
Cameras see too much. Motion sensors see too little. A quiet room full of readers looks empty to a PIR, and a camera in a hostel corridor is a liability.
cameras, PIR and wearables
- Cameras capture faces, bodies and identity, all personal data under the DPDP Act from the first frame.
- PIR needs movement. Someone reading or sleeping disappears.
- Wearables need a willing person who remembers to charge and wear them.
- Cameras need light, or IR, and a place where filming is acceptable.
Either they record you, or they guess.
saans
- Radio amplitude and phase only. There is no image or audio anywhere in the system.
- The breathing band picks up the still reader a PIR misses.
- Nothing to wear, carry or charge. Nobody has to cooperate.
- Works in the dark, because radio does not need light.
It measures a space, says how sure it is, and stays quiet when it can't tell.
Radio has limits too. It cannot tell who anyone is, a single link can go blind at the wrong spot, and none of this has been measured in a real room yet. Each of those limits is covered below.
keep reading