Drop-in Lovelace dashboard YAMLs covering the three common ADR-115 deployment shapes. Paste into HA's raw config editor, rename the `binary_sensor.ruview_<room>_*` entity IDs to match what HA auto-discovered, done. | File | Use case | |-------------------------------------|-----------------------------------| | 01-single-room-overview.yaml | One node, full 21-entity surface | | 02-multi-node-grid.yaml | 3+ nodes (whole-house) | | 03-healthcare-aal-view.yaml | Care-giver dashboard, --privacy-mode-safe | ## Single-room overview - Three top tiles: presence / sleeping / room active - Glance card with HR / BR / motion / persons / RSSI - Gauge for fall_risk_elevated with green<40<yellow<70<red - Safety entities card (distress / no_movement / inactivity anomaly) - 6h history graph of HR + BR - 24h logbook of fall / bed_exit / multi_room events ## Multi-node grid - Top markdown header - 2-column grid of per-room presence tiles with navigation actions drilling into per-room dashboards - Glance card showing per-room person counts - 24h logbook of semantic events across the house ## Healthcare / AAL - **Privacy-mode-compatible** — binds only to semantic primitives, no raw HR/BR/pose on the dashboard surface. Carer-app-friendly. - Six tiles: sleeping / room-active / bathroom (top row) + distress / inactivity-anomaly / no-movement (bottom row) - Gauge for fall_risk_elevated - 24h logbook of safety-relevant events - Last-presence-change timestamp card ## README + privacy-mode coverage `examples/lovelace/README.md` documents how to rename auto-discovered entity IDs (either via HA's entity-rename UI or via the NVS-only node_friendly_name field per ADR §9.6) and explains why dashboard 3 remains useful under --privacy-mode (inferred states still publish, biometric values don't). All three files validate as well-formed YAML with `title:` + `cards:` under PyYAML. Refs #776, PR #778. Co-Authored-By: claude-flow <ruv@ruv.net> |
||
|---|---|---|
| .. | ||
| environment | ||
| ha-blueprints | ||
| happiness-vector | ||
| lovelace | ||
| medical | ||
| research-sota | ||
| sleep | ||
| stress | ||
| three.js | ||
| README.md | ||
| ruview_live.py | ||
README.md
Examples
Real-time sensing applications built on the RuView platform.
Unified Dashboard (start here)
pip install pyserial numpy
python examples/ruview_live.py --csi COM7 --mmwave COM4
The live dashboard auto-detects available sensors and displays fused vitals, environment data, and events in real-time. Works with any combination of sensors.
Individual Examples
| Example | Sensors | What It Does |
|---|---|---|
| ruview_live.py | CSI + mmWave + Light | Unified dashboard: HR, BR, BP, stress, presence, light, RSSI |
| Medical: Blood Pressure | mmWave | Contactless BP estimation from HRV |
| Medical: Vitals Suite | mmWave | 10-in-1: HR, BR, BP, HRV, sleep stages, apnea, cough, snoring, activity, meditation |
| Sleep: Apnea Screener | mmWave | Detects breathing cessation events, computes AHI |
| Stress: HRV Monitor | mmWave | Real-time stress level from heart rate variability |
| Environment: Room Monitor | CSI + mmWave | Occupancy, light, RF fingerprint, activity events |
Hardware
| Port | Device | Cost | What It Provides |
|---|---|---|---|
| COM7 | ESP32-S3 (WiFi CSI) | ~$9 | Presence, motion, breathing, heart rate (through walls) |
| COM4 | ESP32-C6 + Seeed MR60BHA2 | ~$15 | Precise HR/BR, presence, distance, ambient light |
Either sensor works alone. Both together enable fusion (mmWave 80% + CSI 20%).
Quick Start
pip install pyserial numpy
# Unified dashboard (recommended)
python examples/ruview_live.py --csi COM7 --mmwave COM4
# Blood pressure estimation
python examples/medical/bp_estimator.py --port COM4
# Sleep apnea screening (run overnight)
python examples/sleep/apnea_screener.py --port COM4 --duration 28800
# Stress monitoring (workday session)
python examples/stress/hrv_stress_monitor.py --port COM4 --duration 3600
# Room environment monitor
python examples/environment/room_monitor.py --csi-port COM7 --mmwave-port COM4
# CSI only (no mmWave)
python examples/ruview_live.py --csi COM7 --mmwave none