From 26fc96a7aff57756217d624fb0b1c78134b95499 Mon Sep 17 00:00:00 2001 From: Micha Date: Sat, 13 Jun 2026 20:37:27 +0200 Subject: [PATCH] feat: add grafana solar pv dashboard from ha/solaredge Provisioniertes Dashboard "Solar PV System" (uid ha-solar-pv) auf der InfluxDB-HA-Datasource: Leistung (PV/Haus/Netz/Batterie), Live-Gauges, PV heute, Gesamt-/Lifetime-Produktion, 30-Tage-Produktion, Rekord-Tag, Netzbilanz. Angelehnt an Grafana-Dashboard 18753, auf SolarEdge skaliert. Co-Authored-By: Claude Fable 5 --- monitoring/grafana/dashboards/solar-pv.json | 166 ++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 monitoring/grafana/dashboards/solar-pv.json diff --git a/monitoring/grafana/dashboards/solar-pv.json b/monitoring/grafana/dashboards/solar-pv.json new file mode 100644 index 0000000..2bbfa6d --- /dev/null +++ b/monitoring/grafana/dashboards/solar-pv.json @@ -0,0 +1,166 @@ +{ + "uid": "ha-solar-pv", + "title": "Solar PV System", + "tags": ["solar", "solaredge", "homeassistant", "energy"], + "timezone": "browser", + "schemaVersion": 39, + "version": 1, + "refresh": "30s", + "time": { "from": "now-24h", "to": "now" }, + "templating": { "list": [] }, + "annotations": { "list": [] }, + "panels": [ + { + "id": 1, + "title": "Leistung", + "type": "timeseries", + "gridPos": { "h": 10, "w": 12, "x": 0, "y": 0 }, + "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, + "fieldConfig": { + "defaults": { "unit": "kwatt", "custom": { "drawStyle": "line", "fillOpacity": 10, "lineWidth": 2 } }, + "overrides": [ + { "matcher": { "id": "byFrameRefID", "options": "A" }, "properties": [ { "id": "displayName", "value": "PV" }, { "id": "color", "value": { "mode": "fixed", "fixedColor": "#f2b705" } }, { "id": "custom.fillOpacity", "value": 25 } ] }, + { "matcher": { "id": "byFrameRefID", "options": "B" }, "properties": [ { "id": "displayName", "value": "Haus" }, { "id": "color", "value": { "mode": "fixed", "fixedColor": "#f59f00" } } ] }, + { "matcher": { "id": "byFrameRefID", "options": "C" }, "properties": [ { "id": "displayName", "value": "Netzbezug" }, { "id": "color", "value": { "mode": "fixed", "fixedColor": "#fa5252" } } ] }, + { "matcher": { "id": "byFrameRefID", "options": "D" }, "properties": [ { "id": "displayName", "value": "Einspeisung" }, { "id": "color", "value": { "mode": "fixed", "fixedColor": "#4dabf7" } } ] }, + { "matcher": { "id": "byFrameRefID", "options": "E" }, "properties": [ { "id": "displayName", "value": "Speicher entladen" }, { "id": "color", "value": { "mode": "fixed", "fixedColor": "#d6336c" } } ] }, + { "matcher": { "id": "byFrameRefID", "options": "F" }, "properties": [ { "id": "displayName", "value": "Speicher laden" }, { "id": "color", "value": { "mode": "fixed", "fixedColor": "#37b24d" } } ] } + ] + }, + "options": { "legend": { "displayMode": "list", "placement": "bottom" }, "tooltip": { "mode": "multi" } }, + "targets": [ + { "refId": "A", "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, "rawQuery": true, "format": "time_series", "rawSql": "SELECT time, value FROM \"kW\" WHERE entity_id = 'solaredge_pv_live_power' AND $__timeFilter(time) ORDER BY time" }, + { "refId": "B", "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, "rawQuery": true, "format": "time_series", "rawSql": "SELECT time, value FROM \"kW\" WHERE entity_id = 'kallihome_live_load_power' AND $__timeFilter(time) ORDER BY time" }, + { "refId": "C", "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, "rawQuery": true, "format": "time_series", "rawSql": "SELECT time, value FROM \"kW\" WHERE entity_id = 'solaredge_grid_import_power' AND $__timeFilter(time) ORDER BY time" }, + { "refId": "D", "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, "rawQuery": true, "format": "time_series", "rawSql": "SELECT time, value FROM \"kW\" WHERE entity_id = 'solaredge_grid_export_power' AND $__timeFilter(time) ORDER BY time" }, + { "refId": "E", "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, "rawQuery": true, "format": "time_series", "rawSql": "SELECT time, value FROM \"kW\" WHERE entity_id = 'solaredge_battery_discharge_power' AND $__timeFilter(time) ORDER BY time" }, + { "refId": "F", "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, "rawQuery": true, "format": "time_series", "rawSql": "SELECT time, value FROM \"kW\" WHERE entity_id = 'solaredge_battery_charge_power' AND $__timeFilter(time) ORDER BY time" } + ] + }, + { + "id": 2, + "title": "Aktuelle PV-Produktion", + "type": "gauge", + "gridPos": { "h": 5, "w": 6, "x": 12, "y": 0 }, + "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, + "fieldConfig": { "defaults": { "unit": "kwatt", "min": 0, "max": 8, "thresholds": { "mode": "absolute", "steps": [ { "color": "dark-yellow", "value": null }, { "color": "yellow", "value": 1 }, { "color": "green", "value": 3 } ] } }, "overrides": [] }, + "options": { "reduceOptions": { "calcs": [ "lastNotNull" ] }, "showThresholdMarkers": true }, + "targets": [ { "refId": "A", "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, "rawQuery": true, "format": "time_series", "rawSql": "SELECT time, value FROM \"kW\" WHERE entity_id = 'solaredge_pv_live_power' AND $__timeFilter(time) ORDER BY time" } ] + }, + { + "id": 3, + "title": "PV produziert (heute)", + "type": "gauge", + "gridPos": { "h": 5, "w": 6, "x": 18, "y": 0 }, + "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, + "fieldConfig": { "defaults": { "unit": "kwatth", "min": 0, "max": 50, "thresholds": { "mode": "absolute", "steps": [ { "color": "dark-yellow", "value": null }, { "color": "yellow", "value": 5 }, { "color": "green", "value": 15 } ] } }, "overrides": [] }, + "options": { "reduceOptions": { "calcs": [ "lastNotNull" ] }, "showThresholdMarkers": true }, + "targets": [ { "refId": "A", "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, "rawQuery": true, "format": "time_series", "rawSql": "SELECT time, value FROM \"kWh\" WHERE entity_id = 'solaredge_pv_energy_today' AND $__timeFilter(time) ORDER BY time" } ] + }, + { + "id": 4, + "title": "Speicher-Ladestand", + "type": "gauge", + "gridPos": { "h": 5, "w": 6, "x": 12, "y": 5 }, + "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, + "fieldConfig": { "defaults": { "unit": "percent", "min": 0, "max": 100, "thresholds": { "mode": "absolute", "steps": [ { "color": "red", "value": null }, { "color": "yellow", "value": 20 }, { "color": "green", "value": 50 } ] } }, "overrides": [] }, + "options": { "reduceOptions": { "calcs": [ "lastNotNull" ] }, "showThresholdMarkers": true }, + "targets": [ { "refId": "A", "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, "rawQuery": true, "format": "time_series", "rawSql": "SELECT time, value FROM \"%\" WHERE entity_id = 'solaredge_local_i1_b1_state_of_energy' AND $__timeFilter(time) ORDER BY time" } ] + }, + { + "id": 5, + "title": "Tagesbilanz (heute)", + "type": "bargauge", + "gridPos": { "h": 5, "w": 6, "x": 18, "y": 5 }, + "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, + "fieldConfig": { + "defaults": { "unit": "kwatth", "min": 0, "color": { "mode": "fixed", "fixedColor": "#4dabf7" } }, + "overrides": [ + { "matcher": { "id": "byFrameRefID", "options": "A" }, "properties": [ { "id": "displayName", "value": "PV" }, { "id": "color", "value": { "mode": "fixed", "fixedColor": "#f2b705" } } ] }, + { "matcher": { "id": "byFrameRefID", "options": "B" }, "properties": [ { "id": "displayName", "value": "Netzbezug" }, { "id": "color", "value": { "mode": "fixed", "fixedColor": "#fa5252" } } ] }, + { "matcher": { "id": "byFrameRefID", "options": "C" }, "properties": [ { "id": "displayName", "value": "Einspeisung" }, { "id": "color", "value": { "mode": "fixed", "fixedColor": "#4dabf7" } } ] }, + { "matcher": { "id": "byFrameRefID", "options": "D" }, "properties": [ { "id": "displayName", "value": "Speicher entladen" }, { "id": "color", "value": { "mode": "fixed", "fixedColor": "#d6336c" } } ] } + ] + }, + "options": { "reduceOptions": { "calcs": [ "lastNotNull" ] }, "displayMode": "gradient", "orientation": "horizontal" }, + "targets": [ + { "refId": "A", "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, "rawQuery": true, "format": "time_series", "rawSql": "SELECT time, value FROM \"kWh\" WHERE entity_id = 'solaredge_pv_energy_today' AND $__timeFilter(time) ORDER BY time" }, + { "refId": "B", "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, "rawQuery": true, "format": "time_series", "rawSql": "SELECT time, value FROM \"kWh\" WHERE entity_id = 'solaredge_grid_import_today' AND $__timeFilter(time) ORDER BY time" }, + { "refId": "C", "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, "rawQuery": true, "format": "time_series", "rawSql": "SELECT time, value FROM \"kWh\" WHERE entity_id = 'solaredge_grid_export_today' AND $__timeFilter(time) ORDER BY time" }, + { "refId": "D", "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, "rawQuery": true, "format": "time_series", "rawSql": "SELECT time, value FROM \"kWh\" WHERE entity_id = 'solaredge_battery_discharge_today' AND $__timeFilter(time) ORDER BY time" } + ] + }, + { + "id": 6, + "title": "Tages-Produktion (30 Tage)", + "type": "timeseries", + "gridPos": { "h": 8, "w": 12, "x": 0, "y": 10 }, + "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, + "fieldConfig": { "defaults": { "unit": "kwatth", "color": { "mode": "fixed", "fixedColor": "#f2b705" }, "custom": { "drawStyle": "bars", "fillOpacity": 70, "lineWidth": 1 } }, "overrides": [] }, + "options": { "legend": { "displayMode": "hidden" }, "tooltip": { "mode": "single" } }, + "targets": [ { "refId": "A", "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, "rawQuery": true, "format": "time_series", "rawSql": "SELECT date_bin(INTERVAL '1 day', time) AS time, max(value) AS value FROM \"kWh\" WHERE entity_id = 'solaredge_pv_energy_today' AND $__timeFilter(time) GROUP BY 1 ORDER BY 1" } ] + }, + { + "id": 7, + "title": "Gesamt-Produktion", + "type": "stat", + "gridPos": { "h": 4, "w": 6, "x": 12, "y": 10 }, + "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, + "fieldConfig": { "defaults": { "unit": "kwatth", "color": { "mode": "fixed", "fixedColor": "#f2b705" } }, "overrides": [] }, + "options": { "reduceOptions": { "calcs": [ "lastNotNull" ] }, "colorMode": "value", "graphMode": "area", "textMode": "value" }, + "targets": [ { "refId": "A", "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, "rawQuery": true, "format": "time_series", "rawSql": "SELECT time, value FROM \"kWh\" WHERE entity_id = 'solaredge_local_i1_ac_energy' AND $__timeFilter(time) ORDER BY time" } ] + }, + { + "id": 8, + "title": "Rekord-Tag (max kWh)", + "type": "stat", + "gridPos": { "h": 4, "w": 6, "x": 18, "y": 10 }, + "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, + "fieldConfig": { "defaults": { "unit": "kwatth", "color": { "mode": "fixed", "fixedColor": "#37b24d" } }, "overrides": [] }, + "options": { "reduceOptions": { "calcs": [ "max" ] }, "colorMode": "value", "graphMode": "none", "textMode": "value" }, + "targets": [ { "refId": "A", "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, "rawQuery": true, "format": "time_series", "rawSql": "SELECT date_bin(INTERVAL '1 day', time) AS time, max(value) AS value FROM \"kWh\" WHERE entity_id = 'solaredge_pv_energy_today' AND $__timeFilter(time) GROUP BY 1 ORDER BY 1" } ] + }, + { + "id": 9, + "title": "Netzbilanz (heute)", + "type": "bargauge", + "gridPos": { "h": 4, "w": 12, "x": 12, "y": 14 }, + "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, + "fieldConfig": { + "defaults": { "unit": "kwatth", "min": 0 }, + "overrides": [ + { "matcher": { "id": "byFrameRefID", "options": "A" }, "properties": [ { "id": "displayName", "value": "Netzbezug" }, { "id": "color", "value": { "mode": "fixed", "fixedColor": "#fa5252" } } ] }, + { "matcher": { "id": "byFrameRefID", "options": "B" }, "properties": [ { "id": "displayName", "value": "Einspeisung" }, { "id": "color", "value": { "mode": "fixed", "fixedColor": "#4dabf7" } } ] } + ] + }, + "options": { "reduceOptions": { "calcs": [ "lastNotNull" ] }, "displayMode": "gradient", "orientation": "horizontal" }, + "targets": [ + { "refId": "A", "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, "rawQuery": true, "format": "time_series", "rawSql": "SELECT time, value FROM \"kWh\" WHERE entity_id = 'solaredge_grid_import_today' AND $__timeFilter(time) ORDER BY time" }, + { "refId": "B", "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, "rawQuery": true, "format": "time_series", "rawSql": "SELECT time, value FROM \"kWh\" WHERE entity_id = 'solaredge_grid_export_today' AND $__timeFilter(time) ORDER BY time" } + ] + }, + { + "id": 10, + "title": "Netz & Batterie (Verlauf)", + "type": "timeseries", + "gridPos": { "h": 7, "w": 24, "x": 0, "y": 18 }, + "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, + "fieldConfig": { + "defaults": { "unit": "kwatt", "custom": { "drawStyle": "line", "fillOpacity": 10, "lineWidth": 2 } }, + "overrides": [ + { "matcher": { "id": "byFrameRefID", "options": "A" }, "properties": [ { "id": "displayName", "value": "Netzbezug" }, { "id": "color", "value": { "mode": "fixed", "fixedColor": "#fa5252" } } ] }, + { "matcher": { "id": "byFrameRefID", "options": "B" }, "properties": [ { "id": "displayName", "value": "Einspeisung" }, { "id": "color", "value": { "mode": "fixed", "fixedColor": "#4dabf7" } } ] }, + { "matcher": { "id": "byFrameRefID", "options": "C" }, "properties": [ { "id": "displayName", "value": "Speicher laden" }, { "id": "color", "value": { "mode": "fixed", "fixedColor": "#37b24d" } } ] }, + { "matcher": { "id": "byFrameRefID", "options": "D" }, "properties": [ { "id": "displayName", "value": "Speicher entladen" }, { "id": "color", "value": { "mode": "fixed", "fixedColor": "#d6336c" } } ] } + ] + }, + "options": { "legend": { "displayMode": "list", "placement": "bottom" }, "tooltip": { "mode": "multi" } }, + "targets": [ + { "refId": "A", "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, "rawQuery": true, "format": "time_series", "rawSql": "SELECT time, value FROM \"kW\" WHERE entity_id = 'solaredge_grid_import_power' AND $__timeFilter(time) ORDER BY time" }, + { "refId": "B", "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, "rawQuery": true, "format": "time_series", "rawSql": "SELECT time, value FROM \"kW\" WHERE entity_id = 'solaredge_grid_export_power' AND $__timeFilter(time) ORDER BY time" }, + { "refId": "C", "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, "rawQuery": true, "format": "time_series", "rawSql": "SELECT time, value FROM \"kW\" WHERE entity_id = 'solaredge_battery_charge_power' AND $__timeFilter(time) ORDER BY time" }, + { "refId": "D", "datasource": { "type": "influxdb", "uid": "ha-weather-influx" }, "rawQuery": true, "format": "time_series", "rawSql": "SELECT time, value FROM \"kW\" WHERE entity_id = 'solaredge_battery_discharge_power' AND $__timeFilter(time) ORDER BY time" } + ] + } + ] +}