auto-mirror: Live-Configs CT143 -> Git (2026-08-01)

This commit is contained in:
Homelab Cursor 2026-08-01 05:15:16 +02:00
parent b704a5949a
commit b8d1cda7be
2 changed files with 750 additions and 72 deletions

View file

@ -1,5 +1,7 @@
{ {
"annotations": { "list": [] }, "annotations": {
"list": []
},
"editable": true, "editable": true,
"fiscalYearStartMonth": 0, "fiscalYearStartMonth": 0,
"graphTooltip": 1, "graphTooltip": 1,
@ -14,21 +16,35 @@
"liveNow": false, "liveNow": false,
"panels": [ "panels": [
{ {
"gridPos": { "h": 3, "w": 24, "x": 0, "y": 0 }, "gridPos": {
"h": 4,
"w": 24,
"x": 0,
"y": 0
},
"id": 100, "id": 100,
"options": { "options": {
"code": { "language": "markdown", "showLineNumbers": false, "showMiniMap": false }, "code": {
"content": "**Klimatisierung bewerten:** Oben Leistung (W) der Klimaanlagen — unten Raumtemperaturen.\n\n- **Klima läuft + Räume fallen** → wirkt\n- **Klima läuft + Räume stagnieren** → schlechte Verteilung / zu große Last\n- **Klima aus + Räume fallen** → natürliche Abkühlung\n\n`klima_flur_unten` (Panasonic) erscheint automatisch, sobald Shelly + MQTT aktiv.", "language": "markdown",
"showLineNumbers": false,
"showMiniMap": false
},
"content": "**Klimatisierung bewerten:** Oben Leistung (W) — Mitte Raumtemperaturen — unten **Verbrauch** Panasonic Flur unten (Tag/Woche/Monat/Jahr + Tagesbalken).\n\n- Shelly `192.168.178.95` → Influx `power` / `klima_flur_unten`\n- Aufzeichnung seit 31.07.2026 — ältere Zeiträume sind leer bzw. unvollständig\n- Panel „Flur unten: Leistung vs. Temperatur“: Wirkung (Watt + Raumtemp)",
"mode": "markdown" "mode": "markdown"
}, },
"title": "Hinweis", "title": "Hinweis",
"type": "text" "type": "text"
}, },
{ {
"datasource": { "type": "influxdb", "uid": "ffptl25vzylfke" }, "datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"color": { "mode": "palette-classic" }, "color": {
"mode": "palette-classic"
},
"custom": { "custom": {
"axisBorderShow": false, "axisBorderShow": false,
"axisCenteredZero": false, "axisCenteredZero": false,
@ -42,15 +58,34 @@
}, },
"overrides": [] "overrides": []
}, },
"gridPos": { "h": 8, "w": 16, "x": 0, "y": 3 }, "gridPos": {
"h": 8,
"w": 16,
"x": 0,
"y": 3
},
"id": 1, "id": 1,
"options": { "options": {
"legend": { "calcs": ["lastNotNull", "max", "mean"], "displayMode": "table", "placement": "bottom" }, "legend": {
"tooltip": { "mode": "multi", "sort": "desc" } "calcs": [
"lastNotNull",
"max",
"mean"
],
"displayMode": "table",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
}, },
"targets": [ "targets": [
{ {
"datasource": { "type": "influxdb", "uid": "ffptl25vzylfke" }, "datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"query": "SELECT mean(\"watt\") FROM \"power\" WHERE $timeFilter GROUP BY \"node\", time($__interval) fill(null)", "query": "SELECT mean(\"watt\") FROM \"power\" WHERE $timeFilter GROUP BY \"node\", time($__interval) fill(null)",
"rawQuery": true, "rawQuery": true,
"refId": "A", "refId": "A",
@ -61,35 +96,66 @@
"type": "timeseries" "type": "timeseries"
}, },
{ {
"datasource": { "type": "influxdb", "uid": "ffptl25vzylfke" }, "datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"color": { "mode": "thresholds" }, "color": {
"mode": "thresholds"
},
"thresholds": { "thresholds": {
"mode": "absolute", "mode": "absolute",
"steps": [ "steps": [
{ "color": "blue", "value": null }, {
{ "color": "green", "value": 100 }, "color": "blue",
{ "color": "orange", "value": 800 }, "value": null
{ "color": "red", "value": 2000 } },
{
"color": "green",
"value": 100
},
{
"color": "orange",
"value": 800
},
{
"color": "red",
"value": 2000
}
] ]
}, },
"unit": "watt" "unit": "watt"
}, },
"overrides": [] "overrides": []
}, },
"gridPos": { "h": 8, "w": 8, "x": 16, "y": 3 }, "gridPos": {
"h": 8,
"w": 8,
"x": 16,
"y": 3
},
"id": 2, "id": 2,
"options": { "options": {
"colorMode": "value", "colorMode": "value",
"graphMode": "area", "graphMode": "area",
"justifyMode": "auto", "justifyMode": "auto",
"orientation": "horizontal", "orientation": "horizontal",
"reduceOptions": { "calcs": ["lastNotNull"], "fields": "", "values": false } "reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
}
}, },
"targets": [ "targets": [
{ {
"datasource": { "type": "influxdb", "uid": "ffptl25vzylfke" }, "datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"query": "SELECT last(\"watt\") FROM \"power\" WHERE $timeFilter GROUP BY \"node\"", "query": "SELECT last(\"watt\") FROM \"power\" WHERE $timeFilter GROUP BY \"node\"",
"rawQuery": true, "rawQuery": true,
"refId": "A", "refId": "A",
@ -100,34 +166,75 @@
"type": "stat" "type": "stat"
}, },
{ {
"datasource": { "type": "influxdb", "uid": "ffptl25vzylfke" }, "datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"color": { "mode": "palette-classic" }, "color": {
"custom": { "drawStyle": "line", "fillOpacity": 8, "lineWidth": 2, "showPoints": "never", "spanNulls": true }, "mode": "palette-classic"
},
"custom": {
"drawStyle": "line",
"fillOpacity": 8,
"lineWidth": 2,
"showPoints": "never",
"spanNulls": true
},
"unit": "watt" "unit": "watt"
}, },
"overrides": [ "overrides": [
{ {
"matcher": { "id": "byRegexp", "options": "/.*temp.*/" }, "matcher": {
"id": "byRegexp",
"options": "/.*temp.*/"
},
"properties": [ "properties": [
{ "id": "unit", "value": "celsius" }, {
{ "id": "custom.axisPlacement", "value": "right" }, "id": "unit",
{ "id": "color", "value": { "fixedColor": "light-blue", "mode": "fixed" } } "value": "celsius"
},
{
"id": "custom.axisPlacement",
"value": "right"
},
{
"id": "color",
"value": {
"fixedColor": "light-blue",
"mode": "fixed"
}
}
] ]
} }
] ]
}, },
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 11 }, "gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 11
},
"id": 3, "id": 3,
"options": { "options": {
"legend": { "calcs": [], "displayMode": "list", "placement": "bottom" }, "legend": {
"tooltip": { "mode": "multi", "sort": "none" } "calcs": [],
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
}, },
"targets": [ "targets": [
{ {
"alias": "Leistung Split oben", "alias": "Leistung Split oben",
"datasource": { "type": "influxdb", "uid": "ffptl25vzylfke" }, "datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"query": "SELECT mean(\"watt\") FROM \"power\" WHERE \"node\"='klima_flur_oben' AND $timeFilter GROUP BY time($__interval) fill(null)", "query": "SELECT mean(\"watt\") FROM \"power\" WHERE \"node\"='klima_flur_oben' AND $timeFilter GROUP BY time($__interval) fill(null)",
"rawQuery": true, "rawQuery": true,
"refId": "A", "refId": "A",
@ -135,7 +242,10 @@
}, },
{ {
"alias": "Temp flur_oben", "alias": "Temp flur_oben",
"datasource": { "type": "influxdb", "uid": "ffptl25vzylfke" }, "datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"query": "SELECT mean(\"value\") FROM \"temperature\" WHERE \"node\"='flur_oben' AND $timeFilter GROUP BY time($__interval) fill(null)", "query": "SELECT mean(\"value\") FROM \"temperature\" WHERE \"node\"='flur_oben' AND $timeFilter GROUP BY time($__interval) fill(null)",
"rawQuery": true, "rawQuery": true,
"refId": "B", "refId": "B",
@ -146,70 +256,184 @@
"type": "timeseries" "type": "timeseries"
}, },
{ {
"datasource": { "type": "influxdb", "uid": "ffptl25vzylfke" }, "datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"color": { "mode": "palette-classic" }, "color": {
"custom": { "drawStyle": "line", "fillOpacity": 8, "lineWidth": 2, "showPoints": "never", "spanNulls": true }, "mode": "palette-classic"
},
"custom": {
"drawStyle": "line",
"fillOpacity": 8,
"lineWidth": 2,
"showPoints": "never",
"spanNulls": true
},
"unit": "watt" "unit": "watt"
}, },
"overrides": [ "overrides": [
{ {
"matcher": { "id": "byRegexp", "options": "/.*temp.*/" }, "matcher": {
"id": "byRegexp",
"options": "/.*temp.*/"
},
"properties": [ "properties": [
{ "id": "unit", "value": "celsius" }, {
{ "id": "custom.axisPlacement", "value": "right" }, "id": "unit",
{ "id": "color", "value": { "fixedColor": "light-green", "mode": "fixed" } } "value": "celsius"
},
{
"id": "custom.axisPlacement",
"value": "right"
},
{
"id": "color",
"value": {
"fixedColor": "light-green",
"mode": "fixed"
}
}
]
},
{
"matcher": {
"id": "byRegexp",
"options": "Temp.*"
},
"properties": [
{
"id": "custom.axisPlacement",
"value": "right"
},
{
"id": "unit",
"value": "celsius"
},
{
"id": "custom.axisLabel",
"value": "°C"
}
]
},
{
"matcher": {
"id": "byRegexp",
"options": "Leistung.*"
},
"properties": [
{
"id": "custom.axisPlacement",
"value": "left"
},
{
"id": "unit",
"value": "watt"
},
{
"id": "custom.axisLabel",
"value": "W"
}
] ]
} }
] ]
}, },
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 11 }, "gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 11
},
"id": 4, "id": 4,
"options": { "options": {
"legend": { "calcs": [], "displayMode": "list", "placement": "bottom" }, "legend": {
"tooltip": { "mode": "multi", "sort": "none" } "calcs": [],
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
}, },
"targets": [ "targets": [
{ {
"alias": "Leistung Panasonic unten", "alias": "Leistung Panasonic (W)",
"datasource": { "type": "influxdb", "uid": "ffptl25vzylfke" }, "datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"query": "SELECT mean(\"watt\") FROM \"power\" WHERE \"node\"='klima_flur_unten' AND $timeFilter GROUP BY time($__interval) fill(null)", "query": "SELECT mean(\"watt\") FROM \"power\" WHERE \"node\"='klima_flur_unten' AND $timeFilter GROUP BY time($__interval) fill(null)",
"rawQuery": true, "rawQuery": true,
"refId": "A", "refId": "A",
"resultFormat": "time_series" "resultFormat": "time_series"
}, },
{ {
"alias": "Temp flur_unten", "alias": "Temp Flur unten (°C)",
"datasource": { "type": "influxdb", "uid": "ffptl25vzylfke" }, "datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"query": "SELECT mean(\"value\") FROM \"temperature\" WHERE \"node\"='flur_unten' AND $timeFilter GROUP BY time($__interval) fill(null)", "query": "SELECT mean(\"value\") FROM \"temperature\" WHERE \"node\"='flur_unten' AND $timeFilter GROUP BY time($__interval) fill(null)",
"rawQuery": true, "rawQuery": true,
"refId": "B", "refId": "B",
"resultFormat": "time_series" "resultFormat": "time_series"
} }
], ],
"title": "Flur unten: Leistung vs. Temperatur (Panasonic folgt)", "title": "Flur unten: Leistung vs. Temperatur",
"type": "timeseries" "type": "timeseries"
}, },
{ {
"datasource": { "type": "influxdb", "uid": "ffptl25vzylfke" }, "datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"color": { "mode": "palette-classic" }, "color": {
"custom": { "drawStyle": "line", "fillOpacity": 5, "lineWidth": 1, "showPoints": "never", "spanNulls": true }, "mode": "palette-classic"
},
"custom": {
"drawStyle": "line",
"fillOpacity": 5,
"lineWidth": 1,
"showPoints": "never",
"spanNulls": true
},
"unit": "celsius" "unit": "celsius"
}, },
"overrides": [] "overrides": []
}, },
"gridPos": { "h": 10, "w": 24, "x": 0, "y": 19 }, "gridPos": {
"h": 10,
"w": 24,
"x": 0,
"y": 19
},
"id": 5, "id": 5,
"options": { "options": {
"legend": { "calcs": ["lastNotNull", "min", "max"], "displayMode": "table", "placement": "right" }, "legend": {
"tooltip": { "mode": "multi", "sort": "desc" } "calcs": [
"lastNotNull",
"min",
"max"
],
"displayMode": "table",
"placement": "right"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
}, },
"targets": [ "targets": [
{ {
"datasource": { "type": "influxdb", "uid": "ffptl25vzylfke" }, "datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"query": "SELECT mean(\"value\") FROM \"temperature\" WHERE $timeFilter AND (\"node\"='flur_oben' OR \"node\"='flur_unten' OR \"node\"='wohnstube' OR \"node\"='schlafzimmer' OR \"node\"='gaestezimmer' OR \"node\"='kueche' OR \"node\"='trockenraum') GROUP BY \"node\", time($__interval) fill(null)", "query": "SELECT mean(\"value\") FROM \"temperature\" WHERE $timeFilter AND (\"node\"='flur_oben' OR \"node\"='flur_unten' OR \"node\"='wohnstube' OR \"node\"='schlafzimmer' OR \"node\"='gaestezimmer' OR \"node\"='kueche' OR \"node\"='trockenraum') GROUP BY \"node\", time($__interval) fill(null)",
"rawQuery": true, "rawQuery": true,
"refId": "A", "refId": "A",
@ -220,24 +444,42 @@
"type": "timeseries" "type": "timeseries"
}, },
{ {
"datasource": { "type": "influxdb", "uid": "ffptl25vzylfke" }, "datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"custom": { "align": "auto", "cellOptions": { "type": "auto" } }, "custom": {
"align": "auto",
"cellOptions": {
"type": "auto"
}
},
"unit": "celsius" "unit": "celsius"
}, },
"overrides": [] "overrides": []
}, },
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 29 }, "gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 29
},
"id": 6, "id": 6,
"options": { "options": {
"cellHeight": "sm", "cellHeight": "sm",
"footer": { "show": false }, "footer": {
"show": false
},
"showHeader": true "showHeader": true
}, },
"targets": [ "targets": [
{ {
"datasource": { "type": "influxdb", "uid": "ffptl25vzylfke" }, "datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"query": "SELECT last(\"value\") AS \"aktuell\", min(\"value\") AS \"min\", max(\"value\") AS \"max\", mean(\"value\") AS \"mittel\" FROM \"temperature\" WHERE $timeFilter AND (\"node\"='flur_oben' OR \"node\"='flur_unten' OR \"node\"='wohnstube' OR \"node\"='schlafzimmer' OR \"node\"='gaestezimmer' OR \"node\"='kueche' OR \"node\"='trockenraum') GROUP BY \"node\"", "query": "SELECT last(\"value\") AS \"aktuell\", min(\"value\") AS \"min\", max(\"value\") AS \"max\", mean(\"value\") AS \"mittel\" FROM \"temperature\" WHERE $timeFilter AND (\"node\"='flur_oben' OR \"node\"='flur_unten' OR \"node\"='wohnstube' OR \"node\"='schlafzimmer' OR \"node\"='gaestezimmer' OR \"node\"='kueche' OR \"node\"='trockenraum') GROUP BY \"node\"",
"rawQuery": true, "rawQuery": true,
"refId": "A", "refId": "A",
@ -245,43 +487,455 @@
} }
], ],
"title": "Raumtemperaturen — Übersicht", "title": "Raumtemperaturen — Übersicht",
"transformations": [{ "id": "organize", "options": { "renameByName": { "node": "Raum" } } }], "transformations": [
{
"id": "organize",
"options": {
"renameByName": {
"node": "Raum"
}
}
}
],
"type": "table" "type": "table"
}, },
{ {
"datasource": { "type": "influxdb", "uid": "ffptl25vzylfke" }, "datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"color": { "mode": "palette-classic" }, "color": {
"custom": { "drawStyle": "bars", "fillOpacity": 80, "lineWidth": 1 }, "mode": "palette-classic"
},
"custom": {
"drawStyle": "bars",
"fillOpacity": 80,
"lineWidth": 1
},
"unit": "kwatth" "unit": "kwatth"
}, },
"overrides": [] "overrides": []
}, },
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 29 }, "gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 29
},
"id": 7, "id": 7,
"options": { "options": {
"legend": { "calcs": ["sum"], "displayMode": "table", "placement": "bottom" }, "legend": {
"tooltip": { "mode": "multi", "sort": "desc" } "calcs": [
"sum"
],
"displayMode": "table",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
}, },
"targets": [ "targets": [
{ {
"datasource": { "type": "influxdb", "uid": "ffptl25vzylfke" }, "datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"query": "SELECT difference(last(\"energy_wh_total\")) / 1000 FROM \"power\" WHERE $timeFilter GROUP BY \"node\", time(1h) fill(null)", "query": "SELECT difference(last(\"energy_wh_total\")) / 1000 FROM \"power\" WHERE $timeFilter GROUP BY \"node\", time(1h) fill(null)",
"rawQuery": true, "rawQuery": true,
"refId": "A", "refId": "A",
"resultFormat": "time_series" "resultFormat": "time_series"
} }
], ],
"title": "Klima-Verbrauch (kWh/h, aus Shelly-Zähler)", "title": "Verbrauch stündlich (kWh/h)",
"type": "timeseries",
"description": "Stündliche Differenz des Shelly-Zählers — Detailansicht, nicht Kalendertag."
},
{
"datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"description": "Differenz Shelly-Zähler energy_wh_total im Zeitraum (kWh). Historie erst ab Start der Aufzeichnung 31.07.2026.",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"decimals": 2,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "yellow",
"value": 5
},
{
"color": "orange",
"value": 15
},
{
"color": "red",
"value": 30
}
]
},
"unit": "kwatth"
},
"overrides": []
},
"gridPos": {
"h": 5,
"w": 6,
"x": 0,
"y": 37
},
"id": 10,
"options": {
"colorMode": "value",
"graphMode": "none",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto"
},
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"query": "SELECT (last(\"energy_wh_total\") - first(\"energy_wh_total\")) / 1000 AS \"kWh\" FROM \"power\" WHERE \"node\"='klima_flur_unten' AND $timeFilter",
"rawQuery": true,
"refId": "A",
"resultFormat": "time_series"
}
],
"title": "Verbrauch heute",
"type": "stat",
"timeFrom": "now/d",
"timeTo": "now"
},
{
"datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"description": "Differenz Shelly-Zähler energy_wh_total im Zeitraum (kWh). Historie erst ab Start der Aufzeichnung 31.07.2026.",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"decimals": 2,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "yellow",
"value": 5
},
{
"color": "orange",
"value": 15
},
{
"color": "red",
"value": 30
}
]
},
"unit": "kwatth"
},
"overrides": []
},
"gridPos": {
"h": 5,
"w": 6,
"x": 6,
"y": 37
},
"id": 11,
"options": {
"colorMode": "value",
"graphMode": "none",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto"
},
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"query": "SELECT (last(\"energy_wh_total\") - first(\"energy_wh_total\")) / 1000 AS \"kWh\" FROM \"power\" WHERE \"node\"='klima_flur_unten' AND $timeFilter",
"rawQuery": true,
"refId": "A",
"resultFormat": "time_series"
}
],
"title": "Verbrauch diese Woche",
"type": "stat",
"timeFrom": "now/w",
"timeTo": "now"
},
{
"datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"description": "Differenz Shelly-Zähler energy_wh_total im Zeitraum (kWh). Historie erst ab Start der Aufzeichnung 31.07.2026.",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"decimals": 2,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "yellow",
"value": 5
},
{
"color": "orange",
"value": 15
},
{
"color": "red",
"value": 30
}
]
},
"unit": "kwatth"
},
"overrides": []
},
"gridPos": {
"h": 5,
"w": 6,
"x": 12,
"y": 37
},
"id": 12,
"options": {
"colorMode": "value",
"graphMode": "none",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto"
},
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"query": "SELECT (last(\"energy_wh_total\") - first(\"energy_wh_total\")) / 1000 AS \"kWh\" FROM \"power\" WHERE \"node\"='klima_flur_unten' AND $timeFilter",
"rawQuery": true,
"refId": "A",
"resultFormat": "time_series"
}
],
"title": "Verbrauch dieser Monat",
"type": "stat",
"timeFrom": "now/M",
"timeTo": "now"
},
{
"datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"description": "Differenz Shelly-Zähler energy_wh_total im Zeitraum (kWh). Historie erst ab Start der Aufzeichnung 31.07.2026.",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"decimals": 2,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "yellow",
"value": 5
},
{
"color": "orange",
"value": 15
},
{
"color": "red",
"value": 30
}
]
},
"unit": "kwatth"
},
"overrides": []
},
"gridPos": {
"h": 5,
"w": 6,
"x": 18,
"y": 37
},
"id": 13,
"options": {
"colorMode": "value",
"graphMode": "none",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto"
},
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"query": "SELECT (last(\"energy_wh_total\") - first(\"energy_wh_total\")) / 1000 AS \"kWh\" FROM \"power\" WHERE \"node\"='klima_flur_unten' AND $timeFilter",
"rawQuery": true,
"refId": "A",
"resultFormat": "time_series"
}
],
"title": "Verbrauch dieses Jahr",
"type": "stat",
"timeFrom": "now/y",
"timeTo": "now"
},
{
"datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"description": "Tagesverbrauch Panasonic Flur unten aus Shelly-Zähler (max-min energy_wh_total je Kalendertag).",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "kWh",
"drawStyle": "bars",
"fillOpacity": 80,
"lineWidth": 1,
"showPoints": "never",
"spanNulls": false,
"stacking": {
"mode": "none",
"group": "A"
}
},
"decimals": 2,
"unit": "kwatth"
},
"overrides": []
},
"gridPos": {
"h": 9,
"w": 24,
"x": 0,
"y": 42
},
"id": 14,
"options": {
"legend": {
"calcs": [
"sum",
"mean",
"max"
],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "ffptl25vzylfke"
},
"alias": "Panasonic Flur unten",
"query": "SELECT (max(\"energy_wh_total\") - min(\"energy_wh_total\")) / 1000 AS \"kWh\" FROM \"power\" WHERE \"node\"='klima_flur_unten' AND $timeFilter GROUP BY time(1d) fill(none)",
"rawQuery": true,
"refId": "A",
"resultFormat": "time_series"
}
],
"title": "Verbrauch pro Tag (kWh) — Panasonic Flur unten",
"type": "timeseries" "type": "timeseries"
} }
], ],
"refresh": "30s", "refresh": "30s",
"schemaVersion": 39, "schemaVersion": 39,
"tags": ["klima", "sensors", "homelab"], "tags": [
"templating": { "list": [] }, "klima",
"time": { "from": "now-24h", "to": "now" }, "sensors",
"homelab"
],
"templating": {
"list": []
},
"time": {
"from": "now-24h",
"to": "now"
},
"timepicker": {}, "timepicker": {},
"timezone": "browser", "timezone": "browser",
"title": "Klimatisierung", "title": "Klimatisierung",

View file

@ -7,11 +7,13 @@
namepass = ["temperature", "io_state", "power", "node_status"] namepass = ["temperature", "io_state", "power", "node_status"]
# --- Raum-Satelliten: <raum>/temp (ohne oelraum — siehe aussen-Block) --- # --- Raum-Satelliten: <raum>/temp (ohne oelraum — siehe aussen-Block) ---
# 31.07.2026: schlafzimmer <-> flur_unten physisch vertauscht.
# MQTT-Topics bleiben (Firmware NODE_NAME), Influx-node hier korrigiert bis Reflash.
[[inputs.mqtt_consumer]] [[inputs.mqtt_consumer]]
servers = ["tcp://127.0.0.1:1883"] servers = ["tcp://127.0.0.1:1883"]
topics = [ topics = [
"kueche/temp", "wohnstube/temp", "schlafzimmer/temp", "kueche/temp", "wohnstube/temp",
"flur_unten/temp", "flur_oben/temp", "gaestezimmer/temp", "flur_oben/temp", "gaestezimmer/temp",
"garage/temp", "trockenraum/temp", "garage/temp", "trockenraum/temp",
] ]
data_format = "value" data_format = "value"
@ -23,6 +25,28 @@
measurement = "_/_" measurement = "_/_"
tags = "node/_" tags = "node/_"
# MQTT Topic schlafzimmer/temp = physisch Flur unten (~15C)
[[inputs.mqtt_consumer]]
servers = ["tcp://127.0.0.1:1883"]
topics = ["schlafzimmer/temp"]
data_format = "value"
data_type = "float"
name_override = "temperature"
topic_tag = ""
[inputs.mqtt_consumer.tags]
node = "flur_unten"
# MQTT Topic flur_unten/temp = physisch Schlafzimmer (~25C)
[[inputs.mqtt_consumer]]
servers = ["tcp://127.0.0.1:1883"]
topics = ["flur_unten/temp"]
data_format = "value"
data_type = "float"
name_override = "temperature"
topic_tag = ""
[inputs.mqtt_consumer.tags]
node = "schlafzimmer"
# --- Brunnen-VL: ex-Dachfuehler oelraum/temp (ESP8266) jetzt an Brunnenwasserleitung -> node=heizraum, sensor=brunnen_vl_zum_heizraum --- # --- Brunnen-VL: ex-Dachfuehler oelraum/temp (ESP8266) jetzt an Brunnenwasserleitung -> node=heizraum, sensor=brunnen_vl_zum_heizraum ---
[[inputs.mqtt_consumer]] [[inputs.mqtt_consumer]]
servers = ["tcp://127.0.0.1:1883"] servers = ["tcp://127.0.0.1:1883"]