The 3D Observatory needs an explicit POST to /api/v1/pose/external to
render a single coherent figure — without it the UI shows the placeholder
five-skeleton fallback that doesn't respond to real RSSI variance, which
manifests as a "frozen" figure even when the bridge is emitting frames
and the sensing-server is processing them. presence_to_pose.py is the
component that closes that loop (polls /aps, POSTs one pose at 10 Hz).
`make start` now manages all three children (server, bridge, presence
injector) under one trap, and `make stop` kills the trio. New `make
run-presence` target for running the injector standalone against an
already-running stack.
Co-authored-by: Cursor <cursoragent@cursor.com>
The server's --source=auto probes for ESP32 frames *before* the bridge
starts emitting and falls back to `simulate` if it sees none. Simulate
mode never binds UDP, so the bridge then gets ECONNREFUSED on every
send and the UI displays fake (simulated) motion instead of real RSSI
data. Pin --source esp32 explicitly — the bridge IS the ESP32 source.
Also call `make stop` at the top of `make start` so re-running doesn't
collide with a stale instance.
Co-authored-by: Cursor <cursoragent@cursor.com>
`make start` builds both binaries, launches the v2 sensing-server and the
bridge under a single process group, opens both UIs (sensing UI on :8080
and the tomography dashboard on :9090/dashboard), and tears both down
cleanly on Ctrl-C via a TRAP. Adds `make stop` for stray-process cleanup
and `make build-server` so the sensing-server build can be invoked
independently. README updated to point at the one-command flow.
Co-authored-by: Cursor <cursoragent@cursor.com>
Swift CoreWLAN helper + Rust UDP emitter that turns any Mac into a
"node 0" for RuView's sensing-server while waiting on ESP32 hardware.
Wraps multi-BSSID scans into ESP32 CSI frame format (magic 0xC511_0001)
with per-AP RSSI as pseudo-subcarrier amplitude and rolling variance
as the Q channel — pipeline runs unmodified.
Standalone Cargo project (not a v2 workspace member, so the main build
is unaffected). Handles macOS 14.4+ BSSID redaction by synthesizing
stable per-AP identifiers from (channel, RSSI bucket, ordinal).
Co-authored-by: Cursor <cursoragent@cursor.com>