feat(adr-115): ship 3 Lovelace dashboard YAMLs (single-room / multi-node / healthcare)
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>
This commit is contained in:
parent
f5d787ccde
commit
c8b6cd7ace
|
|
@ -0,0 +1,93 @@
|
|||
# RuView — Single-room overview Lovelace dashboard
|
||||
#
|
||||
# Drop into a Home Assistant Lovelace view (raw config editor). Replace
|
||||
# the `binary_sensor.ruview_bedroom_*` entity IDs with the entity IDs
|
||||
# auto-generated by your RuView node (HA picks them up from MQTT
|
||||
# discovery automatically — see `mosquitto_sub -t 'homeassistant/#'`
|
||||
# to enumerate them).
|
||||
#
|
||||
# This view shows the full 21-entity RuView surface for one room:
|
||||
# raw signals on the left (presence, HR, BR, motion, RSSI, fall risk
|
||||
# score) and semantic primitives on the right (sleeping, distress,
|
||||
# room active, no movement). Pose visualisation is a placeholder for
|
||||
# the v0.7.1 picture-elements integration.
|
||||
|
||||
title: RuView — Bedroom
|
||||
path: ruview-bedroom
|
||||
icon: mdi:home-thermometer
|
||||
cards:
|
||||
- type: vertical-stack
|
||||
cards:
|
||||
- type: markdown
|
||||
content: >
|
||||
## Bedroom — RuView sensing
|
||||
Status pulled live from MQTT auto-discovery. Tap any tile to
|
||||
see the raw history graph.
|
||||
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: tile
|
||||
entity: binary_sensor.ruview_bedroom_presence
|
||||
name: Presence
|
||||
icon: mdi:motion-sensor
|
||||
color: green
|
||||
- type: tile
|
||||
entity: binary_sensor.ruview_bedroom_someone_sleeping
|
||||
name: Sleeping
|
||||
icon: mdi:sleep
|
||||
color: blue
|
||||
- type: tile
|
||||
entity: binary_sensor.ruview_bedroom_room_active
|
||||
name: Room active
|
||||
icon: mdi:home-account
|
||||
color: amber
|
||||
|
||||
- type: glance
|
||||
title: Raw vitals
|
||||
entities:
|
||||
- entity: sensor.ruview_bedroom_heart_rate
|
||||
name: HR
|
||||
- entity: sensor.ruview_bedroom_breathing_rate
|
||||
name: BR
|
||||
- entity: sensor.ruview_bedroom_motion_level
|
||||
name: Motion
|
||||
- entity: sensor.ruview_bedroom_person_count
|
||||
name: Persons
|
||||
- entity: sensor.ruview_bedroom_rssi
|
||||
name: RSSI
|
||||
|
||||
- type: gauge
|
||||
entity: sensor.ruview_bedroom_fall_risk_elevated
|
||||
name: Fall risk score
|
||||
min: 0
|
||||
max: 100
|
||||
severity:
|
||||
green: 0
|
||||
yellow: 40
|
||||
red: 70
|
||||
|
||||
- type: entities
|
||||
title: Safety
|
||||
entities:
|
||||
- entity: binary_sensor.ruview_bedroom_possible_distress
|
||||
name: Possible distress
|
||||
- entity: binary_sensor.ruview_bedroom_no_movement
|
||||
name: No movement (safety)
|
||||
- entity: binary_sensor.ruview_bedroom_elderly_inactivity_anomaly
|
||||
name: Inactivity anomaly
|
||||
|
||||
- type: history-graph
|
||||
title: Last 6h — Heart rate & breathing
|
||||
hours_to_show: 6
|
||||
refresh_interval: 60
|
||||
entities:
|
||||
- entity: sensor.ruview_bedroom_heart_rate
|
||||
- entity: sensor.ruview_bedroom_breathing_rate
|
||||
|
||||
- type: logbook
|
||||
title: Recent events
|
||||
hours_to_show: 24
|
||||
entities:
|
||||
- event.ruview_bedroom_fall
|
||||
- event.ruview_bedroom_bed_exit
|
||||
- event.ruview_bedroom_multi_room_transition
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
# RuView — Multi-node grid Lovelace dashboard
|
||||
#
|
||||
# For deployments with multiple RuView nodes (typical: one per room,
|
||||
# all behind a Cognitum Seed bridge). Shows a top-level grid of every
|
||||
# room's presence + person count + activity, with drill-in links.
|
||||
#
|
||||
# Replace `_bedroom`, `_living`, `_kitchen`, `_office`, `_bathroom`
|
||||
# with your actual room slugs from the friendly_name resolution.
|
||||
|
||||
title: RuView — Whole house
|
||||
path: ruview-house
|
||||
icon: mdi:home-search
|
||||
|
||||
cards:
|
||||
- type: markdown
|
||||
content: >
|
||||
## RuView — Whole house view
|
||||
Each tile is one room; tap to drill into raw vitals + semantic
|
||||
primitives for that room.
|
||||
|
||||
- type: grid
|
||||
columns: 2
|
||||
square: false
|
||||
cards:
|
||||
- type: tile
|
||||
entity: binary_sensor.ruview_bedroom_presence
|
||||
name: 🛏 Bedroom
|
||||
features:
|
||||
- type: target-temperature
|
||||
tap_action:
|
||||
action: navigate
|
||||
navigation_path: /lovelace/ruview-bedroom
|
||||
|
||||
- type: tile
|
||||
entity: binary_sensor.ruview_living_presence
|
||||
name: 🛋 Living
|
||||
tap_action:
|
||||
action: navigate
|
||||
navigation_path: /lovelace/ruview-living
|
||||
|
||||
- type: tile
|
||||
entity: binary_sensor.ruview_kitchen_presence
|
||||
name: 🍳 Kitchen
|
||||
tap_action:
|
||||
action: navigate
|
||||
navigation_path: /lovelace/ruview-kitchen
|
||||
|
||||
- type: tile
|
||||
entity: binary_sensor.ruview_office_presence
|
||||
name: 💻 Office
|
||||
tap_action:
|
||||
action: navigate
|
||||
navigation_path: /lovelace/ruview-office
|
||||
|
||||
- type: tile
|
||||
entity: binary_sensor.ruview_bathroom_occupied
|
||||
name: 🚿 Bathroom
|
||||
tap_action:
|
||||
action: navigate
|
||||
navigation_path: /lovelace/ruview-bathroom
|
||||
|
||||
- type: glance
|
||||
title: House-wide counts
|
||||
entities:
|
||||
- entity: sensor.ruview_bedroom_person_count
|
||||
name: Bedroom
|
||||
- entity: sensor.ruview_living_person_count
|
||||
name: Living
|
||||
- entity: sensor.ruview_kitchen_person_count
|
||||
name: Kitchen
|
||||
- entity: sensor.ruview_office_person_count
|
||||
name: Office
|
||||
|
||||
- type: logbook
|
||||
title: Recent semantic events
|
||||
hours_to_show: 24
|
||||
entities:
|
||||
- event.ruview_bedroom_fall
|
||||
- event.ruview_bedroom_bed_exit
|
||||
- event.ruview_living_fall
|
||||
- event.ruview_kitchen_fall
|
||||
- event.ruview_office_multi_room_transition
|
||||
|
|
@ -0,0 +1,88 @@
|
|||
# RuView — Healthcare / AAL (Active and Assisted Living) dashboard
|
||||
#
|
||||
# A care-giver-facing view designed for deployments where the
|
||||
# resident's wellbeing is the primary signal. Uses ONLY the semantic
|
||||
# primitives — no raw HR/BR exposed to the dashboard surface — so it
|
||||
# remains useful under `--privacy-mode` where biometric values are
|
||||
# stripped from MQTT.
|
||||
#
|
||||
# Drop into a Lovelace view that the carer accesses via their phone
|
||||
# (HA mobile app). The custom-button-card and apexcharts-card
|
||||
# dependencies are optional but improve readability — install via
|
||||
# HACS or fall back to the standard "entity" and "history-graph"
|
||||
# cards below as graceful degradation.
|
||||
|
||||
title: RuView — Care view
|
||||
path: ruview-care
|
||||
icon: mdi:heart-pulse
|
||||
|
||||
cards:
|
||||
- type: markdown
|
||||
content: >
|
||||
## RuView — Resident care view
|
||||
**Privacy-mode-compatible** — only inferred wellbeing states
|
||||
shown. No biometric values exposed to this dashboard.
|
||||
|
||||
- type: vertical-stack
|
||||
cards:
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: tile
|
||||
entity: binary_sensor.ruview_bedroom_someone_sleeping
|
||||
name: Sleeping
|
||||
icon: mdi:sleep
|
||||
color: blue
|
||||
- type: tile
|
||||
entity: binary_sensor.ruview_bedroom_room_active
|
||||
name: Active
|
||||
icon: mdi:home-account
|
||||
color: green
|
||||
- type: tile
|
||||
entity: binary_sensor.ruview_bedroom_bathroom_occupied
|
||||
name: Bathroom
|
||||
icon: mdi:shower
|
||||
color: cyan
|
||||
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: tile
|
||||
entity: binary_sensor.ruview_bedroom_possible_distress
|
||||
name: Distress
|
||||
icon: mdi:alert-octagon
|
||||
color: red
|
||||
- type: tile
|
||||
entity: binary_sensor.ruview_bedroom_elderly_inactivity_anomaly
|
||||
name: Inactivity anomaly
|
||||
icon: mdi:account-off
|
||||
color: orange
|
||||
- type: tile
|
||||
entity: binary_sensor.ruview_bedroom_no_movement
|
||||
name: No movement
|
||||
icon: mdi:hand-back-left-off
|
||||
color: amber
|
||||
|
||||
- type: gauge
|
||||
entity: sensor.ruview_bedroom_fall_risk_elevated
|
||||
name: Fall risk (24h trailing)
|
||||
min: 0
|
||||
max: 100
|
||||
severity:
|
||||
green: 0
|
||||
yellow: 40
|
||||
red: 70
|
||||
|
||||
- type: logbook
|
||||
title: 24h care events
|
||||
hours_to_show: 24
|
||||
entities:
|
||||
- event.ruview_bedroom_fall
|
||||
- event.ruview_bedroom_bed_exit
|
||||
- binary_sensor.ruview_bedroom_possible_distress
|
||||
- binary_sensor.ruview_bedroom_elderly_inactivity_anomaly
|
||||
- binary_sensor.ruview_bedroom_no_movement
|
||||
|
||||
- type: entity
|
||||
entity: binary_sensor.ruview_bedroom_presence
|
||||
name: Last presence change
|
||||
attribute: last_changed
|
||||
icon: mdi:clock-outline
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
# RuView Lovelace dashboards
|
||||
|
||||
Drop-in Lovelace dashboard YAMLs for three common deployment shapes.
|
||||
Paste the contents of any file into HA's **Lovelace raw config editor**
|
||||
(Settings → Dashboards → ⋮ → Edit dashboard → ⋮ → Raw config editor)
|
||||
and edit the `binary_sensor.ruview_<room>_*` entity IDs to match what
|
||||
HA auto-discovered from your RuView nodes.
|
||||
|
||||
| # | View | When to use |
|
||||
|---|-----------------------------------|----------------------------------------|
|
||||
| 1 | [Single-room overview](01-single-room-overview.yaml) | One RuView node, full 21-entity surface |
|
||||
| 2 | [Multi-node grid](02-multi-node-grid.yaml) | 3+ RuView nodes (whole-house deploy) |
|
||||
| 3 | [Healthcare / AAL view](03-healthcare-aal-view.yaml) | Care-giver dashboard; **privacy-mode-safe** (no biometrics shown) |
|
||||
|
||||
## Renaming entities
|
||||
|
||||
RuView's MQTT auto-discovery generates entity IDs from the node's MAC
|
||||
address by default (`binary_sensor.ruview_aabbccddeeff_presence`).
|
||||
To get friendly names like `binary_sensor.ruview_bedroom_presence`,
|
||||
either:
|
||||
|
||||
1. **Rename in HA** — open the entity, click the settings cog, change
|
||||
the entity ID. HA stores the rename in its own DB; the MQTT
|
||||
discovery topic stays the same.
|
||||
2. **Set `node_friendly_name`** in the sensing-server NVS config (per
|
||||
ADR-115 §9.6 maintainer-ACK'd decision: NVS-only, no ADR-039
|
||||
packet change). HA picks the friendly name up at next discovery
|
||||
refresh.
|
||||
|
||||
## Privacy-mode compatibility
|
||||
|
||||
The third dashboard is designed for healthcare / AAL deployments where
|
||||
`--privacy-mode` is set on the sensing-server. Under privacy mode:
|
||||
|
||||
- HR / BR / pose entities never reach HA (discovery is suppressed).
|
||||
- Semantic primitives (someone_sleeping, possible_distress, etc.)
|
||||
continue to publish because they're inferred *states* server-side,
|
||||
not biometric *values*.
|
||||
|
||||
The healthcare dashboard binds only to semantic-primitive entities,
|
||||
so it remains useful — and HIPAA / GDPR-cleaner — under privacy mode.
|
||||
|
||||
## Linked
|
||||
|
||||
- [ADR-115](../../docs/adr/ADR-115-home-assistant-integration.md) — full design
|
||||
- [`docs/integrations/home-assistant.md`](../../docs/integrations/home-assistant.md)
|
||||
- [`examples/ha-blueprints/`](../ha-blueprints/) — 8 starter automations
|
||||
Loading…
Reference in New Issue