Full review against live Prometheus/HA data, with surgical fixes (12 insertions / 11 deletions, no reformat). PR #273 (open3e repoint of Solar/Battery/SoC) was verified as correct and left untouched.
Before
Rendered 00:11 (Nacht: PV 0 W ist korrekt). Server 0 W und Garden 0 W sind tote Sensoren, Home 693 W ist massiv zu niedrig (Batterie entlädt allein 1,1 kW), die History-Legende zeigt jede Serie doppelt:
After
Server 287 W (Linie aus Keller), Wärmepumpe aus Keller statt EG, Home = 1,3 kW Bilanz, neuer grauer "Rest"-Knoten (380 W nicht submeterte Last), History dedupliziert mit Vorzeichen-Hinweisen:
Review report
Critical
Server-Knoten zeigte stumm 0 W — sensor.keller_server_power existiert nicht mehr (HA: unavailable; die powercalc-Gruppe "Keller Server" wurde mit der toten USV entfernt). Das || 0 im ECharts-Script verschluckte den Ausfall. ✅ FIXED — Query zeigt jetzt auf sensor.kg_vorratskeller_wave_pm_mini_server_steckdose_electric_consumption_w ("Server Steckdose", live 316,9 W zur Verifikationszeit).
Garden-Knoten zeigte stumm 0 W — sensor.eg_garten_teichpumpe_power_2 existiert nicht mehr (HA: unknown; das _2 war ein Twin-Entity-Rest). ✅ FIXED — sensor.shelly_teichpumpe_power_0 (live; nachts 0 W weil Pumpe aus, max_over_time[2d] = 77 W bestätigt den Sensor als aktiv).
Home unterschlug ~40 % der realen Last. Der Knoten summierte nur die vier powercalc-Etagen (702 W zur Renderzeit), die reale Bilanz war ~1109 W (Batterie 1117 W Entladung − 8 W Einspeisung, PV 0). Die Etagen-Gruppen decken nur submeterte Kreise ab — der Flow "balancierte" nie gegen die Quellen. ✅ FIXED — Home = PV + Netz + Batterie (alle vorzeichenbehaftet, = Bilanz am Zähler). Die Etagen bleiben als Aufschlüsselung; ein neuer grauer "Rest"-Knoten trägt die Differenz (Bilanz − Etagen − Garten), damit das Diagramm sichtbar aufgeht. Gleiches für die History-Serie "Home" (vorher sum() der Etagen, jetzt Bilanz-Ausdruck).
Major
History-Panel verdoppelte Serien. Im 6h-Fenster erschien jede Serie doppelt (Jobs home-assistant + home-assistant-bgp, Doppel-Scrape bis zum Fix am 16.07.) — und die alte "Home"-Serie war ein sum(), der in Alt-Fenstern echt verdoppelte (Legende zeigte Home mean 1,07 kW bei ~700 W Etagen-Summe). ✅ FIXED — alle Targets defensiv mit max by (entity) ummantelt; der Rest heilt sich mit der Retention selbst aus.
Wärmepumpen-Flusslinie startete am EG-Knoten, Garten-Linie am OG-Knoten — beides falsch.stromverbrauch_heizungsanlage ist Mitglied der Keller-Gruppe (Area "Heizungsanlage" → Floor Keller, per HA-Template verifiziert); die Teichpumpe hängt an Area "Garten" → Floor Außenbereich und ist in keiner Etagen-Summe. ✅ FIXED — Wärmepumpe und Server zweigen vom Keller-Knoten ab; Garten hängt direkt an Home.
Minor
Tote Sensoren rendern nie wieder stumm als 0:getVal liefert jetzt null bei fehlender Serie, die Consumer-Knoten (Server/Wärmepumpe/Garten) zeigen dann "n/a".
Grid-Query selektierte über friendly_name ("Smart Meter Sum active instantaneous power") — bricht bei Umbenennung. ✅ FIXED — Entity-Selektor sensor.smart_meter_sum_active_instantaneous_power (beide Panels).
Redundantes batteryIn-Target (… * -1) entfernt; Laden/Entladen wird aus dem einen vorzeichenbehafteten Sensor abgeleitet. Veraltete Script-Kommentare zu den ausgemusterten battery_power_in/out_absolute-Sensoren aktualisiert.
Legenden ohne Vorzeichen-Semantik: jetzt "Battery (+ Entladen / − Laden)", "Grid (+ Bezug / − Einspeisung)" (Farb-Overrides mitgezogen); beide Panels haben eine description mit den Konventionen.
⚠️ NOT FIXED — Quellseitiger Befund (gehört ins homeassistant-Repo, nicht hierher)
sensor.keller_power (powercalc-Gruppe) enthält sowohlsensor.kg_waschkuche_waschmaschine_power (Steckdosen-Messung) als auchsensor.waschmaschine_current_power (ha_washdata-Spiegel derselben Maschine) — und trotz Ausschluss-Filter auch sensor.kg_waschkuche_waschmaschine_device_power (aktuell unknown, zählt daher nicht). Während eines Waschgangs zählt die Keller-Summe die Waschmaschine doppelt (Dito vermutlich trockner_current_power). Beeinflusst hier nur die Etagen-Aufschlüsselung, nicht mehr den Home-Wert (der ist jetzt bilanzbasiert). Sag Bescheid, dann mache ich dafür einen PR im homeassistant-Repo.
❓ QUESTION
Der "Rest"-Knoten lag nachts bei ~380 W (Grundlast ohne Submetering: Netzwerk/Kühl-/Standby-Geräte außerhalb der gemessenen Kreise). Mittags am 16.07. lag die Bilanz bei ~5,6 kW gegen ~1,6 kW Etagen — falls es einen nicht submeterten Großverbraucher gibt (Wallbox?), wäre ein eigener Knoten sinnvoll. Gibt es einen?
Verification
Alle Queries vor dem Schreiben gegen das live Prometheus (Port-Forward, instant + range) bzw. die HA-API geprüft:
vitocharge_vx3_vx3_pv_power 0 W (00:15, Nacht — plausibel), …battery_power +1117 W (Entladen), …battery_soc vorhanden; Mittags-Gegenprobe 16.07. 12:00Z: PV 7252 W, Netz −1643 W → negativ = Einspeisung bestätigt (konsistent mit grid_power −23 W, open3e-Doku).
Bilanzprobe: PV 0 + Netz −8 + Batterie +1117 ≈ 1109 W reale Last vs. 702 W Etagen-Summe → Befund 3.
keller_server_power / eg_garten_teichpumpe_power_2: keine Prometheus-Serie, HA unavailable/unknown → tot bestätigt.
Ersatz-Sensoren live verifiziert (Server-Steckdose 316,9 W; Teichpumpe max 77 W in 2d).
Etagen-Zuordnung per HA-Template: Area Heizungsanlage → Floor Keller; Area Garten → Floor Außenbereich; keller_power-Mitgliederliste enthält Server-Steckdose + stromverbrauch_heizungsanlage.
Doppel-Scrape: aktuell nur noch Job home-assistant (185 Serien); Duplikate im Fenster vor dem 16.07. real beobachtet (Screenshot Before, Legende).
JSON validiert; Dashboard als Temp-Preview power-flow-preview gerendert (Screenshot After) und danach gelöscht.
Hinweis: der After-Screenshot ist nachts entstanden — Solar-Fluss und Netz-Einspeisungs-Pfeil waren nicht sichtbar prüfbar. Die Logik dafür ist unverändert (nur batteryIn entfernt); bei Tageslicht prüfe ich gern nach.
# Dashboard review: power-flow ("Power Flow")
Full review against live Prometheus/HA data, with surgical fixes (12 insertions / 11 deletions, no reformat). PR #273 (open3e repoint of Solar/Battery/SoC) was verified as correct and left untouched.
## Before
Rendered 00:11 (Nacht: PV 0 W ist korrekt). Server 0 W und Garden 0 W sind **tote Sensoren**, Home 693 W ist massiv zu niedrig (Batterie entlädt allein 1,1 kW), die History-Legende zeigt jede Serie doppelt:

## After
Server 287 W (Linie aus Keller), Wärmepumpe aus Keller statt EG, Home = 1,3 kW Bilanz, neuer grauer "Rest"-Knoten (380 W nicht submeterte Last), History dedupliziert mit Vorzeichen-Hinweisen:

## Review report
### Critical
1. **Server-Knoten zeigte stumm 0 W — `sensor.keller_server_power` existiert nicht mehr** (HA: `unavailable`; die powercalc-Gruppe "Keller Server" wurde mit der toten USV entfernt). Das `|| 0` im ECharts-Script verschluckte den Ausfall.
✅ FIXED — Query zeigt jetzt auf `sensor.kg_vorratskeller_wave_pm_mini_server_steckdose_electric_consumption_w` ("Server Steckdose", live 316,9 W zur Verifikationszeit).
2. **Garden-Knoten zeigte stumm 0 W — `sensor.eg_garten_teichpumpe_power_2` existiert nicht mehr** (HA: `unknown`; das `_2` war ein Twin-Entity-Rest).
✅ FIXED — `sensor.shelly_teichpumpe_power_0` (live; nachts 0 W weil Pumpe aus, `max_over_time[2d]` = 77 W bestätigt den Sensor als aktiv).
3. **Home unterschlug ~40 % der realen Last.** Der Knoten summierte nur die vier powercalc-Etagen (702 W zur Renderzeit), die reale Bilanz war ~1109 W (Batterie 1117 W Entladung − 8 W Einspeisung, PV 0). Die Etagen-Gruppen decken nur submeterte Kreise ab — der Flow "balancierte" nie gegen die Quellen.
✅ FIXED — Home = PV + Netz + Batterie (alle vorzeichenbehaftet, = Bilanz am Zähler). Die Etagen bleiben als Aufschlüsselung; ein neuer grauer **"Rest"-Knoten** trägt die Differenz (Bilanz − Etagen − Garten), damit das Diagramm sichtbar aufgeht. Gleiches für die History-Serie "Home" (vorher `sum()` der Etagen, jetzt Bilanz-Ausdruck).
### Major
4. **History-Panel verdoppelte Serien.** Im 6h-Fenster erschien jede Serie doppelt (Jobs `home-assistant` + `home-assistant-bgp`, Doppel-Scrape bis zum Fix am 16.07.) — und die alte "Home"-Serie war ein `sum()`, der in Alt-Fenstern **echt verdoppelte** (Legende zeigte Home mean 1,07 kW bei ~700 W Etagen-Summe).
✅ FIXED — alle Targets defensiv mit `max by (entity)` ummantelt; der Rest heilt sich mit der Retention selbst aus.
5. **Wärmepumpen-Flusslinie startete am EG-Knoten, Garten-Linie am OG-Knoten — beides falsch.** `stromverbrauch_heizungsanlage` ist Mitglied der Keller-Gruppe (Area "Heizungsanlage" → Floor Keller, per HA-Template verifiziert); die Teichpumpe hängt an Area "Garten" → Floor **Außenbereich** und ist in *keiner* Etagen-Summe.
✅ FIXED — Wärmepumpe und Server zweigen vom Keller-Knoten ab; Garten hängt direkt an Home.
### Minor
6. **Tote Sensoren rendern nie wieder stumm als 0:** `getVal` liefert jetzt `null` bei fehlender Serie, die Consumer-Knoten (Server/Wärmepumpe/Garten) zeigen dann **"n/a"**.
7. **Grid-Query selektierte über `friendly_name`** ("Smart Meter Sum active instantaneous power") — bricht bei Umbenennung. ✅ FIXED — Entity-Selektor `sensor.smart_meter_sum_active_instantaneous_power` (beide Panels).
8. **Redundantes `batteryIn`-Target** (`… * -1`) entfernt; Laden/Entladen wird aus dem einen vorzeichenbehafteten Sensor abgeleitet. Veraltete Script-Kommentare zu den ausgemusterten `battery_power_in/out_absolute`-Sensoren aktualisiert.
9. **Legenden ohne Vorzeichen-Semantik:** jetzt "Battery (+ Entladen / − Laden)", "Grid (+ Bezug / − Einspeisung)" (Farb-Overrides mitgezogen); beide Panels haben eine `description` mit den Konventionen.
### ⚠️ NOT FIXED — Quellseitiger Befund (gehört ins homeassistant-Repo, nicht hierher)
`sensor.keller_power` (powercalc-Gruppe) enthält **sowohl** `sensor.kg_waschkuche_waschmaschine_power` (Steckdosen-Messung) **als auch** `sensor.waschmaschine_current_power` (ha_washdata-Spiegel derselben Maschine) — und trotz Ausschluss-Filter auch `sensor.kg_waschkuche_waschmaschine_device_power` (aktuell `unknown`, zählt daher nicht). Während eines Waschgangs zählt die Keller-Summe die Waschmaschine **doppelt** (Dito vermutlich `trockner_current_power`). Beeinflusst hier nur die Etagen-Aufschlüsselung, nicht mehr den Home-Wert (der ist jetzt bilanzbasiert). Sag Bescheid, dann mache ich dafür einen PR im homeassistant-Repo.
### ❓ QUESTION
Der "Rest"-Knoten lag nachts bei ~380 W (Grundlast ohne Submetering: Netzwerk/Kühl-/Standby-Geräte außerhalb der gemessenen Kreise). Mittags am 16.07. lag die Bilanz bei ~5,6 kW gegen ~1,6 kW Etagen — falls es einen nicht submeterten Großverbraucher gibt (Wallbox?), wäre ein eigener Knoten sinnvoll. Gibt es einen?
## Verification
Alle Queries vor dem Schreiben gegen das live Prometheus (Port-Forward, instant + range) bzw. die HA-API geprüft:
- `vitocharge_vx3_vx3_pv_power` 0 W (00:15, Nacht — plausibel), `…battery_power` +1117 W (Entladen), `…battery_soc` vorhanden; Mittags-Gegenprobe 16.07. 12:00Z: PV 7252 W, Netz −1643 W → **negativ = Einspeisung bestätigt** (konsistent mit `grid_power` −23 W, open3e-Doku).
- Bilanzprobe: PV 0 + Netz −8 + Batterie +1117 ≈ 1109 W reale Last vs. 702 W Etagen-Summe → Befund 3.
- `keller_server_power` / `eg_garten_teichpumpe_power_2`: keine Prometheus-Serie, HA `unavailable`/`unknown` → tot bestätigt.
- Ersatz-Sensoren live verifiziert (Server-Steckdose 316,9 W; Teichpumpe max 77 W in 2d).
- Etagen-Zuordnung per HA-Template: Area Heizungsanlage → Floor Keller; Area Garten → Floor Außenbereich; `keller_power`-Mitgliederliste enthält Server-Steckdose + `stromverbrauch_heizungsanlage`.
- Doppel-Scrape: aktuell nur noch Job `home-assistant` (185 Serien); Duplikate im Fenster vor dem 16.07. real beobachtet (Screenshot Before, Legende).
- JSON validiert; Dashboard als Temp-Preview `power-flow-preview` gerendert (Screenshot After) und danach gelöscht.
Hinweis: der After-Screenshot ist nachts entstanden — Solar-Fluss und Netz-Einspeisungs-Pfeil waren nicht sichtbar prüfbar. Die Logik dafür ist unverändert (nur `batteryIn` entfernt); bei Tageslicht prüfe ich gern nach.
- Server node: sensor.keller_server_power is dead (UPS retired) -> Wave PM
Mini server outlet (kg_vorratskeller_wave_pm_mini_server_steckdose)
- Garden node: sensor.eg_garten_teichpumpe_power_2 is dead ->
sensor.shelly_teichpumpe_power_0 (live, peaks ~77 W)
- Home node/series: floor sums only cover submetered circuits (702 W shown
vs ~1.1 kW real); Home is now the meter balance PV + Grid + Battery, with
a new grey 'Rest' node for the non-submetered remainder
- Flow lines: Heat Pump is metered inside Keller (was drawn from EG);
Garden is on floor Aussenbereich, in no floor sum (was drawn from OG)
- Drop redundant batteryIn target (derived from the signed battery sensor);
update stale comments from the retired *_absolute sensors
- History: max by (entity) guards against duplicate-scrape residue that
doubled the summed Home series; sign hints in Battery/Grid legends;
grid query pinned to entity id instead of friendly_name
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Dashboard review: power-flow ("Power Flow")
Full review against live Prometheus/HA data, with surgical fixes (12 insertions / 11 deletions, no reformat). PR #273 (open3e repoint of Solar/Battery/SoC) was verified as correct and left untouched.
Before
Rendered 00:11 (Nacht: PV 0 W ist korrekt). Server 0 W und Garden 0 W sind tote Sensoren, Home 693 W ist massiv zu niedrig (Batterie entlädt allein 1,1 kW), die History-Legende zeigt jede Serie doppelt:
After
Server 287 W (Linie aus Keller), Wärmepumpe aus Keller statt EG, Home = 1,3 kW Bilanz, neuer grauer "Rest"-Knoten (380 W nicht submeterte Last), History dedupliziert mit Vorzeichen-Hinweisen:
Review report
Critical
Server-Knoten zeigte stumm 0 W —
sensor.keller_server_powerexistiert nicht mehr (HA:unavailable; die powercalc-Gruppe "Keller Server" wurde mit der toten USV entfernt). Das|| 0im ECharts-Script verschluckte den Ausfall.✅ FIXED — Query zeigt jetzt auf
sensor.kg_vorratskeller_wave_pm_mini_server_steckdose_electric_consumption_w("Server Steckdose", live 316,9 W zur Verifikationszeit).Garden-Knoten zeigte stumm 0 W —
sensor.eg_garten_teichpumpe_power_2existiert nicht mehr (HA:unknown; das_2war ein Twin-Entity-Rest).✅ FIXED —
sensor.shelly_teichpumpe_power_0(live; nachts 0 W weil Pumpe aus,max_over_time[2d]= 77 W bestätigt den Sensor als aktiv).Home unterschlug ~40 % der realen Last. Der Knoten summierte nur die vier powercalc-Etagen (702 W zur Renderzeit), die reale Bilanz war ~1109 W (Batterie 1117 W Entladung − 8 W Einspeisung, PV 0). Die Etagen-Gruppen decken nur submeterte Kreise ab — der Flow "balancierte" nie gegen die Quellen.
✅ FIXED — Home = PV + Netz + Batterie (alle vorzeichenbehaftet, = Bilanz am Zähler). Die Etagen bleiben als Aufschlüsselung; ein neuer grauer "Rest"-Knoten trägt die Differenz (Bilanz − Etagen − Garten), damit das Diagramm sichtbar aufgeht. Gleiches für die History-Serie "Home" (vorher
sum()der Etagen, jetzt Bilanz-Ausdruck).Major
History-Panel verdoppelte Serien. Im 6h-Fenster erschien jede Serie doppelt (Jobs
home-assistant+home-assistant-bgp, Doppel-Scrape bis zum Fix am 16.07.) — und die alte "Home"-Serie war einsum(), der in Alt-Fenstern echt verdoppelte (Legende zeigte Home mean 1,07 kW bei ~700 W Etagen-Summe).✅ FIXED — alle Targets defensiv mit
max by (entity)ummantelt; der Rest heilt sich mit der Retention selbst aus.Wärmepumpen-Flusslinie startete am EG-Knoten, Garten-Linie am OG-Knoten — beides falsch.
stromverbrauch_heizungsanlageist Mitglied der Keller-Gruppe (Area "Heizungsanlage" → Floor Keller, per HA-Template verifiziert); die Teichpumpe hängt an Area "Garten" → Floor Außenbereich und ist in keiner Etagen-Summe.✅ FIXED — Wärmepumpe und Server zweigen vom Keller-Knoten ab; Garten hängt direkt an Home.
Minor
getValliefert jetztnullbei fehlender Serie, die Consumer-Knoten (Server/Wärmepumpe/Garten) zeigen dann "n/a".friendly_name("Smart Meter Sum active instantaneous power") — bricht bei Umbenennung. ✅ FIXED — Entity-Selektorsensor.smart_meter_sum_active_instantaneous_power(beide Panels).batteryIn-Target (… * -1) entfernt; Laden/Entladen wird aus dem einen vorzeichenbehafteten Sensor abgeleitet. Veraltete Script-Kommentare zu den ausgemustertenbattery_power_in/out_absolute-Sensoren aktualisiert.descriptionmit den Konventionen.⚠️ NOT FIXED — Quellseitiger Befund (gehört ins homeassistant-Repo, nicht hierher)
sensor.keller_power(powercalc-Gruppe) enthält sowohlsensor.kg_waschkuche_waschmaschine_power(Steckdosen-Messung) als auchsensor.waschmaschine_current_power(ha_washdata-Spiegel derselben Maschine) — und trotz Ausschluss-Filter auchsensor.kg_waschkuche_waschmaschine_device_power(aktuellunknown, zählt daher nicht). Während eines Waschgangs zählt die Keller-Summe die Waschmaschine doppelt (Dito vermutlichtrockner_current_power). Beeinflusst hier nur die Etagen-Aufschlüsselung, nicht mehr den Home-Wert (der ist jetzt bilanzbasiert). Sag Bescheid, dann mache ich dafür einen PR im homeassistant-Repo.❓ QUESTION
Der "Rest"-Knoten lag nachts bei ~380 W (Grundlast ohne Submetering: Netzwerk/Kühl-/Standby-Geräte außerhalb der gemessenen Kreise). Mittags am 16.07. lag die Bilanz bei ~5,6 kW gegen ~1,6 kW Etagen — falls es einen nicht submeterten Großverbraucher gibt (Wallbox?), wäre ein eigener Knoten sinnvoll. Gibt es einen?
Verification
Alle Queries vor dem Schreiben gegen das live Prometheus (Port-Forward, instant + range) bzw. die HA-API geprüft:
vitocharge_vx3_vx3_pv_power0 W (00:15, Nacht — plausibel),…battery_power+1117 W (Entladen),…battery_socvorhanden; Mittags-Gegenprobe 16.07. 12:00Z: PV 7252 W, Netz −1643 W → negativ = Einspeisung bestätigt (konsistent mitgrid_power−23 W, open3e-Doku).keller_server_power/eg_garten_teichpumpe_power_2: keine Prometheus-Serie, HAunavailable/unknown→ tot bestätigt.keller_power-Mitgliederliste enthält Server-Steckdose +stromverbrauch_heizungsanlage.home-assistant(185 Serien); Duplikate im Fenster vor dem 16.07. real beobachtet (Screenshot Before, Legende).power-flow-previewgerendert (Screenshot After) und danach gelöscht.Hinweis: der After-Screenshot ist nachts entstanden — Solar-Fluss und Netz-Einspeisungs-Pfeil waren nicht sichtbar prüfbar. Die Logik dafür ist unverändert (nur
batteryInentfernt); bei Tageslicht prüfe ich gern nach.