v0.5.2-esp32

ruvnet/RuViewv0.5.2-esp32Mar 30, 2026by ruvnet

AI Summary

Fixes critical RSSI byte offset bugs on the server and implements Per-Node State tracking to resolve detection inconsistencies across multiple ESP32 nodes.

Key Highlights

  • Fixed RSSI byte offset reading (server-side correction)
  • Per-node state pipeline implementation (#249, ADR-068)
  • Supports 256 nodes with <13 MB memory overhead
  • Firmware CI upgraded to ESP-IDF v5.4

New Features

  • Per-node state tracking for classification and vitals
  • RSSI data correction (negative dBm values)
  • Firmware CI improvements (xxd to od)

Full Release Notes

## What's Changed

### Bug Fixes

**RSSI byte offset mismatch (#332)**
- Server was reading RSSI from byte 14 (sequence counter high byte) instead of byte 16 (actual RSSI)
- Root cause: firmware packs `n_subcarriers` as u16 and `freq_mhz` as u32, but server assumed u8 and u16
- Result: RSSI now shows correct negative dBm values (e.g., -46) instead of bogus positive values (+9)

**Per-node state pipeline (#249, ADR-068)**
- Each ESP32 node now gets independent classification, person count, and vital sign tracking
- Fixes the #1 user-reported issue: detection showing same output regardless of number of nodes/people
- Scales to 256 nodes with <13 MB memory overhead

**Firmware CI fixed (#327)**
- Upgraded from ESP-IDF v5.2 → v5.4, replaced `xxd` with `od`
- Pre-compiled binaries now built and uploaded automatically

### Sensing Server

Rebuild from source to get all fixes:
```bash
git pull origin main
cd rust-port/wifi-densepose-rs
cargo build --release -p wifi-densepose-sensing-server
```

### Firmware

No firmware binary changes from v0.5.1 — the RSSI fix and per-node state are server-side only. If you already flashed v0.5.1, no reflash needed.

**Full Changelog**: https://github.com/ruvnet/RuView/compare/v0.5.1-esp32...v0.5.2-esp32