fix(home-climate): real room sensors only, repair empty heating panels, readable legends #280

Merged
k.renner merged 1 commits from claude-bot/dash-home-climate into master 2026-07-17 11:20:49 +00:00
Member

Before

before

After

Oberer Teil (Current Temperatures, Temperature History):

after-top

Unterer Teil (Humidity, Air Quality, Heating System — vorher unsichtbar bzw. leer):

after-bottom

Review report

  1. Device-/Elektronik-Temperaturen verschmutzen "All Room Temperatures" — critical
    ✅ FIXED — Regex /(shelly.*temp|meter_pro)/ selektierte nach Hersteller und zog Teichpumpe (33.9 °C), Shelly-Relais (75.6 °C), 3EM-Stromzähler (60.1 °C) und Switch-Innentemperaturen (49.3 °C) in die Raumübersicht. Ersetzt durch explizite Allow-List verifizierter Raumsensoren; Legende zeigt jetzt Raumnamen (Flux map() + displayName). max von 30 auf 35 angehoben, damit sommerliche 27 °C+ nicht am Anschlag kleben.

  2. "Erdgeschoss Temperatures" Y-Achse durch Switch-Innentemperatur zerstört — critical
    ✅ FIXED — eg_wohnzimmer_shelly_nord_switch_0_device_temperature (~49 °C) raus, dafür die tatsächlich lebenden EG-Sensoren rein: i_9psl_temperature (EG Schlafzimmer), i_9psl_temperature_2 (EG Diele), treppenhaus_eg_bewegungsmelder_temperature (EG Treppenhaus). Achse skaliert jetzt auf ~18–30 °C.

  3. "Obergeschoss & Dachgeschoss" enthielt keine OG-Daten und fast nur Geräte-Temps — critical
    ✅ FIXED — Das alte Regex /(^dg_|meter_pro|i_9psl.*temp)/ hatte keine einzige og_-Alternative; gezeigt wurden dg_buro_sw_temperature (62 °C, Switch), Fenster-/Türsensor-Innentemps und ein Schreibtischgerät (35 °C). Jetzt: nur dg_buro_meter_pro (der echte DG-Sensor, derzeit offline) + shellywalldisplay_00082266e106 (lt. HA friendly_name "DG Büro Wall Display Temperature", live, 31.6 °C — leichter Eigenwärme-Bias). Panel-Beschreibung dokumentiert: OG hat bewusst keinen Temperatursensor, darum ehrlich keine OG-Serie statt erfundener Daten.

  4. Legenden zeigen rohe Entity-IDs mit _value-Prefix — major
    ✅ FIXED — Alle Panels mappen entity_ids in Flux auf Raumnamen (EG Diele, KG Waschküche, …) bzw. Heizungs-Begriffe (Vorlauf, Warmwasser Ist/Soll) und setzen displayName: ${__field.labels.entity_id} — der _value-Prefix ist weg.

  5. Bargauge-Clamp min:10/max:30 versteckt Ausreißer-Magnitude — minor
    ✅ TEILWEISE FIXED — Nach Ausschluss der Gerätetemperaturen ist das Problem praktisch entschärft; max auf 35 erhöht. Der Zahlenwert zeigt ohnehin immer den echten Wert.

  6. Humidity: Current und History nutzten verschiedene Sensor-Sets — minor
    ✅ FIXED — Beide Panels nutzen jetzt dieselbe explizite Liste (inkl. der bisher fehlenden i_9psl_humidity*, eg_schlafzimmer_vento_humidity, kg_waschkuche_vento_humidity, kg_vorratskeller_klimasensor_humidity, shelly_blu_h_t_7203_humidity).

  7. CO2-Gauge und -History mit unterschiedlichen Schwellwerten — minor
    ✅ FIXED — Beide jetzt 800 / 1000 / 1500 ppm (History hatte rot schon bei 1000).

  8. Heating System / Hot Water Panels waren LEER — major, verifiziert
    ✅ FIXED — Bestätigt: der domain-Tag im °C-Measurement enthält nur number und sensor — climate und water_heater existieren nicht, beide Panels waren garantiert leer. Jetzt: Heizung = vitocal_250_a_vitocal_{flow,return,buffer,outside}_temperature + HK2/HK3-Vorlauf; Warmwasser = dhw_temperature (Ist) + dhw_setpoint (Soll). Im After-Screenshot ist ein kompletter WW-Ladezyklus sichtbar.

  9. Tote Sensoren zeigten stale Werte als "aktuell" — major (Querschnitts-Bug #4)
    ✅ FIXED — Die drei "Current"-Panels (Temperatur-Bargauge, Humidity-Bargauge, CO2-Gauge) nutzen jetzt ein festes range(start: -6h) statt des Dashboard-Zeitbereichs: Sensoren ohne Daten in den letzten 6 h verschwinden, statt einen Tage-alten Wert als live auszugeben. Trade-off: der Time-Picker beeinflusst diese drei Panels nicht mehr (für "current" m.E. korrekt). History-Panels folgen weiter dem Time-Picker.

  10. Selektion per Hersteller-Regex (Root Cause) — major (design)
    ✅ FIXED (im Dashboard) / ⚠️ OFFEN (in HA) — Alle Queries nutzen jetzt explizite ^(…)$-Allow-Lists. Langfristig sauberer wäre, die Ausreißer-Entities in HA nach <floor>_<raum>_* zu benennen (i_9psl_*, shelly_blu_h_t_7203, shellywalldisplay_*).

Hardware-Findings (nicht per Query reparierbar)

  • EG Shelly H&T Trio (eg_bad, eg_schlafzimmer, eg_wohnzimmer): tot (Batterie), letzte Daten 2026-07-16 11:49. Bleiben in den Queries — sobald Batterien getauscht sind, erscheinen sie wieder automatisch.
  • DG Büro Meter Pro (dg_buro_meter_pro): offline seit 2026-07-15 04:31 (HA-State unavailable). Auch dieser bleibt in den Queries.

❓ Fragen an den Owner

  1. Ist das Shelly Wall Display als DG-Büro-Referenz okay (Eigenwärme-Bias, zeigt ~31.6 °C vs. Meter Pro zuletzt 29.5 °C)? Sonst nehme ich es wieder raus und das DG-Panel bleibt leer, bis der Meter Pro zurück ist.
  2. Sind die Vento-Feuchtesensoren (EG Schlafzimmer 47 %, KG Waschküche 55 %) als Raumwerte gewünscht? Werte sind plausibel, es sind aber Lüftungsgeräte.
  3. vitocal_circuit_2_room_temperature liest konstant 14.5 °C (implausibel, vermutlich unbenutzter Heizkreis) — bewusst NICHT aufgenommen. Passt das?

Verification

Alle 10 neuen Flux-Queries wurden vor dem Commit gegen das Live-InfluxDB (Grafana /api/ds/query, Bucket suedstr28) ausgeführt:

  • schema.tagValues für °C, %, ppm → vollständige Entity-Listen; domain-Tag für °C = nur number+sensor (Beweis für leere Heating-Panels).
  • Letzte Werte + Timestamps aller Kandidaten (7 Tage) → Staleness-Befunde oben; Plausibilität: Räume 20.1–27.3 °C, Feuchte 40–64 %, CO2 492–670 ppm, WW 47.5/45 °C.
  • HA-States für die fraglichen Sensoren (friendly_name, availability): Wall Display = "DG Büro Wall Display Temperature" (live), dg_buro_meter_pro = unavailable, Vento-Sensoren live.
  • After-Screenshots stammen aus einem Temp-Preview (home-climate-preview), das anschließend gelöscht wurde. Das produktive Dashboard wurde nicht angefasst.
## Before ![before](https://gitea.renner.uno/attachments/0e2e6f73-6144-4c44-a7c2-0e40948d7314) ## After Oberer Teil (Current Temperatures, Temperature History): ![after-top](https://gitea.renner.uno/attachments/e4de5b98-85d2-4ac2-a00e-26843fae0c04) Unterer Teil (Humidity, Air Quality, Heating System — vorher unsichtbar bzw. leer): ![after-bottom](https://gitea.renner.uno/attachments/622e17e4-7275-4c91-babc-1cb458478146) ## Review report 1. **Device-/Elektronik-Temperaturen verschmutzen "All Room Temperatures"** — `critical` ✅ FIXED — Regex `/(shelly.*temp|meter_pro)/` selektierte nach Hersteller und zog Teichpumpe (33.9 °C), Shelly-Relais (75.6 °C), 3EM-Stromzähler (60.1 °C) und Switch-Innentemperaturen (49.3 °C) in die Raumübersicht. Ersetzt durch explizite Allow-List verifizierter Raumsensoren; Legende zeigt jetzt Raumnamen (Flux `map()` + `displayName`). `max` von 30 auf 35 angehoben, damit sommerliche 27 °C+ nicht am Anschlag kleben. 2. **"Erdgeschoss Temperatures" Y-Achse durch Switch-Innentemperatur zerstört** — `critical` ✅ FIXED — `eg_wohnzimmer_shelly_nord_switch_0_device_temperature` (~49 °C) raus, dafür die tatsächlich lebenden EG-Sensoren rein: `i_9psl_temperature` (EG Schlafzimmer), `i_9psl_temperature_2` (EG Diele), `treppenhaus_eg_bewegungsmelder_temperature` (EG Treppenhaus). Achse skaliert jetzt auf ~18–30 °C. 3. **"Obergeschoss & Dachgeschoss" enthielt keine OG-Daten und fast nur Geräte-Temps** — `critical` ✅ FIXED — Das alte Regex `/(^dg_|meter_pro|i_9psl.*temp)/` hatte keine einzige `og_`-Alternative; gezeigt wurden `dg_buro_sw_temperature` (62 °C, Switch), Fenster-/Türsensor-Innentemps und ein Schreibtischgerät (35 °C). Jetzt: nur `dg_buro_meter_pro` (der echte DG-Sensor, derzeit offline) + `shellywalldisplay_00082266e106` (lt. HA friendly_name "DG Büro Wall Display Temperature", live, 31.6 °C — leichter Eigenwärme-Bias). Panel-Beschreibung dokumentiert: **OG hat bewusst keinen Temperatursensor**, darum ehrlich keine OG-Serie statt erfundener Daten. 4. **Legenden zeigen rohe Entity-IDs mit `_value`-Prefix** — `major` ✅ FIXED — Alle Panels mappen entity_ids in Flux auf Raumnamen (`EG Diele`, `KG Waschküche`, …) bzw. Heizungs-Begriffe (`Vorlauf`, `Warmwasser Ist/Soll`) und setzen `displayName: ${__field.labels.entity_id}` — der `_value`-Prefix ist weg. 5. **Bargauge-Clamp min:10/max:30 versteckt Ausreißer-Magnitude** — `minor` ✅ TEILWEISE FIXED — Nach Ausschluss der Gerätetemperaturen ist das Problem praktisch entschärft; `max` auf 35 erhöht. Der Zahlenwert zeigt ohnehin immer den echten Wert. 6. **Humidity: Current und History nutzten verschiedene Sensor-Sets** — `minor` ✅ FIXED — Beide Panels nutzen jetzt dieselbe explizite Liste (inkl. der bisher fehlenden `i_9psl_humidity*`, `eg_schlafzimmer_vento_humidity`, `kg_waschkuche_vento_humidity`, `kg_vorratskeller_klimasensor_humidity`, `shelly_blu_h_t_7203_humidity`). 7. **CO2-Gauge und -History mit unterschiedlichen Schwellwerten** — `minor` ✅ FIXED — Beide jetzt 800 / 1000 / 1500 ppm (History hatte rot schon bei 1000). 8. **Heating System / Hot Water Panels waren LEER** — `major, verifiziert` ✅ FIXED — Bestätigt: der `domain`-Tag im `°C`-Measurement enthält nur `number` und `sensor` — `climate` und `water_heater` existieren nicht, beide Panels waren garantiert leer. Jetzt: Heizung = `vitocal_250_a_vitocal_{flow,return,buffer,outside}_temperature` + HK2/HK3-Vorlauf; Warmwasser = `dhw_temperature` (Ist) + `dhw_setpoint` (Soll). Im After-Screenshot ist ein kompletter WW-Ladezyklus sichtbar. 9. **Tote Sensoren zeigten stale Werte als "aktuell"** — `major` (Querschnitts-Bug #4) ✅ FIXED — Die drei "Current"-Panels (Temperatur-Bargauge, Humidity-Bargauge, CO2-Gauge) nutzen jetzt ein festes `range(start: -6h)` statt des Dashboard-Zeitbereichs: Sensoren ohne Daten in den letzten 6 h verschwinden, statt einen Tage-alten Wert als live auszugeben. Trade-off: der Time-Picker beeinflusst diese drei Panels nicht mehr (für "current" m.E. korrekt). History-Panels folgen weiter dem Time-Picker. 10. **Selektion per Hersteller-Regex (Root Cause)** — `major (design)` ✅ FIXED (im Dashboard) / ⚠️ OFFEN (in HA) — Alle Queries nutzen jetzt explizite `^(…)$`-Allow-Lists. Langfristig sauberer wäre, die Ausreißer-Entities in HA nach `<floor>_<raum>_*` zu benennen (`i_9psl_*`, `shelly_blu_h_t_7203`, `shellywalldisplay_*`). ### Hardware-Findings (nicht per Query reparierbar) - **EG Shelly H&T Trio** (`eg_bad`, `eg_schlafzimmer`, `eg_wohnzimmer`): tot (Batterie), letzte Daten 2026-07-16 11:49. Bleiben in den Queries — sobald Batterien getauscht sind, erscheinen sie wieder automatisch. - **DG Büro Meter Pro** (`dg_buro_meter_pro`): offline seit 2026-07-15 04:31 (HA-State `unavailable`). Auch dieser bleibt in den Queries. ### ❓ Fragen an den Owner 1. Ist das **Shelly Wall Display** als DG-Büro-Referenz okay (Eigenwärme-Bias, zeigt ~31.6 °C vs. Meter Pro zuletzt 29.5 °C)? Sonst nehme ich es wieder raus und das DG-Panel bleibt leer, bis der Meter Pro zurück ist. 2. Sind die **Vento-Feuchtesensoren** (EG Schlafzimmer 47 %, KG Waschküche 55 %) als Raumwerte gewünscht? Werte sind plausibel, es sind aber Lüftungsgeräte. 3. `vitocal_circuit_2_room_temperature` liest konstant 14.5 °C (implausibel, vermutlich unbenutzter Heizkreis) — bewusst NICHT aufgenommen. Passt das? ## Verification Alle 10 neuen Flux-Queries wurden vor dem Commit gegen das Live-InfluxDB (Grafana `/api/ds/query`, Bucket `suedstr28`) ausgeführt: - `schema.tagValues` für `°C`, `%`, `ppm` → vollständige Entity-Listen; `domain`-Tag für `°C` = nur `number`+`sensor` (Beweis für leere Heating-Panels). - Letzte Werte + Timestamps aller Kandidaten (7 Tage) → Staleness-Befunde oben; Plausibilität: Räume 20.1–27.3 °C, Feuchte 40–64 %, CO2 492–670 ppm, WW 47.5/45 °C. - HA-States für die fraglichen Sensoren (friendly_name, availability): Wall Display = "DG Büro Wall Display Temperature" (live), `dg_buro_meter_pro` = `unavailable`, Vento-Sensoren live. - After-Screenshots stammen aus einem Temp-Preview (`home-climate-preview`), das anschließend gelöscht wurde. Das produktive Dashboard wurde nicht angefasst.
claude-bot added 1 commit 2026-07-16 22:41:10 +00:00
- All temperature/humidity panels: replace vendor regexes (shelly.*temp etc.)
  that dragged in device-internal temperatures (pond pump 34C, power meter 60C,
  relay 76C) with explicit allow-lists of verified room sensors
- Add missing sensors: shelly_blu_h_t_7203 (KG Schlafzimmer),
  treppenhaus_eg_bewegungsmelder (EG Treppenhaus), vento humidity sensors,
  Shelly Wall Display (DG Buero)
- OG & DG panel: regex had no og_ alternative and showed only device internals;
  now honest DG-only series + description (OG deliberately has no sensor)
- Heating System / Hot Water panels were empty (domain climate/water_heater
  does not exist in the C measurement) -> use vitocal_250_a_* sensors
- Current-value panels: fixed -6h window so dead sensors (EG Shelly H&T trio,
  DG Meter Pro) disappear instead of showing stale values as live
- Legends: map entity_ids to room names in Flux + displayName, removes the
  '_value xyz' prefix
- Align CO2 thresholds between gauge and history (800/1000/1500)
k.renner merged commit 8a13629803 into master 2026-07-17 11:20:48 +00:00
Sign in to join this conversation.