All four panels queried raw HA metrics that still carry ~12 duplicate series per entity in the 90d window (two scrape jobs x six pod lifetimes; the duplicate-scrape bug was fixed 2026-07-16 but the residue stays in range queries until it ages out). This broke the scatter join (no points rendered), made the stat panel show 8 conflicting averages, and drew rainbow duplicates in both time series. Wrapping every target in max by (entity) (...) collapses the residue to one series per entity; values between the duplicate jobs were near-identical, so max is lossless.
141 lines
5.5 KiB
JSON
141 lines
5.5 KiB
JSON
{
|
|
"annotations": { "list": [] },
|
|
"editable": true,
|
|
"fiscalYearStartMonth": 0,
|
|
"graphTooltip": 0,
|
|
"links": [],
|
|
"liveNow": false,
|
|
"panels": [
|
|
{
|
|
"id": 1,
|
|
"type": "xychart",
|
|
"title": "WW-Ladeleistung vs. Außentemperatur",
|
|
"description": "Jeder Punkt = ein Scrape-Sample der WP-Leistungsaufnahme während einer aktiven WW-Ladung (Sensor ist nur dann verfügbar), gegen die gleichzeitige Außentemperatur. Zeigt, ob die Ladeleistung von der Außentemperatur abhängt. Baut sich mit jeder WW-Ladung weiter auf.",
|
|
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
|
"gridPos": { "h": 12, "w": 16, "x": 0, "y": 0 },
|
|
"options": {
|
|
"seriesMapping": "auto",
|
|
"legend": { "displayMode": "list", "placement": "bottom", "showLegend": false },
|
|
"tooltip": { "mode": "single", "sort": "none" }
|
|
},
|
|
"fieldConfig": {
|
|
"defaults": { "custom": { "show": "points", "pointSize": { "fixed": 6 } } },
|
|
"overrides": [
|
|
{ "matcher": { "id": "byName", "options": "Ladeleistung" }, "properties": [ { "id": "unit", "value": "watt" } ] },
|
|
{ "matcher": { "id": "byName", "options": "Aussentemp" }, "properties": [ { "id": "unit", "value": "celsius" } ] }
|
|
]
|
|
},
|
|
"targets": [
|
|
{
|
|
"refId": "A",
|
|
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
|
"expr": "max by (entity) (homeassistant_sensor_power_w{entity=\"sensor.vitocal_dhw_loading_power\"})",
|
|
"legendFormat": "Ladeleistung",
|
|
"format": "time_series"
|
|
},
|
|
{
|
|
"refId": "B",
|
|
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
|
"expr": "max by (entity) (homeassistant_sensor_temperature_celsius{entity=\"sensor.vitocal_250_a_vitocal_outside_temperature\"})",
|
|
"legendFormat": "Aussentemp",
|
|
"format": "time_series"
|
|
}
|
|
],
|
|
"transformations": [
|
|
{ "id": "joinByField", "options": { "byField": "Time", "mode": "outer" } },
|
|
{ "id": "organize", "options": { "excludeByName": { "Time": true }, "indexByName": { "Aussentemp": 0, "Ladeleistung": 1 }, "renameByName": {} } },
|
|
{ "id": "filterByValue", "options": { "type": "include", "match": "all", "filters": [ { "fieldName": "Ladeleistung", "config": { "id": "isNotNull", "options": {} } } ] } }
|
|
]
|
|
},
|
|
{
|
|
"id": 2,
|
|
"type": "stat",
|
|
"title": "Ø Ladeleistung (Zeitraum)",
|
|
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
|
"gridPos": { "h": 12, "w": 8, "x": 16, "y": 0 },
|
|
"options": {
|
|
"reduceOptions": { "calcs": ["mean"], "fields": "", "values": false },
|
|
"orientation": "vertical",
|
|
"textMode": "value_and_name",
|
|
"colorMode": "value",
|
|
"graphMode": "area"
|
|
},
|
|
"fieldConfig": {
|
|
"defaults": { "unit": "watt", "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } },
|
|
"overrides": []
|
|
},
|
|
"targets": [
|
|
{
|
|
"refId": "A",
|
|
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
|
"expr": "max by (entity) (homeassistant_sensor_power_w{entity=\"sensor.vitocal_dhw_loading_power\"})",
|
|
"legendFormat": "Ladeleistung"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": 3,
|
|
"type": "timeseries",
|
|
"title": "WW-Ladeleistung über Zeit",
|
|
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
|
"gridPos": { "h": 9, "w": 12, "x": 0, "y": 12 },
|
|
"options": {
|
|
"legend": { "displayMode": "list", "placement": "bottom", "showLegend": false },
|
|
"tooltip": { "mode": "single", "sort": "none" }
|
|
},
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "watt",
|
|
"custom": { "drawStyle": "points", "pointSize": 4, "showPoints": "always", "lineWidth": 0, "axisLabel": "Ladeleistung (W)" }
|
|
},
|
|
"overrides": []
|
|
},
|
|
"targets": [
|
|
{
|
|
"refId": "A",
|
|
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
|
"expr": "max by (entity) (homeassistant_sensor_power_w{entity=\"sensor.vitocal_dhw_loading_power\"})",
|
|
"legendFormat": "Ladeleistung"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": 4,
|
|
"type": "timeseries",
|
|
"title": "Außentemperatur",
|
|
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
|
"gridPos": { "h": 9, "w": 12, "x": 12, "y": 12 },
|
|
"options": {
|
|
"legend": { "displayMode": "list", "placement": "bottom", "showLegend": false },
|
|
"tooltip": { "mode": "single", "sort": "none" }
|
|
},
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "celsius",
|
|
"custom": { "drawStyle": "line", "lineWidth": 1, "fillOpacity": 8, "axisLabel": "Außentemp (°C)" }
|
|
},
|
|
"overrides": []
|
|
},
|
|
"targets": [
|
|
{
|
|
"refId": "A",
|
|
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
|
"expr": "max by (entity) (homeassistant_sensor_temperature_celsius{entity=\"sensor.vitocal_250_a_vitocal_outside_temperature\"})",
|
|
"legendFormat": "Außentemp"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"refresh": "",
|
|
"schemaVersion": 38,
|
|
"tags": ["homelab", "heatpump", "dhw", "warmwasser"],
|
|
"templating": { "list": [] },
|
|
"time": { "from": "now-90d", "to": "now" },
|
|
"timepicker": {},
|
|
"timezone": "browser",
|
|
"title": "Wärmepumpe — WW-Ladeleistung vs. Außentemperatur",
|
|
"uid": "heatpump-dhw-loading",
|
|
"version": 1,
|
|
"weekStart": ""
|
|
}
|