From f1745002bee4e9b7483ba4ef91c5dd3c583a5ffa Mon Sep 17 00:00:00 2001 From: Konstantin Date: Tue, 3 Mar 2026 12:14:05 +0100 Subject: [PATCH] feat(grafana): Add Canvas panel with visual flow connections MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update power-flow dashboard with: - Canvas panel showing graphical flow from sources to sinks - Visual connections between Solar/Grid/Battery and House - Visual connections from House to floor-level consumers (KG/EG/OG/DG) - Large consumers section with Server, Heat Pump, Battery Charging, Garden - Color-coded elements matching the flow colors 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../files/dashboards/power-flow.json | 656 +++++++++--------- 1 file changed, 343 insertions(+), 313 deletions(-) diff --git a/ansible/roles/grafana-observability/files/dashboards/power-flow.json b/ansible/roles/grafana-observability/files/dashboards/power-flow.json index 8d8aac00..b029f984 100644 --- a/ansible/roles/grafana-observability/files/dashboards/power-flow.json +++ b/ansible/roles/grafana-observability/files/dashboards/power-flow.json @@ -1,6 +1,6 @@ { "annotations": {"list": []}, - "description": "Graphical power flow visualization: Sources (Solar, Grid, Battery) -> House -> Floors (KG, EG, OG, DG) and Large Consumers", + "description": "Graphical power flow visualization: Sources -> House -> Floors", "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 1, @@ -11,291 +11,322 @@ ], "liveNow": true, "panels": [ - { - "collapsed": false, - "gridPos": {"h": 1, "w": 24, "x": 0, "y": 0}, - "id": 200, - "panels": [], - "title": "Power Sources", - "type": "row" - }, { "datasource": {"type": "prometheus", "uid": "prometheus"}, - "fieldConfig": { - "defaults": { - "color": {"mode": "fixed", "fixedColor": "yellow"}, - "mappings": [], - "thresholds": {"mode": "absolute", "steps": [{"color": "yellow", "value": null}]}, - "unit": "watt" - }, - "overrides": [] - }, - "gridPos": {"h": 5, "w": 8, "x": 0, "y": 1}, + "gridPos": {"h": 18, "w": 24, "x": 0, "y": 0}, "id": 1, - "options": {"colorMode": "background", "graphMode": "area", "justifyMode": "center", "orientation": "auto", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto"}, - "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=\"sensor.e3_vitocharge_03_solar_power\"}", "instant": true, "refId": "A"}], - "title": "Solar", - "type": "stat" - }, - { - "datasource": {"type": "prometheus", "uid": "prometheus"}, - "fieldConfig": { - "defaults": { - "color": {"mode": "thresholds"}, - "mappings": [ - {"options": {"from": 1, "to": 999999, "result": {"color": "orange", "index": 0, "text": "Import"}}, "type": "range"}, - {"options": {"from": -999999, "to": -1, "result": {"color": "green", "index": 1, "text": "Export"}}, "type": "range"}, - {"options": {"match": "null", "result": {"color": "text", "index": 2, "text": "0W"}}, "type": "special"} + "options": { + "inlineEditing": true, + "panZoom": false, + "root": { + "elements": [ + { + "background": {"color": {"fixed": "#F2CC0C"}}, + "border": {"color": {"fixed": "#000000"}, "width": 2}, + "config": {"align": "center", "color": {"fixed": "#000000"}, "size": 18, "text": {"field": "Value", "fixed": "", "mode": "field"}, "valign": "middle"}, + "constraint": {"horizontal": "left", "vertical": "top"}, + "name": "Solar", + "placement": {"height": 70, "left": 80, "top": 30, "width": 140}, + "type": "metric-value" + }, + { + "background": {"color": {"fixed": "transparent"}}, + "config": {"align": "center", "color": {"fixed": "#F2CC0C"}, "size": 14, "text": {"fixed": "☀️ SOLAR", "mode": "fixed"}, "valign": "middle"}, + "constraint": {"horizontal": "left", "vertical": "top"}, + "name": "LabelSolar", + "placement": {"height": 25, "left": 80, "top": 5, "width": 140}, + "type": "text" + }, + { + "background": {"color": {"fixed": "#3274D9"}}, + "border": {"color": {"fixed": "#000000"}, "width": 2}, + "config": {"align": "center", "color": {"fixed": "#FFFFFF"}, "size": 18, "text": {"field": "Value #B", "fixed": "", "mode": "field"}, "valign": "middle"}, + "constraint": {"horizontal": "left", "vertical": "top"}, + "name": "Grid", + "placement": {"height": 70, "left": 280, "top": 30, "width": 140}, + "type": "metric-value" + }, + { + "background": {"color": {"fixed": "transparent"}}, + "config": {"align": "center", "color": {"fixed": "#3274D9"}, "size": 14, "text": {"fixed": "⚡ GRID", "mode": "fixed"}, "valign": "middle"}, + "constraint": {"horizontal": "left", "vertical": "top"}, + "name": "LabelGrid", + "placement": {"height": 25, "left": 280, "top": 5, "width": 140}, + "type": "text" + }, + { + "background": {"color": {"fixed": "#73BF69"}}, + "border": {"color": {"fixed": "#000000"}, "width": 2}, + "config": {"align": "center", "color": {"fixed": "#000000"}, "size": 18, "text": {"field": "Value #C", "fixed": "", "mode": "field"}, "valign": "middle"}, + "constraint": {"horizontal": "left", "vertical": "top"}, + "name": "Battery", + "placement": {"height": 70, "left": 480, "top": 30, "width": 140}, + "type": "metric-value" + }, + { + "background": {"color": {"fixed": "transparent"}}, + "config": {"align": "center", "color": {"fixed": "#73BF69"}, "size": 14, "text": {"fixed": "🔋 BATTERY", "mode": "fixed"}, "valign": "middle"}, + "constraint": {"horizontal": "left", "vertical": "top"}, + "name": "LabelBattery", + "placement": {"height": 25, "left": 480, "top": 5, "width": 140}, + "type": "text" + }, + { + "background": {"color": {"fixed": "#FF9830"}}, + "border": {"color": {"fixed": "#FFFFFF"}, "width": 4}, + "config": {"align": "center", "color": {"fixed": "#000000"}, "size": 24, "text": {"field": "Value #D", "fixed": "", "mode": "field"}, "valign": "middle"}, + "constraint": {"horizontal": "left", "vertical": "top"}, + "name": "House", + "placement": {"height": 100, "left": 250, "top": 170, "width": 200}, + "type": "metric-value" + }, + { + "background": {"color": {"fixed": "transparent"}}, + "config": {"align": "center", "color": {"fixed": "#FF9830"}, "size": 18, "text": {"fixed": "🏠 HOUSE", "mode": "fixed"}, "valign": "middle"}, + "constraint": {"horizontal": "left", "vertical": "top"}, + "name": "LabelHouse", + "placement": {"height": 30, "left": 250, "top": 140, "width": 200}, + "type": "text" + }, + { + "background": {"color": {"fixed": "#1F60C4"}}, + "border": {"color": {"fixed": "#000000"}, "width": 2}, + "config": {"align": "center", "color": {"fixed": "#FFFFFF"}, "size": 16, "text": {"field": "Value #E", "fixed": "", "mode": "field"}, "valign": "middle"}, + "constraint": {"horizontal": "left", "vertical": "top"}, + "name": "Keller", + "placement": {"height": 55, "left": 30, "top": 340, "width": 120}, + "type": "metric-value" + }, + { + "background": {"color": {"fixed": "transparent"}}, + "config": {"align": "center", "color": {"fixed": "#1F60C4"}, "size": 12, "text": {"fixed": "Keller (KG)", "mode": "fixed"}, "valign": "middle"}, + "constraint": {"horizontal": "left", "vertical": "top"}, + "name": "LabelKeller", + "placement": {"height": 20, "left": 30, "top": 320, "width": 120}, + "type": "text" + }, + { + "background": {"color": {"fixed": "#37872D"}}, + "border": {"color": {"fixed": "#000000"}, "width": 2}, + "config": {"align": "center", "color": {"fixed": "#FFFFFF"}, "size": 16, "text": {"field": "Value #F", "fixed": "", "mode": "field"}, "valign": "middle"}, + "constraint": {"horizontal": "left", "vertical": "top"}, + "name": "EG", + "placement": {"height": 55, "left": 170, "top": 340, "width": 120}, + "type": "metric-value" + }, + { + "background": {"color": {"fixed": "transparent"}}, + "config": {"align": "center", "color": {"fixed": "#37872D"}, "size": 12, "text": {"fixed": "Erdgeschoss", "mode": "fixed"}, "valign": "middle"}, + "constraint": {"horizontal": "left", "vertical": "top"}, + "name": "LabelEG", + "placement": {"height": 20, "left": 170, "top": 320, "width": 120}, + "type": "text" + }, + { + "background": {"color": {"fixed": "#E0B400"}}, + "border": {"color": {"fixed": "#000000"}, "width": 2}, + "config": {"align": "center", "color": {"fixed": "#000000"}, "size": 16, "text": {"field": "Value #G", "fixed": "", "mode": "field"}, "valign": "middle"}, + "constraint": {"horizontal": "left", "vertical": "top"}, + "name": "OG", + "placement": {"height": 55, "left": 310, "top": 340, "width": 120}, + "type": "metric-value" + }, + { + "background": {"color": {"fixed": "transparent"}}, + "config": {"align": "center", "color": {"fixed": "#E0B400"}, "size": 12, "text": {"fixed": "Obergeschoss", "mode": "fixed"}, "valign": "middle"}, + "constraint": {"horizontal": "left", "vertical": "top"}, + "name": "LabelOG", + "placement": {"height": 20, "left": 310, "top": 320, "width": 120}, + "type": "text" + }, + { + "background": {"color": {"fixed": "#C4162A"}}, + "border": {"color": {"fixed": "#000000"}, "width": 2}, + "config": {"align": "center", "color": {"fixed": "#FFFFFF"}, "size": 16, "text": {"field": "Value #H", "fixed": "", "mode": "field"}, "valign": "middle"}, + "constraint": {"horizontal": "left", "vertical": "top"}, + "name": "DG", + "placement": {"height": 55, "left": 450, "top": 340, "width": 120}, + "type": "metric-value" + }, + { + "background": {"color": {"fixed": "transparent"}}, + "config": {"align": "center", "color": {"fixed": "#C4162A"}, "size": 12, "text": {"fixed": "Dachgeschoss", "mode": "fixed"}, "valign": "middle"}, + "constraint": {"horizontal": "left", "vertical": "top"}, + "name": "LabelDG", + "placement": {"height": 20, "left": 450, "top": 320, "width": 120}, + "type": "text" + }, + { + "background": {"color": {"fixed": "transparent"}}, + "config": {"align": "center", "color": {"fixed": "#AAAAAA"}, "size": 14, "text": {"fixed": "── Large Consumers ──", "mode": "fixed"}, "valign": "middle"}, + "constraint": {"horizontal": "left", "vertical": "top"}, + "name": "LabelLargeConsumers", + "placement": {"height": 25, "left": 200, "top": 415, "width": 300}, + "type": "text" + }, + { + "background": {"color": {"fixed": "#8F3BB8"}}, + "border": {"color": {"fixed": "#000000"}, "width": 2}, + "config": {"align": "center", "color": {"fixed": "#FFFFFF"}, "size": 14, "text": {"field": "Value #I", "fixed": "", "mode": "field"}, "valign": "middle"}, + "constraint": {"horizontal": "left", "vertical": "top"}, + "name": "Server", + "placement": {"height": 50, "left": 30, "top": 450, "width": 130}, + "type": "metric-value" + }, + { + "background": {"color": {"fixed": "transparent"}}, + "config": {"align": "center", "color": {"fixed": "#8F3BB8"}, "size": 11, "text": {"fixed": "🖥️ Server", "mode": "fixed"}, "valign": "middle"}, + "constraint": {"horizontal": "left", "vertical": "top"}, + "name": "LabelServer", + "placement": {"height": 20, "left": 30, "top": 500, "width": 130}, + "type": "text" + }, + { + "background": {"color": {"fixed": "#5794F2"}}, + "border": {"color": {"fixed": "#000000"}, "width": 2}, + "config": {"align": "center", "color": {"fixed": "#FFFFFF"}, "size": 14, "text": {"field": "Value #K", "fixed": "", "mode": "field"}, "valign": "middle"}, + "constraint": {"horizontal": "left", "vertical": "top"}, + "name": "HeatPump", + "placement": {"height": 50, "left": 180, "top": 450, "width": 130}, + "type": "metric-value" + }, + { + "background": {"color": {"fixed": "transparent"}}, + "config": {"align": "center", "color": {"fixed": "#5794F2"}, "size": 11, "text": {"fixed": "🌡️ Heat Pump", "mode": "fixed"}, "valign": "middle"}, + "constraint": {"horizontal": "left", "vertical": "top"}, + "name": "LabelHeatPump", + "placement": {"height": 20, "left": 180, "top": 500, "width": 130}, + "type": "text" + }, + { + "background": {"color": {"fixed": "#73BF69"}}, + "border": {"color": {"fixed": "#000000"}, "width": 2}, + "config": {"align": "center", "color": {"fixed": "#000000"}, "size": 14, "text": {"field": "Value #J", "fixed": "", "mode": "field"}, "valign": "middle"}, + "constraint": {"horizontal": "left", "vertical": "top"}, + "name": "BatteryCharge", + "placement": {"height": 50, "left": 330, "top": 450, "width": 130}, + "type": "metric-value" + }, + { + "background": {"color": {"fixed": "transparent"}}, + "config": {"align": "center", "color": {"fixed": "#73BF69"}, "size": 11, "text": {"fixed": "🔋 Battery Charging", "mode": "fixed"}, "valign": "middle"}, + "constraint": {"horizontal": "left", "vertical": "top"}, + "name": "LabelBatteryCharge", + "placement": {"height": 20, "left": 330, "top": 500, "width": 130}, + "type": "text" + }, + { + "background": {"color": {"fixed": "#96D98D"}}, + "border": {"color": {"fixed": "#000000"}, "width": 2}, + "config": {"align": "center", "color": {"fixed": "#000000"}, "size": 14, "text": {"field": "Value #L", "fixed": "", "mode": "field"}, "valign": "middle"}, + "constraint": {"horizontal": "left", "vertical": "top"}, + "name": "Garden", + "placement": {"height": 50, "left": 480, "top": 450, "width": 130}, + "type": "metric-value" + }, + { + "background": {"color": {"fixed": "transparent"}}, + "config": {"align": "center", "color": {"fixed": "#96D98D"}, "size": 11, "text": {"fixed": "🌳 Garden", "mode": "fixed"}, "valign": "middle"}, + "constraint": {"horizontal": "left", "vertical": "top"}, + "name": "LabelGarden", + "placement": {"height": 20, "left": 480, "top": 500, "width": 130}, + "type": "text" + } ], - "thresholds": {"mode": "absolute", "steps": [{"color": "green", "value": null}, {"color": "orange", "value": 1}]}, - "unit": "watt" - }, - "overrides": [] - }, - "gridPos": {"h": 5, "w": 8, "x": 8, "y": 1}, - "id": 2, - "options": {"colorMode": "background", "graphMode": "area", "justifyMode": "center", "orientation": "auto", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "value_and_name"}, - "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{friendly_name=\"Smart Meter Sum active instantaneous power\"}", "legendFormat": "Grid", "instant": true, "refId": "A"}], - "title": "Grid", - "description": "Positive = Import, Negative = Export", - "type": "stat" - }, - { - "datasource": {"type": "prometheus", "uid": "prometheus"}, - "fieldConfig": { - "defaults": { - "color": {"mode": "thresholds"}, - "mappings": [], - "max": 100, - "min": 0, - "thresholds": {"mode": "absolute", "steps": [{"color": "red", "value": null}, {"color": "yellow", "value": 20}, {"color": "green", "value": 50}]}, - "unit": "percent" - }, - "overrides": [] - }, - "gridPos": {"h": 5, "w": 4, "x": 16, "y": 1}, - "id": 3, - "options": {"minVizHeight": 75, "minVizWidth": 75, "orientation": "auto", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "showThresholdLabels": false, "showThresholdMarkers": true}, - "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_battery_percent{entity=\"sensor.e3_vitocharge_03_battery\"}", "instant": true, "refId": "A"}], - "title": "Battery", - "type": "gauge" - }, - { - "datasource": {"type": "prometheus", "uid": "prometheus"}, - "fieldConfig": { - "defaults": { - "color": {"mode": "thresholds"}, - "mappings": [ - {"options": {"from": 1, "to": 999999, "result": {"color": "green", "index": 0, "text": "Charging ${__value.raw}W"}}, "type": "range"}, - {"options": {"from": -999999, "to": -1, "result": {"color": "blue", "index": 1, "text": "Discharging ${__value.raw}W"}}, "type": "range"}, - {"options": {"match": "null", "result": {"color": "text", "index": 2, "text": "Idle"}}, "type": "special"} + "connections": [ + { + "color": {"fixed": "#F2CC0C"}, + "lineWidth": 3, + "path": "straight", + "size": {"fixed": 10, "max": 10, "min": 1}, + "source": {"name": "Solar"}, + "target": {"name": "House"}, + "vertices": [] + }, + { + "color": {"fixed": "#3274D9"}, + "lineWidth": 3, + "path": "straight", + "size": {"fixed": 10, "max": 10, "min": 1}, + "source": {"name": "Grid"}, + "target": {"name": "House"}, + "vertices": [] + }, + { + "color": {"fixed": "#73BF69"}, + "lineWidth": 3, + "path": "straight", + "size": {"fixed": 10, "max": 10, "min": 1}, + "source": {"name": "Battery"}, + "target": {"name": "House"}, + "vertices": [] + }, + { + "color": {"fixed": "#1F60C4"}, + "lineWidth": 2, + "path": "straight", + "size": {"fixed": 8, "max": 10, "min": 1}, + "source": {"name": "House"}, + "target": {"name": "Keller"}, + "vertices": [] + }, + { + "color": {"fixed": "#37872D"}, + "lineWidth": 2, + "path": "straight", + "size": {"fixed": 8, "max": 10, "min": 1}, + "source": {"name": "House"}, + "target": {"name": "EG"}, + "vertices": [] + }, + { + "color": {"fixed": "#E0B400"}, + "lineWidth": 2, + "path": "straight", + "size": {"fixed": 8, "max": 10, "min": 1}, + "source": {"name": "House"}, + "target": {"name": "OG"}, + "vertices": [] + }, + { + "color": {"fixed": "#C4162A"}, + "lineWidth": 2, + "path": "straight", + "size": {"fixed": 8, "max": 10, "min": 1}, + "source": {"name": "House"}, + "target": {"name": "DG"}, + "vertices": [] + } ], - "thresholds": {"mode": "absolute", "steps": [{"color": "blue", "value": null}, {"color": "green", "value": 1}]}, - "unit": "watt" + "name": "Element 1679776051697", + "type": "frame" }, - "overrides": [] + "showAdvancedTypes": true }, - "gridPos": {"h": 5, "w": 4, "x": 20, "y": 1}, - "id": 4, - "options": {"colorMode": "background", "graphMode": "none", "justifyMode": "center", "orientation": "auto", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "value_and_name"}, - "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=\"sensor.e3_vitocharge_03_battery_power\"} * -1", "legendFormat": "Battery", "instant": true, "refId": "A"}], - "title": "Battery Flow", - "type": "stat" + "targets": [ + {"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=\"sensor.e3_vitocharge_03_solar_power\"}", "format": "table", "instant": true, "refId": "A"}, + {"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{friendly_name=\"Smart Meter Sum active instantaneous power\"}", "format": "table", "instant": true, "refId": "B"}, + {"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_battery_percent{entity=\"sensor.e3_vitocharge_03_battery\"}", "format": "table", "instant": true, "refId": "C"}, + {"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "clamp_min(homeassistant_sensor_power_w{entity=\"sensor.e3_vitocharge_03_solar_power\"} + homeassistant_sensor_power_w{entity=\"sensor.e3_vitocharge_03_battery_power\"} + homeassistant_sensor_power_w{friendly_name=\"Smart Meter Sum active instantaneous power\"}, 0)", "format": "table", "instant": true, "refId": "D"}, + {"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=\"sensor.keller_power\"}", "format": "table", "instant": true, "refId": "E"}, + {"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=\"sensor.erdgeschoss_power\"}", "format": "table", "instant": true, "refId": "F"}, + {"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=\"sensor.obergeschoss_power\"}", "format": "table", "instant": true, "refId": "G"}, + {"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=\"sensor.dachgeschoss_power\"}", "format": "table", "instant": true, "refId": "H"}, + {"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=\"sensor.keller_server_power\"}", "format": "table", "instant": true, "refId": "I"}, + {"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=\"sensor.e3_vitocharge_03_battery_power_in_absolute\"}", "format": "table", "instant": true, "refId": "J"}, + {"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=\"sensor.stromverbrauch_heizungsanlage\"}", "format": "table", "instant": true, "refId": "K"}, + {"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=\"sensor.eg_garten_power\"} or homeassistant_sensor_power_w{entity=\"sensor.eg_garten_teichpumpe_power_2\"}", "format": "table", "instant": true, "refId": "L"} + ], + "title": "Power Flow Diagram", + "transformations": [], + "type": "canvas" }, { "collapsed": false, - "gridPos": {"h": 1, "w": 24, "x": 0, "y": 6}, - "id": 201, + "gridPos": {"h": 1, "w": 24, "x": 0, "y": 18}, + "id": 100, "panels": [], - "title": "House Total", - "type": "row" - }, - { - "datasource": {"type": "prometheus", "uid": "prometheus"}, - "fieldConfig": { - "defaults": { - "color": {"mode": "thresholds"}, - "mappings": [], - "thresholds": {"mode": "absolute", "steps": [{"color": "green", "value": null}, {"color": "yellow", "value": 1000}, {"color": "orange", "value": 2000}, {"color": "red", "value": 4000}]}, - "unit": "watt" - }, - "overrides": [] - }, - "gridPos": {"h": 5, "w": 24, "x": 0, "y": 7}, - "id": 10, - "options": {"colorMode": "background", "graphMode": "area", "justifyMode": "center", "orientation": "horizontal", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto"}, - "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "clamp_min(homeassistant_sensor_power_w{entity=\"sensor.e3_vitocharge_03_solar_power\"} + homeassistant_sensor_power_w{entity=\"sensor.e3_vitocharge_03_battery_power\"} + homeassistant_sensor_power_w{friendly_name=\"Smart Meter Sum active instantaneous power\"}, 0)", "instant": true, "refId": "A"}], - "title": "Total House Consumption", - "description": "Calculated: Solar + Battery Flow + Grid Flow", - "type": "stat" - }, - { - "collapsed": false, - "gridPos": {"h": 1, "w": 24, "x": 0, "y": 12}, - "id": 202, - "panels": [], - "title": "Consumption by Floor", - "type": "row" - }, - { - "datasource": {"type": "prometheus", "uid": "prometheus"}, - "fieldConfig": { - "defaults": { - "color": {"mode": "thresholds"}, - "mappings": [], - "thresholds": {"mode": "absolute", "steps": [{"color": "green", "value": null}, {"color": "yellow", "value": 200}, {"color": "orange", "value": 500}, {"color": "red", "value": 1000}]}, - "unit": "watt" - }, - "overrides": [] - }, - "gridPos": {"h": 6, "w": 6, "x": 0, "y": 13}, - "id": 20, - "options": {"colorMode": "background", "graphMode": "area", "justifyMode": "center", "orientation": "auto", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto"}, - "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=\"sensor.keller_power\"}", "instant": true, "refId": "A"}], - "title": "KG - Keller", - "type": "stat" - }, - { - "datasource": {"type": "prometheus", "uid": "prometheus"}, - "fieldConfig": { - "defaults": { - "color": {"mode": "thresholds"}, - "mappings": [], - "thresholds": {"mode": "absolute", "steps": [{"color": "green", "value": null}, {"color": "yellow", "value": 200}, {"color": "orange", "value": 500}, {"color": "red", "value": 1000}]}, - "unit": "watt" - }, - "overrides": [] - }, - "gridPos": {"h": 6, "w": 6, "x": 6, "y": 13}, - "id": 21, - "options": {"colorMode": "background", "graphMode": "area", "justifyMode": "center", "orientation": "auto", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto"}, - "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=\"sensor.erdgeschoss_power\"}", "instant": true, "refId": "A"}], - "title": "EG - Erdgeschoss", - "type": "stat" - }, - { - "datasource": {"type": "prometheus", "uid": "prometheus"}, - "fieldConfig": { - "defaults": { - "color": {"mode": "thresholds"}, - "mappings": [], - "thresholds": {"mode": "absolute", "steps": [{"color": "green", "value": null}, {"color": "yellow", "value": 200}, {"color": "orange", "value": 500}, {"color": "red", "value": 1000}]}, - "unit": "watt" - }, - "overrides": [] - }, - "gridPos": {"h": 6, "w": 6, "x": 12, "y": 13}, - "id": 22, - "options": {"colorMode": "background", "graphMode": "area", "justifyMode": "center", "orientation": "auto", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto"}, - "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=\"sensor.obergeschoss_power\"}", "instant": true, "refId": "A"}], - "title": "OG - Obergeschoss", - "type": "stat" - }, - { - "datasource": {"type": "prometheus", "uid": "prometheus"}, - "fieldConfig": { - "defaults": { - "color": {"mode": "thresholds"}, - "mappings": [], - "thresholds": {"mode": "absolute", "steps": [{"color": "green", "value": null}, {"color": "yellow", "value": 200}, {"color": "orange", "value": 500}, {"color": "red", "value": 1000}]}, - "unit": "watt" - }, - "overrides": [] - }, - "gridPos": {"h": 6, "w": 6, "x": 18, "y": 13}, - "id": 23, - "options": {"colorMode": "background", "graphMode": "area", "justifyMode": "center", "orientation": "auto", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto"}, - "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=\"sensor.dachgeschoss_power\"}", "instant": true, "refId": "A"}], - "title": "DG - Dachgeschoss", - "type": "stat" - }, - { - "collapsed": false, - "gridPos": {"h": 1, "w": 24, "x": 0, "y": 19}, - "id": 203, - "panels": [], - "title": "Large Consumers", - "type": "row" - }, - { - "datasource": {"type": "prometheus", "uid": "prometheus"}, - "fieldConfig": { - "defaults": { - "color": {"mode": "thresholds"}, - "mappings": [], - "thresholds": {"mode": "absolute", "steps": [{"color": "green", "value": null}, {"color": "yellow", "value": 200}, {"color": "orange", "value": 400}, {"color": "red", "value": 600}]}, - "unit": "watt" - }, - "overrides": [] - }, - "gridPos": {"h": 5, "w": 6, "x": 0, "y": 20}, - "id": 30, - "options": {"colorMode": "background", "graphMode": "area", "justifyMode": "center", "orientation": "auto", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto"}, - "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=\"sensor.keller_server_power\"}", "instant": true, "refId": "A"}], - "title": "Server", - "type": "stat" - }, - { - "datasource": {"type": "prometheus", "uid": "prometheus"}, - "fieldConfig": { - "defaults": { - "color": {"mode": "thresholds"}, - "mappings": [], - "thresholds": {"mode": "absolute", "steps": [{"color": "blue", "value": null}]}, - "unit": "watt" - }, - "overrides": [] - }, - "gridPos": {"h": 5, "w": 6, "x": 6, "y": 20}, - "id": 31, - "options": {"colorMode": "background", "graphMode": "area", "justifyMode": "center", "orientation": "auto", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto"}, - "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=\"sensor.e3_vitocharge_03_battery_power_in_absolute\"}", "instant": true, "refId": "A"}], - "title": "Battery Charging", - "type": "stat" - }, - { - "datasource": {"type": "prometheus", "uid": "prometheus"}, - "fieldConfig": { - "defaults": { - "color": {"mode": "thresholds"}, - "mappings": [], - "thresholds": {"mode": "absolute", "steps": [{"color": "purple", "value": null}]}, - "unit": "kwh" - }, - "overrides": [] - }, - "gridPos": {"h": 5, "w": 6, "x": 12, "y": 20}, - "id": 32, - "options": {"colorMode": "background", "graphMode": "none", "justifyMode": "center", "orientation": "auto", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto"}, - "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_energy_kwh{entity=\"sensor.e3_vitocal_energy_consumption_today\"}", "instant": true, "refId": "A"}], - "title": "Heat Pump Today", - "description": "Vitocal energy consumption today", - "type": "stat" - }, - { - "datasource": {"type": "prometheus", "uid": "prometheus"}, - "fieldConfig": { - "defaults": { - "color": {"mode": "thresholds"}, - "mappings": [], - "thresholds": {"mode": "absolute", "steps": [{"color": "green", "value": null}]}, - "unit": "watt" - }, - "overrides": [] - }, - "gridPos": {"h": 5, "w": 6, "x": 18, "y": 20}, - "id": 33, - "options": {"colorMode": "background", "graphMode": "area", "justifyMode": "center", "orientation": "auto", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto"}, - "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=\"sensor.garten_power\"}", "instant": true, "refId": "A"}], - "title": "Garden", - "type": "stat" - }, - { - "collapsed": false, - "gridPos": {"h": 1, "w": 24, "x": 0, "y": 25}, - "id": 204, - "panels": [], - "title": "Floor Breakdown", + "title": "Floor Details", "type": "row" }, { @@ -309,11 +340,11 @@ }, "overrides": [] }, - "gridPos": {"h": 8, "w": 12, "x": 0, "y": 26}, - "id": 40, + "gridPos": {"h": 8, "w": 6, "x": 0, "y": 19}, + "id": 20, "options": {"displayMode": "lcd", "minVizHeight": 10, "minVizWidth": 0, "orientation": "horizontal", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "showUnfilled": true, "valueMode": "color"}, "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=~\"sensor.keller_.*_power\", entity!=\"sensor.keller_power\"}", "legendFormat": "{{friendly_name}}", "refId": "A"}], - "title": "Keller Breakdown", + "title": "Keller", "type": "bargauge" }, { @@ -327,11 +358,11 @@ }, "overrides": [] }, - "gridPos": {"h": 8, "w": 12, "x": 12, "y": 26}, - "id": 41, + "gridPos": {"h": 8, "w": 6, "x": 6, "y": 19}, + "id": 21, "options": {"displayMode": "lcd", "minVizHeight": 10, "minVizWidth": 0, "orientation": "horizontal", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "showUnfilled": true, "valueMode": "color"}, - "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=~\"sensor.eg_.*_power|sensor.erdgeschoss_.*\", entity!=\"sensor.erdgeschoss_power\"} > 1", "legendFormat": "{{friendly_name}}", "refId": "A"}], - "title": "EG Breakdown", + "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=~\"sensor.eg_.*_power\"} > 1", "legendFormat": "{{friendly_name}}", "refId": "A"}], + "title": "Erdgeschoss", "type": "bargauge" }, { @@ -345,11 +376,11 @@ }, "overrides": [] }, - "gridPos": {"h": 8, "w": 12, "x": 0, "y": 34}, - "id": 42, + "gridPos": {"h": 8, "w": 6, "x": 12, "y": 19}, + "id": 22, "options": {"displayMode": "lcd", "minVizHeight": 10, "minVizWidth": 0, "orientation": "horizontal", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "showUnfilled": true, "valueMode": "color"}, - "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=~\"sensor.og_.*_power|sensor.obergeschoss_.*\", entity!=\"sensor.obergeschoss_power\"} > 0.5", "legendFormat": "{{friendly_name}}", "refId": "A"}], - "title": "OG Breakdown", + "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=~\"sensor.og_.*_power\"} > 0.5", "legendFormat": "{{friendly_name}}", "refId": "A"}], + "title": "Obergeschoss", "type": "bargauge" }, { @@ -363,17 +394,17 @@ }, "overrides": [] }, - "gridPos": {"h": 8, "w": 12, "x": 12, "y": 34}, - "id": 43, + "gridPos": {"h": 8, "w": 6, "x": 18, "y": 19}, + "id": 23, "options": {"displayMode": "lcd", "minVizHeight": 10, "minVizWidth": 0, "orientation": "horizontal", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "showUnfilled": true, "valueMode": "color"}, - "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=~\"sensor.dg_.*_power|sensor.dachgeschoss_.*\", entity!=\"sensor.dachgeschoss_power\"} > 0.5", "legendFormat": "{{friendly_name}}", "refId": "A"}], - "title": "DG Breakdown", + "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=~\"sensor.dg_.*_power\"} > 0.5", "legendFormat": "{{friendly_name}}", "refId": "A"}], + "title": "Dachgeschoss", "type": "bargauge" }, { "collapsed": false, - "gridPos": {"h": 1, "w": 24, "x": 0, "y": 42}, - "id": 205, + "gridPos": {"h": 1, "w": 24, "x": 0, "y": 27}, + "id": 101, "panels": [], "title": "Power Flow History", "type": "row" @@ -395,8 +426,8 @@ {"matcher": {"id": "byName", "options": "House"}, "properties": [{"id": "color", "value": {"fixedColor": "orange", "mode": "fixed"}}]} ] }, - "gridPos": {"h": 10, "w": 24, "x": 0, "y": 43}, - "id": 50, + "gridPos": {"h": 10, "w": 24, "x": 0, "y": 28}, + "id": 30, "options": {"legend": {"calcs": ["mean", "max", "lastNotNull"], "displayMode": "table", "placement": "right", "showLegend": true}, "tooltip": {"mode": "multi", "sort": "desc"}}, "targets": [ {"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=\"sensor.e3_vitocharge_03_solar_power\"}", "legendFormat": "Solar", "refId": "A"}, @@ -405,7 +436,6 @@ {"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "clamp_min(homeassistant_sensor_power_w{entity=\"sensor.e3_vitocharge_03_solar_power\"} + homeassistant_sensor_power_w{entity=\"sensor.e3_vitocharge_03_battery_power\"} + homeassistant_sensor_power_w{friendly_name=\"Smart Meter Sum active instantaneous power\"}, 0)", "legendFormat": "House", "refId": "D"} ], "title": "Power Sources & Consumption", - "description": "Solar (production), Battery (positive=discharge), Grid (positive=import, negative=export), House (consumption)", "type": "timeseries" }, { @@ -425,8 +455,8 @@ {"matcher": {"id": "byName", "options": "Dachgeschoss"}, "properties": [{"id": "color", "value": {"fixedColor": "dark-red", "mode": "fixed"}}]} ] }, - "gridPos": {"h": 8, "w": 24, "x": 0, "y": 53}, - "id": 51, + "gridPos": {"h": 8, "w": 24, "x": 0, "y": 38}, + "id": 31, "options": {"legend": {"calcs": ["mean", "max", "lastNotNull"], "displayMode": "table", "placement": "right", "showLegend": true}, "tooltip": {"mode": "multi", "sort": "desc"}}, "targets": [ {"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_power_w{entity=\"sensor.keller_power\"}", "legendFormat": "Keller", "refId": "A"}, @@ -439,8 +469,8 @@ }, { "collapsed": false, - "gridPos": {"h": 1, "w": 24, "x": 0, "y": 61}, - "id": 206, + "gridPos": {"h": 1, "w": 24, "x": 0, "y": 46}, + "id": 102, "panels": [], "title": "Energy Statistics", "type": "row" @@ -451,8 +481,8 @@ "defaults": {"color": {"mode": "thresholds"}, "mappings": [], "thresholds": {"mode": "absolute", "steps": [{"color": "yellow", "value": null}]}, "unit": "kwh"}, "overrides": [] }, - "gridPos": {"h": 4, "w": 4, "x": 0, "y": 62}, - "id": 60, + "gridPos": {"h": 4, "w": 4, "x": 0, "y": 47}, + "id": 40, "options": {"colorMode": "value", "graphMode": "area", "justifyMode": "center", "orientation": "auto", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto"}, "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_energy_kwh{entity=\"sensor.e3_vitocharge_03_solar_energy_production_today\"}", "instant": true, "refId": "A"}], "title": "Solar Today", @@ -464,8 +494,8 @@ "defaults": {"color": {"mode": "thresholds"}, "mappings": [], "thresholds": {"mode": "absolute", "steps": [{"color": "yellow", "value": null}]}, "unit": "kwh"}, "overrides": [] }, - "gridPos": {"h": 4, "w": 4, "x": 4, "y": 62}, - "id": 61, + "gridPos": {"h": 4, "w": 4, "x": 4, "y": 47}, + "id": 41, "options": {"colorMode": "value", "graphMode": "none", "justifyMode": "center", "orientation": "auto", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto"}, "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_energy_kwh{entity=\"sensor.e3_vitocharge_03_solar_energy_production_total\"}", "instant": true, "refId": "A"}], "title": "Solar Total", @@ -477,8 +507,8 @@ "defaults": {"color": {"mode": "thresholds"}, "mappings": [], "thresholds": {"mode": "absolute", "steps": [{"color": "green", "value": null}]}, "unit": "kwh"}, "overrides": [] }, - "gridPos": {"h": 4, "w": 4, "x": 8, "y": 62}, - "id": 62, + "gridPos": {"h": 4, "w": 4, "x": 8, "y": 47}, + "id": 42, "options": {"colorMode": "value", "graphMode": "none", "justifyMode": "center", "orientation": "auto", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto"}, "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_energy_wh{entity=\"sensor.e3_vitocharge_03_energy_export_to_grid\"} / 1000", "instant": true, "refId": "A"}], "title": "Grid Export", @@ -490,8 +520,8 @@ "defaults": {"color": {"mode": "thresholds"}, "mappings": [], "thresholds": {"mode": "absolute", "steps": [{"color": "orange", "value": null}]}, "unit": "kwh"}, "overrides": [] }, - "gridPos": {"h": 4, "w": 4, "x": 12, "y": 62}, - "id": 63, + "gridPos": {"h": 4, "w": 4, "x": 12, "y": 47}, + "id": 43, "options": {"colorMode": "value", "graphMode": "none", "justifyMode": "center", "orientation": "auto", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto"}, "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_energy_wh{entity=\"sensor.e3_vitocharge_03_energy_import_from_grid\"} / 1000", "instant": true, "refId": "A"}], "title": "Grid Import", @@ -503,8 +533,8 @@ "defaults": {"color": {"mode": "thresholds"}, "decimals": 1, "mappings": [], "max": 100, "min": 0, "thresholds": {"mode": "absolute", "steps": [{"color": "red", "value": null}, {"color": "yellow", "value": 50}, {"color": "green", "value": 70}]}, "unit": "percent"}, "overrides": [] }, - "gridPos": {"h": 4, "w": 4, "x": 16, "y": 62}, - "id": 64, + "gridPos": {"h": 4, "w": 4, "x": 16, "y": 47}, + "id": 44, "options": {"minVizHeight": 75, "minVizWidth": 75, "orientation": "auto", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "showThresholdLabels": false, "showThresholdMarkers": true}, "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "(scalar(homeassistant_sensor_energy_kwh{entity=\"sensor.e3_vitocharge_03_solar_energy_production_total\"}) - scalar(homeassistant_sensor_energy_wh{entity=\"sensor.e3_vitocharge_03_energy_export_to_grid\"}) / 1000) / scalar(homeassistant_sensor_energy_kwh{entity=\"sensor.e3_vitocharge_03_solar_energy_production_total\"}) * 100", "instant": true, "refId": "A"}], "title": "Self-Consumption", @@ -516,11 +546,11 @@ "defaults": {"color": {"mode": "thresholds"}, "mappings": [], "thresholds": {"mode": "absolute", "steps": [{"color": "purple", "value": null}]}, "unit": "kwh"}, "overrides": [] }, - "gridPos": {"h": 4, "w": 4, "x": 20, "y": 62}, - "id": 65, + "gridPos": {"h": 4, "w": 4, "x": 20, "y": 47}, + "id": 45, "options": {"colorMode": "value", "graphMode": "none", "justifyMode": "center", "orientation": "auto", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto"}, "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "homeassistant_sensor_energy_kwh{entity=\"sensor.e3_vitocal_heating_energy_consumption_this_year\"} + homeassistant_sensor_energy_kwh{entity=\"sensor.e3_vitocal_dhw_energy_consumption_this_year\"}", "instant": true, "refId": "A"}], - "title": "Heat Pump This Year", + "title": "Heat Pump Year", "type": "stat" } ], @@ -534,6 +564,6 @@ "timezone": "", "title": "Power Flow", "uid": "power-flow", - "version": 2, + "version": 4, "weekStart": "" }