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

An illustration drawn in this page from simulated values. It is not a recording and not the gateway's dashboard. Every view of a space is like this one: a state, a confidence, and the links behind it.
68 B

The whole message a sensor sends, twice a second. Raw radio stays on the node.

0.009

BPM mean breathing error across 64 synthetic scenarios, 64 of 64 within 0.5 BPM.

672/672

Rust feature frames byte-identical to the Python reference.

$6–10

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