179 lines
8.7 KiB
Markdown
179 lines
8.7 KiB
Markdown
# HA Dashboard Redesign — Brainstorming & Design
|
||
|
||
Session: 2026-07-10. User requested a complete dashboard redesign, mobile-first, with Mushroom Cards + Bubble Card navigation.
|
||
|
||
## Brainstorming Process
|
||
|
||
Used the `brainstorming` skill. Key decisions via clarifying questions:
|
||
|
||
1. **Goal**: Komplett-Redesign — alles neu, sauber strukturiert
|
||
2. **Primary device**: Handy (mobile-first, desktop is secondary)
|
||
3. **Top functions**: Energie (PV/Speicher/Marstek/Strompreis), Rollos, Licht
|
||
4. **Structure**: Ein Hauptdashboard + Energie separat (as before)
|
||
5. **Card approach**: Mix aus Mushroom + Bubble Navigation
|
||
|
||
## Entity Inventory (via browser console)
|
||
|
||
| Domain | Count | Key entities |
|
||
|--------|-------|-------------|
|
||
| light | 20 | Schlafzimmer, Esszimmer, Bad, Tradfri×7, Kinderzimmer×2, Garten×2, Deckenleuchte |
|
||
| cover | 10 | Wohnzimmerfenster×2, Wohnzimmertür, Esszimmertür, Küchenfenster×2, Badrollo, Terrassenrollo, Markise |
|
||
| climate | 12 | ViCare heating + 11 room thermostats (Bad, Büro, Esszimmer, FBH-WC, Flur unten, Gang OG, Wohnzimmer, Kinderzimmer Cleo, Schlafzimmer, Schminkzimmer, Windfang) |
|
||
| camera | 10 | Terrasse, Einfahrt, 6× robot vacuum maps, thumbnail |
|
||
| scene | 9 | Alles aus×2, Fernsehabend, Heizungen an/aus, Raffstore am Tag |
|
||
| lock | 5 | Haustür + others |
|
||
| media_player | 10 | Wohnzimmer, Harmony Hub + others |
|
||
| automation | 35 | Including Marstek Kaskaden-Steuerung |
|
||
| switch | 196 | Much chaff among them |
|
||
| sensor | 1128 | Heavily overloaded |
|
||
|
||
## Existing Dashboard State (pre-redesign)
|
||
|
||
| Dashboard | URL Path | Views | Cards (main) | Status |
|
||
|-----------|----------|-------|--------------|--------|
|
||
| Übersicht (default) | `lovelace` | 3 | 43+1+1 | ⚠️ Overloaded — cameras, blinds, 11 thermostats, media, energy, lights, sensors, scenes, weather, door contacts all on one view |
|
||
| Stromerzeugung/-verbrauch | `stromerzeugung-verbrauch` | 5 | 30 | 3 of 5 views empty (PV Erzeugung, Stromverbrauch, Kindle) |
|
||
| IT | `dashboard-it` | 1 | 16 | OK |
|
||
| Karte | `map` | 1 | 1 | Minimal |
|
||
| Editor | `dashboard-editor` | 1 | 1 | Tool (config-editor-card) |
|
||
| Übersicht (test) | `dashboard-test` | 1 | 0 | Empty — delete candidate |
|
||
| Haus | `dashboard-haus` | 0 | 0 | Empty — repurpose as new main dashboard |
|
||
| Typen | `dashboard-typen` | 0 | 0 | Empty — delete candidate |
|
||
| Home_Auto | `home-auto` | 0 | 0 | Empty — delete candidate |
|
||
| Moonraker | `dashboard-moonraker` | 0 | 0 | Empty — delete candidate |
|
||
|
||
## Installed Custom Cards (via HACS)
|
||
|
||
Already installed:
|
||
- `custom:power-flow-card-plus` — power distribution visualization
|
||
- `custom:price-timeline-card` — electricity price timeline
|
||
- `custom:config-editor-card` — dashboard editor
|
||
|
||
Needed for redesign:
|
||
- `mushroom-cards` — compact, touch-friendly UI elements (HACS)
|
||
- `bubble-card` — bottom-bar navigation, swipe between views (HACS)
|
||
|
||
## Approved Design
|
||
|
||
### Dashboard 1: "Haus" (Main Dashboard, mobile-first)
|
||
|
||
**Navigation:** Bubble Card Bottom-Bar with 5 tabs
|
||
|
||
```
|
||
🏠 Home | ☀️ Rollos | 💡 Licht | 🔒 Sicherheit | 🌡️ Klima
|
||
```
|
||
|
||
**Tab 1 — Home (Minimal):**
|
||
- Mushroom Title Card "Schön Home"
|
||
- Mushroom Template Card: Weather + outside temp
|
||
- Power-Flow-Card-Plus (mini energy flow: PV ↔ Battery ↔ House ↔ Grid)
|
||
- 2× Mushroom Entity Card: Presence (Dominik, Sarah)
|
||
- 1× Mushroom Chips Card: Door open/closed, Marstek SoC, electricity price — quick-info badges
|
||
|
||
**Tab 2 — Rollos (10 covers, grouped by floor):**
|
||
- Mushroom Cover Card per cover (large touch buttons: up/stop/down)
|
||
- Ground floor: Wohnzimmer×2, Esszimmer, Küche×2, Terrasse, Markise
|
||
- Upper floor: Bad, Schlafzimmer
|
||
- Master "Alle Rollos" card at top
|
||
|
||
**Tab 3 — Licht (20 lights + 9 scenes):**
|
||
- Mushroom Light Card per room (group where possible)
|
||
- Scenes as Mushroom Action Buttons at bottom: "Alles aus", "Fernsehabend", "Raffstore am Tag"
|
||
|
||
**Tab 4 — Sicherheit:**
|
||
- 2 Camera Cards (Terrasse, Einfahrt) — Picture Glance, compact
|
||
- Binary sensors: door/window contacts as Mushroom Entity Cards
|
||
- Lock: front door as Mushroom Lock Card
|
||
|
||
**Tab 5 — Klima (12 thermostats):**
|
||
- Mushroom Climate Card per room
|
||
- ViCare Heating + hot water at top
|
||
- Outside temperature chip
|
||
|
||
### Dashboard 2: "Energie" (existing, upgraded)
|
||
|
||
Remains separate. Fill the 3 empty views:
|
||
- **PV Erzeugung:** Apexcharts (daily/weekly curves SMA)
|
||
- **Stromverbrauch:** Apexcharts (consumer breakdown: heat pump, household, wallbox)
|
||
- **Kindle:** Black/white E-Ink optimized dashboard
|
||
|
||
### Cleanup
|
||
|
||
| Dashboard | Action |
|
||
|-----------|--------|
|
||
| dashboard-test (empty) | Delete |
|
||
| Haus (empty) | Repurpose → new main dashboard |
|
||
| Typen (empty) | Delete |
|
||
| Home_Auto (empty) | Delete |
|
||
| Moonraker (empty) | Delete |
|
||
| Editor | Keep (tool) |
|
||
| IT | Keep |
|
||
| Karte | Keep |
|
||
| Übersicht (lovelace, 43 cards) | Keep as backup after migration, then delete |
|
||
|
||
## Implementation Notes
|
||
|
||
- All dashboards use `mode: 'storage'` (UI-managed, not YAML files)
|
||
- Dashboard config write-back via WebSocket: `conn.sendMessagePromise({type: 'lovelace/config/save', url_path: '...', config: cfg})`
|
||
- Custom cards must be installed via HACS before referencing them in dashboard config
|
||
- Bubble Card bottom navigation requires a `bubble-card` config at the view level
|
||
|
||
## HACS Installation via WebSocket (confirmed working 2026-07-10)
|
||
|
||
HACS custom cards can be installed programmatically via the WebSocket API — no need to fight the HACS UI iframe:
|
||
|
||
```javascript
|
||
// 1. Find repository ID
|
||
const repos = await conn.sendMessagePromise({type: 'hacs/repositories/list'});
|
||
const mushroom = repos.find(r => r.full_name === 'piitaya/lovelace-mushroom');
|
||
// mushroom.id = '444350375'
|
||
|
||
// 2. Install
|
||
await conn.sendMessagePromise({type: 'hacs/repository/download', repository: mushroom.id});
|
||
// Returns {} on success
|
||
|
||
// 3. Verify resource registration
|
||
const resources = await conn.sendMessagePromise({type: 'lovelace/resources'});
|
||
// Look for /hacsfiles/lovelace-mushroom/mushroom.js in resources
|
||
```
|
||
|
||
Installed: Mushroom v5.1.1 (repo ID 444350375), Bubble Card v3.2.4 (repo ID 680112919).
|
||
|
||
## Entity Verification Pitfalls (encountered during implementation)
|
||
|
||
- **Scene name mismatch:** `scene.alles_aus` does NOT exist — the correct entity is `scene.alles_aus_2`. Always query `ha.hass.states` for scene entities before referencing.
|
||
- **Binary sensors lacking `device_class`:** Door/window binary sensors in this homelab do NOT have `device_class: door` or `device_class: window`. Filtering by `device_class` returns zero results. Instead, filter by entity name keywords: `tur`, `fenster`, `door`, `window`.
|
||
- **Available binary sensors (as of 2026-07-10):** `binary_sensor.wohnzimmerfenster2`, `binary_sensor.wohnzimmerture`, `binary_sensor.esszimmerture`, `binary_sensor.esszimmerture_2` — only 4, not the full set shown in the old overview dashboard.
|
||
- **Locks:** 5 lock entities exist: `lock.voreingestellte_tur` (main door), `lock.turoffner_1`, `lock.free_hometouch_7`, `lock.free_hometouch_7_2`, `lock.free_hometouch_7_3`.
|
||
|
||
## Post-Implementation Dashboard State (2026-07-10)
|
||
|
||
| Dashboard | URL Path | Views | Cards/view | Status |
|
||
|-----------|----------|-------|------------|--------|
|
||
| Haus (NEW) | `dashboard-haus` | 5 | 6/3/5/4/5 | ✅ Mushroom + Bubble, mobile-first |
|
||
| Stromerzeugung/-verbrauch | `stromerzeugung-verbrauch` | 5 | 30/1/4/4/1 | ✅ All views filled |
|
||
| Übersicht (backup) | `lovelace` | 3 | 43/1/1 | Kept as backup |
|
||
| IT | `dashboard-it` | 1 | 16 | Unchanged |
|
||
| Karte | `map` | 1 | 1 | Unchanged |
|
||
| Editor | `dashboard-editor` | 1 | 1 | Unchanged |
|
||
|
||
Deleted: dashboard-test, Typen, Home_Auto, Moonraker (4 empty ghost dashboards).
|
||
|
||
## Haus Dashboard View Structure (final)
|
||
|
||
| View | Path | Cards | Content |
|
||
|------|------|-------|---------|
|
||
| Home | `home` | 6 | Bubble popup, weather template, power-flow-card-plus, presence grid, chips (door/Marstek/SMA), bubble nav |
|
||
| Rollos | `rollos` | 3 | Bubble popup, 9 mushroom cover cards in 2-col grid, bubble nav |
|
||
| Licht | `licht` | 5 | Bubble popup, scene chips (5 scenes), 8 room lights in 2-col grid, 9 tradfri/misc lights in 3-col grid, bubble nav |
|
||
| Sicherheit | `sicherheit` | 4 | Bubble popup, 2 camera picture-glance, 2 lock cards + 4 door/window sensors in 2-col grid, bubble nav |
|
||
| Klima | `klima` | 5 | Bubble popup, ViCare climate card, WW + outside temp grid, 11 room climate cards in 2-col grid, bubble nav |
|
||
|
||
## Energie Dashboard Filled Views
|
||
|
||
| View | Path | Cards | Content |
|
||
|------|------|-------|---------|
|
||
| PV Erzeugung | `pv-erzeugung` | 4 | 3 apexcharts (PV delivery, SoC, Solcast forecast vs actual), entity stats |
|
||
| Stromverbrauch | `stromverbrauch` | 4 | 3 apexcharts (house consumption, battery discharge, sauna power), consumer entity list |
|
||
| Kindle | `kindle` | 1 | Vertical stack of 6 mushroom template cards (PV, Haus, SMA SoC, Marstek SoC, Strompreis, PV Einsparung) — black icons for E-Ink |
|