ESP32-S3 CSI Firmware v0.5.4 — Cognitum Seed Integration
TL;DR
Your ESP32 can now remember what it senses. By connecting to a Cognitum Seed every presence detection, breathing measurement, and motion event gets stored as a searchable vector with cryptographic proof it happened.
What Changed (v0.5.3 → v0.5.4)
| Feature | v0.5.3 | v0.5.4 |
|---|---|---|
| CSI sensing | ✅ Real-time only | ✅ Real-time + persistent storage |
| Data retention | ❌ Lost on reboot | ✅ RVF vector store on Cognitum Seed |
| Similarity search | ❌ None | ✅ kNN queries ("find states like this one") |
| Data integrity | ❌ None | ✅ SHA-256 witness chain + Ed25519 signing |
| AI integration | ❌ None | ✅ 114-tool MCP proxy (Claude, GPT can query sensors) |
| Environmental sensors | ❌ CSI only | ✅ + BME280, PIR, vibration, ADC (via Seed) |
| Feature vectors | ❌ Raw only | ✅ 8-dim normalized @ 1 Hz (new packet 0xC5110003) |
| Security | Basic | ✅ Bearer tokens, TLS, source filtering, NaN rejection |
New: 8-Dimension Feature Vector
Every second, the ESP32 sends a compact 48-byte packet summarizing what it sees:
| Dim | What it measures | Example |
|---|---|---|
| 0 | Is someone there? (presence) | 0.45 = maybe, 0.95 = definitely |
| 1 | Are they moving? (motion) | 0.0 = still, 0.87 = active |
| 2 | Breathing rate | 0.69 = 20.8 BPM (normal) |
| 3 | Heart rate | 0.75 = 90 BPM (normal) |
| 4 | Signal quality (phase variance) | Higher = more activity |
| 5 | How many people? | 0.25 = 1 person, 0.50 = 2 |
| 6 | Fall detected? | 0.0 = no, 1.0 = yes |
| 7 | Signal strength (RSSI) | 0.54 = -46 dBm (good) |
These vectors are stored on the Cognitum Seed and can be searched: "Find the 10 most similar states to right now" — useful for anomaly detection, pattern recognition, and environment fingerprinting.
Architecture
ESP32-S3 ($9) ──UDP──> Your laptop ──HTTPS──> Cognitum Seed ($15)
WiFi CSI capture Bridge script Stores vectors forever
28 Hz raw frames Batches & validates kNN similarity search
1 Hz feature vectors NaN rejection Witness chain (proof)
1 Hz vital signs Source filtering 114-tool AI proxy
How to Use
# 1. Flash firmware to ESP32-S3
python -m esptool --chip esp32s3 --port COM9 --baud 460800 \
write_flash --flash-mode dio --flash-size 8MB --flash-freq 80m \
0x0 bootloader.bin 0x8000 partition-table.bin \
0xf000 ota_data_initial.bin 0x20000 esp32-csi-node.bin
# 2. Set WiFi + target (your laptop IP)
python firmware/esp32-csi-node/provision.py --port COM9 \
--ssid "YourWiFi" --password "secret" \
--target-ip 192.168.1.20 --target-port 5006
# 3. Pair with Cognitum Seed (plug in via USB first)
curl -sk -X POST https://169.254.42.1:8443/api/v1/pair/window
curl -sk -X POST https://169.254.42.1:8443/api/v1/pair \
-H 'Content-Type: application/json' -d '{"client_name":"my-laptop"}'
# 4. Run the bridge
export SEED_TOKEN="<token-from-step-3>"
python scripts/seed_csi_bridge.py \
--seed-url https://169.254.42.1:8443 --token "$SEED_TOKEN" --validate
# 5. Check what's stored
python scripts/seed_csi_bridge.py --token "$SEED_TOKEN" --statsNo Cognitum Seed? The ESP32 firmware works exactly as before — all existing features (CSI streaming, vitals, presence, fall detection, mesh TDM) are unchanged. The Seed integration is additive.
Learn more: Cognitum.one · ADR-069 · User Guide
Validation Results
| Test | Result |
|---|---|
| Rust workspace | 1,463 passed, 0 failed |
| Python proof | VERDICT: PASS |
| Firmware size | 844 KB (55% flash free) |
| Feature vectors | 1 Hz, 8-dim, all in [0.0, 1.0] |
| Vitals ↔ Features | HR delta=0.0, BR delta=0.0 |
| Seed ingest | 941 vectors, 100% kNN match |
| Witness chain | SHA-256 verified (1,325 entries) |
| Regression | 6/6 PASSED — NO REGRESSIONS |
Binary Hashes (SHA-256)
cf05de2b esp32-csi-node.bin (844 KB)
cbb8e3ba bootloader.bin (19 KB)
4c2cc4ff partition-table.bin (3 KB)
7d2c7ac4 ota_data_initial.bin (8 KB)
Full Changelog: v0.5.3-esp32...v0.5.4-esp32