From 44d43b0ac84be6c45e83bcb169fd21e093746759 Mon Sep 17 00:00:00 2001 From: Ryan D McGuire Date: Mon, 6 Jul 2026 10:42:36 -0400 Subject: [PATCH] improve dashboard --- helm/Chart.yaml | 2 +- helm/dashboards/econet-exporter.json | 1364 ++++++++++++++++++-------- 2 files changed, 975 insertions(+), 391 deletions(-) diff --git a/helm/Chart.yaml b/helm/Chart.yaml index 1c1594b..310444e 100644 --- a/helm/Chart.yaml +++ b/helm/Chart.yaml @@ -15,7 +15,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.2.5 +version: 0.2.6 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to diff --git a/helm/dashboards/econet-exporter.json b/helm/dashboards/econet-exporter.json index c897157..77a7c80 100644 --- a/helm/dashboards/econet-exporter.json +++ b/helm/dashboards/econet-exporter.json @@ -19,63 +19,6 @@ "fiscalYearStartMonth": 0, "graphTooltip": 1, "links": [], - "liveNow": false, - "refresh": "30s", - "schemaVersion": 39, - "tags": [ - "econet", - "rheem", - "water-heater" - ], - "templating": { - "list": [ - { - "current": {}, - "hide": 0, - "includeAll": false, - "label": "Data source", - "multi": false, - "name": "datasource", - "options": [], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "current": {}, - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "definition": "label_values(econet_device_info, econet_friendly_name)", - "hide": 0, - "includeAll": true, - "label": "Device", - "multi": true, - "name": "device", - "options": [], - "query": { - "query": "label_values(econet_device_info, econet_friendly_name)", - "refId": "StandardVariableQuery" - }, - "refresh": 2, - "regex": "", - "sort": 1, - "type": "query" - } - ] - }, - "time": { - "from": "now-24h", - "to": "now" - }, - "timepicker": {}, - "timezone": "", - "title": "EcoNet Water Heater", - "uid": "econet-exporter", - "version": 1, - "weekStart": "", "panels": [ { "collapsed": false, @@ -86,9 +29,9 @@ "y": 0 }, "id": 1, + "panels": [], "title": "Overview", - "type": "row", - "panels": [] + "type": "row" }, { "datasource": { @@ -127,7 +70,7 @@ "steps": [ { "color": "red", - "value": null + "value": 0 }, { "color": "green", @@ -150,6 +93,7 @@ "graphMode": "none", "justifyMode": "auto", "orientation": "auto", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" @@ -157,9 +101,11 @@ "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "11.0.0", + "pluginVersion": "12.3.1", "targets": [ { "datasource": { @@ -212,7 +158,7 @@ "steps": [ { "color": "blue", - "value": null + "value": 0 }, { "color": "orange", @@ -235,6 +181,7 @@ "graphMode": "none", "justifyMode": "auto", "orientation": "auto", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" @@ -242,9 +189,11 @@ "fields": "", "values": false }, - "textMode": "value_and_name" + "showPercentChange": false, + "textMode": "value_and_name", + "wideLayout": true }, - "pluginVersion": "11.0.0", + "pluginVersion": "12.3.1", "targets": [ { "datasource": { @@ -268,8 +217,8 @@ "fieldConfig": { "defaults": { "color": { - "mode": "fixed", - "fixedColor": "purple" + "fixedColor": "purple", + "mode": "fixed" }, "mappings": [], "thresholds": { @@ -277,7 +226,7 @@ "steps": [ { "color": "purple", - "value": null + "value": 0 } ] } @@ -296,6 +245,7 @@ "graphMode": "none", "justifyMode": "auto", "orientation": "auto", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" @@ -303,9 +253,11 @@ "fields": "", "values": false }, - "textMode": "name" + "showPercentChange": false, + "textMode": "name", + "wideLayout": true }, - "pluginVersion": "11.0.0", + "pluginVersion": "12.3.1", "targets": [ { "datasource": { @@ -332,13 +284,12 @@ "mode": "thresholds" }, "mappings": [], - "unit": "fahrenheit", "thresholds": { "mode": "absolute", "steps": [ { "color": "blue", - "value": null + "value": 0 }, { "color": "green", @@ -349,7 +300,8 @@ "value": 130 } ] - } + }, + "unit": "fahrenheit" }, "overrides": [] }, @@ -365,6 +317,7 @@ "graphMode": "area", "justifyMode": "auto", "orientation": "auto", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" @@ -372,9 +325,11 @@ "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "11.0.0", + "pluginVersion": "12.3.1", "targets": [ { "datasource": { @@ -403,13 +358,12 @@ "mappings": [], "max": 100, "min": 0, - "unit": "percent", "thresholds": { "mode": "absolute", "steps": [ { "color": "red", - "value": null + "value": 0 }, { "color": "orange", @@ -420,7 +374,8 @@ "value": 60 } ] - } + }, + "unit": "percent" }, "overrides": [] }, @@ -432,6 +387,8 @@ }, "id": 6, "options": { + "minVizHeight": 75, + "minVizWidth": 75, "orientation": "auto", "reduceOptions": { "calcs": [ @@ -441,9 +398,10 @@ "values": false }, "showThresholdLabels": false, - "showThresholdMarkers": true + "showThresholdMarkers": true, + "sizing": "auto" }, - "pluginVersion": "11.0.0", + "pluginVersion": "12.3.1", "targets": [ { "datasource": { @@ -470,20 +428,20 @@ "mode": "thresholds" }, "mappings": [], - "unit": "short", "thresholds": { "mode": "absolute", "steps": [ { "color": "green", - "value": null + "value": 0 }, { "color": "red", "value": 1 } ] - } + }, + "unit": "short" }, "overrides": [] }, @@ -499,6 +457,7 @@ "graphMode": "none", "justifyMode": "auto", "orientation": "auto", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" @@ -506,9 +465,11 @@ "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "11.0.0", + "pluginVersion": "12.3.1", "targets": [ { "datasource": { @@ -533,9 +494,9 @@ "y": 5 }, "id": 10, + "panels": [], "title": "Temperature & Hot Water", - "type": "row", - "panels": [] + "type": "row" }, { "datasource": { @@ -548,11 +509,13 @@ "mode": "palette-classic" }, "custom": { + "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, + "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", @@ -561,6 +524,7 @@ "tooltip": false, "viz": false }, + "insertNulls": false, "lineInterpolation": "stepAfter", "lineWidth": 2, "pointSize": 5, @@ -568,6 +532,7 @@ "type": "linear" }, "showPoints": "never", + "showValues": false, "spanNulls": true, "stacking": { "group": "A", @@ -578,6 +543,19 @@ } }, "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + }, "unit": "fahrenheit" }, "overrides": [ @@ -600,8 +578,8 @@ { "id": "color", "value": { - "mode": "fixed", - "fixedColor": "blue" + "fixedColor": "blue", + "mode": "fixed" } } ] @@ -625,8 +603,8 @@ { "id": "color", "value": { - "mode": "fixed", - "fixedColor": "red" + "fixedColor": "red", + "mode": "fixed" } } ] @@ -652,10 +630,12 @@ "showLegend": true }, "tooltip": { + "hideZeros": false, "mode": "multi", "sort": "desc" } }, + "pluginVersion": "12.3.1", "targets": [ { "datasource": { @@ -699,11 +679,13 @@ "mode": "palette-classic" }, "custom": { + "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, + "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 20, "gradientMode": "opacity", @@ -712,6 +694,7 @@ "tooltip": false, "viz": false }, + "insertNulls": false, "lineInterpolation": "smooth", "lineWidth": 2, "pointSize": 5, @@ -719,6 +702,7 @@ "type": "linear" }, "showPoints": "never", + "showValues": false, "spanNulls": true, "stacking": { "group": "A", @@ -731,6 +715,19 @@ "mappings": [], "max": 100, "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + }, "unit": "percent" }, "overrides": [] @@ -753,10 +750,12 @@ "showLegend": true }, "tooltip": { + "hideZeros": false, "mode": "multi", "sort": "desc" } }, + "pluginVersion": "12.3.1", "targets": [ { "datasource": { @@ -771,275 +770,6 @@ "title": "Hot Water Availability", "type": "timeseries" }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 14 - }, - "id": 20, - "title": "Energy & Water", - "type": "row", - "panels": [] - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "bars", - "fillOpacity": 60, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": true, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "unit": "kwatth" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 0, - "y": 15 - }, - "id": 21, - "options": { - "legend": { - "calcs": [ - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "max by (econet_friendly_name) (econet_energy_usage_kwh * on(econet_serial) group_left(econet_friendly_name) econet_device_info{econet_friendly_name=~\"$device\"})", - "legendFormat": "{{econet_friendly_name}}", - "refId": "A" - } - ], - "title": "Energy Usage Today (kWh)", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "bars", - "fillOpacity": 60, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": true, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "unit": "currencyUSD" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 8, - "y": 15 - }, - "id": 22, - "options": { - "legend": { - "calcs": [ - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "max by (econet_friendly_name) (econet_energy_cost_dollars * on(econet_serial) group_left(econet_friendly_name) econet_device_info{econet_friendly_name=~\"$device\"})", - "legendFormat": "{{econet_friendly_name}}", - "refId": "A" - } - ], - "title": "Energy Cost Today ($)", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "bars", - "fillOpacity": 60, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": true, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "unit": "volgal" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 16, - "y": 15 - }, - "id": 23, - "options": { - "legend": { - "calcs": [ - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "max by (econet_friendly_name) (econet_water_usage_gallons * on(econet_serial) group_left(econet_friendly_name) econet_device_info{econet_friendly_name=~\"$device\"})", - "legendFormat": "{{econet_friendly_name}}", - "refId": "A" - } - ], - "title": "Water Usage Today (gal)", - "type": "timeseries" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 23 - }, - "id": 30, - "title": "Device Health", - "type": "row", - "panels": [] - }, { "datasource": { "type": "prometheus", @@ -1051,8 +781,16 @@ "mode": "thresholds" }, "custom": { + "axisPlacement": "auto", "fillOpacity": 80, - "lineWidth": 0 + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineWidth": 0, + "spanNulls": false }, "mappings": [ { @@ -1081,7 +819,7 @@ "steps": [ { "color": "blue", - "value": null + "value": 0 }, { "color": "orange", @@ -1096,7 +834,7 @@ "h": 8, "w": 12, "x": 0, - "y": 24 + "y": 14 }, "id": 31, "options": { @@ -1110,10 +848,12 @@ "rowHeight": 0.9, "showValue": "auto", "tooltip": { + "hideZeros": false, "mode": "single", "sort": "none" } }, + "pluginVersion": "12.3.1", "targets": [ { "datasource": { @@ -1125,6 +865,7 @@ "refId": "A" } ], + "title": "Heating Timeline", "transformations": [ { "id": "filterFieldsByName", @@ -1136,7 +877,6 @@ } } ], - "title": "Heating Timeline", "type": "state-timeline" }, { @@ -1150,26 +890,30 @@ "mode": "palette-classic" }, "custom": { + "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "fillOpacity": 60, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, + "insertNulls": false, "lineInterpolation": "linear", - "lineWidth": 2, + "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "never", + "showValues": false, "spanNulls": true, "stacking": { "group": "A", @@ -1180,15 +924,805 @@ } }, "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "volgal" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 14 + }, + "id": 23, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "12.3.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "max by (econet_friendly_name) (econet_water_usage_gallons * on(econet_serial) group_left(econet_friendly_name) econet_device_info{econet_friendly_name=~\"$device\"})", + "legendFormat": "{{econet_friendly_name}}", + "refId": "A" + } + ], + "title": "Water Usage Today (gal)", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 22 + }, + "id": 20, + "panels": [], + "title": "Energy & Water", + "type": "row" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.9, + "drawStyle": "bars", + "fillOpacity": 100, + "gradientMode": "hue", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 0, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "purple", + "value": 0 + }, + { + "color": "red", + "value": 3 + } + ] + }, + "unit": "kwatth" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 9, + "x": 0, + "y": 23 + }, + "id": 21, + "interval": "1h", + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max", + "sum" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "12.3.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "increase(max by (econet_friendly_name) (econet_energy_usage_kwh * on(econet_serial) group_left(econet_friendly_name) econet_device_info{econet_friendly_name=~\"$device\"}))", + "legendFormat": "{{econet_friendly_name}}", + "range": true, + "refId": "A" + } + ], + "title": "Energy Usage Today (kWh)", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "000000003" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 3, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "#EAB839", + "value": 15 + }, + { + "color": "red", + "value": 20 + } + ] + }, + "unit": "kwatth" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 11, + "x": 9, + "y": 23 + }, + "id": 34, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "12.3.1", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "sum by (econet_friendly_name) (\n increase(econet_energy_usage_kwh[12h]) \n * on(econet_serial) group_left(econet_friendly_name) \n econet_device_info{econet_friendly_name=~\"$device\"}\n)", + "instant": true, + "legendFormat": "{{econet_friendly_name}}: 12h Usage", + "range": false, + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "000000003" + }, + "editorMode": "code", + "exemplar": false, + "expr": "sum by (econet_friendly_name) (\n increase(econet_energy_usage_kwh[24h]) \n * on(econet_serial) group_left(econet_friendly_name) \n econet_device_info{econet_friendly_name=~\"$device\"}\n)", + "hide": false, + "instant": true, + "legendFormat": "{{econet_friendly_name}}: 24h Usage", + "range": false, + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "000000003" + }, + "editorMode": "code", + "exemplar": false, + "expr": "sum by (econet_friendly_name) (\n increase(econet_energy_usage_kwh[2d]) \n * on(econet_serial) group_left(econet_friendly_name) \n econet_device_info{econet_friendly_name=~\"$device\"}\n)", + "hide": false, + "instant": true, + "legendFormat": "{{econet_friendly_name}}: 2d Usage", + "range": false, + "refId": "C" + }, + { + "datasource": { + "type": "prometheus", + "uid": "000000003" + }, + "editorMode": "code", + "exemplar": false, + "expr": "sum by (econet_friendly_name) (\n increase(econet_energy_usage_kwh[7d]) \n * on(econet_serial) group_left(econet_friendly_name) \n econet_device_info{econet_friendly_name=~\"$device\"}\n)", + "hide": false, + "instant": true, + "legendFormat": "{{econet_friendly_name}}: 7d Usage", + "range": false, + "refId": "D" + }, + { + "datasource": { + "type": "prometheus", + "uid": "000000003" + }, + "editorMode": "code", + "exemplar": false, + "expr": "sum by (econet_friendly_name) (\n increase(econet_energy_usage_kwh[30d]) \n * on(econet_serial) group_left(econet_friendly_name) \n econet_device_info{econet_friendly_name=~\"$device\"}\n)", + "hide": false, + "instant": true, + "legendFormat": "{{econet_friendly_name}}: 30d Usage", + "range": false, + "refId": "E" + } + ], + "title": "Energy Usage Rollups", + "type": "gauge" + }, + { + "datasource": { + "type": "prometheus", + "uid": "000000003" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "fillOpacity": 80, + "gradientMode": "scheme", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineWidth": 1, + "scaleDistribution": { + "type": "linear" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "#EAB839", + "value": 5 + }, + { + "color": "red", + "value": 10 + } + ] + }, + "unit": "kwatth" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 4, + "x": 20, + "y": 23 + }, + "id": 36, + "options": { + "barRadius": 0.1, + "barWidth": 0.97, + "fullHighlight": false, + "groupWidth": 0.7, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "orientation": "auto", + "showValue": "auto", + "stacking": "none", + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + }, + "xTickLabelRotation": 0, + "xTickLabelSpacing": 0 + }, + "pluginVersion": "12.3.1", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "sum by (econet_friendly_name) (\n increase(econet_energy_usage_kwh[$__range]) \n * on(econet_serial) group_left(econet_friendly_name) \n econet_device_info{econet_friendly_name=~\"$device\"}\n)", + "instant": true, + "legendFormat": "{{econet_friendly_name}}", + "range": false, + "refId": "A" + } + ], + "title": "Current Interval Usage", + "type": "barchart" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.9, + "drawStyle": "bars", + "fillOpacity": 94, + "gradientMode": "hue", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 0, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "currencyUSD" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 9, + "x": 0, + "y": 31 + }, + "id": 22, + "interval": "1h", + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max", + "sum" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "12.3.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "increase(max by (econet_friendly_name) (econet_energy_cost_dollars * on(econet_serial) group_left(econet_friendly_name) econet_device_info{econet_friendly_name=~\"$device\"}))", + "legendFormat": "{{econet_friendly_name}}", + "range": true, + "refId": "A" + } + ], + "title": "Energy Cost Today ($)", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "000000003" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 3, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 5 + } + ] + }, + "unit": "currencyUSD" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 11, + "x": 9, + "y": 31 + }, + "id": 35, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "12.3.1", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "sum by (econet_friendly_name) (\n increase(econet_energy_cost_dollars[12h]) \n * on(econet_serial) group_left(econet_friendly_name) \n econet_device_info{econet_friendly_name=~\"$device\"}\n)", + "instant": true, + "legendFormat": "{{econet_friendly_name}}: 12h Cost", + "range": false, + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "000000003" + }, + "editorMode": "code", + "exemplar": false, + "expr": "sum by (econet_friendly_name) (\n increase(econet_energy_cost_dollars[24h]) \n * on(econet_serial) group_left(econet_friendly_name) \n econet_device_info{econet_friendly_name=~\"$device\"}\n)", + "hide": false, + "instant": true, + "legendFormat": "{{econet_friendly_name}}: 24h Cost", + "range": false, + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "000000003" + }, + "editorMode": "code", + "exemplar": false, + "expr": "sum by (econet_friendly_name) (\n increase(econet_energy_cost_dollars[2d]) \n * on(econet_serial) group_left(econet_friendly_name) \n econet_device_info{econet_friendly_name=~\"$device\"}\n)", + "hide": false, + "instant": true, + "legendFormat": "{{econet_friendly_name}}: 2d Cost", + "range": false, + "refId": "C" + }, + { + "datasource": { + "type": "prometheus", + "uid": "000000003" + }, + "editorMode": "code", + "exemplar": false, + "expr": "sum by (econet_friendly_name) (\n increase(econet_energy_cost_dollars[7d]) \n * on(econet_serial) group_left(econet_friendly_name) \n econet_device_info{econet_friendly_name=~\"$device\"}\n)", + "hide": false, + "instant": true, + "legendFormat": "{{econet_friendly_name}}: 7d Cost", + "range": false, + "refId": "D" + }, + { + "datasource": { + "type": "prometheus", + "uid": "000000003" + }, + "editorMode": "code", + "exemplar": false, + "expr": "sum by (econet_friendly_name) (\n increase(econet_energy_cost_dollars[30d]) \n * on(econet_serial) group_left(econet_friendly_name) \n econet_device_info{econet_friendly_name=~\"$device\"}\n)", + "hide": false, + "instant": true, + "legendFormat": "{{econet_friendly_name}}: 30d Cost", + "range": false, + "refId": "E" + } + ], + "title": "Energy Cost Rollups", + "type": "gauge" + }, + { + "datasource": { + "type": "prometheus", + "uid": "000000003" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "fillOpacity": 76, + "gradientMode": "scheme", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineWidth": 0, + "scaleDistribution": { + "type": "linear" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "#EAB839", + "value": 0.6 + }, + { + "color": "red", + "value": 1 + } + ] + }, + "unit": "currencyUSD" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 4, + "x": 20, + "y": 31 + }, + "id": 37, + "options": { + "barRadius": 0.25, + "barWidth": 0.97, + "colorByField": "Value", + "fullHighlight": false, + "groupWidth": 0.7, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "orientation": "auto", + "showValue": "auto", + "stacking": "none", + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + }, + "xTickLabelRotation": 0, + "xTickLabelSpacing": 0 + }, + "pluginVersion": "12.3.1", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "sum by (econet_friendly_name) (\n increase(econet_energy_cost_dollars[$__range]) \n * on(econet_serial) group_left(econet_friendly_name) \n econet_device_info{econet_friendly_name=~\"$device\"}\n)", + "instant": true, + "legendFormat": "{{econet_friendly_name}}", + "range": false, + "refId": "A" + } + ], + "title": "Current Interval Cost", + "type": "barchart" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 39 + }, + "id": 30, + "panels": [], + "title": "Device Health", + "type": "row" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + }, "unit": "dB" }, "overrides": [] }, "gridPos": { "h": 8, - "w": 6, - "x": 12, - "y": 24 + "w": 11, + "x": 0, + "y": 40 }, "id": 32, "options": { @@ -1201,10 +1735,12 @@ "showLegend": true }, "tooltip": { + "hideZeros": false, "mode": "multi", "sort": "desc" } }, + "pluginVersion": "12.3.1", "targets": [ { "datasource": { @@ -1234,6 +1770,9 @@ "cellOptions": { "type": "auto" }, + "footer": { + "reducers": [] + }, "inspect": false }, "mappings": [], @@ -1242,7 +1781,7 @@ "steps": [ { "color": "green", - "value": null + "value": 0 } ] } @@ -1251,24 +1790,16 @@ }, "gridPos": { "h": 8, - "w": 6, - "x": 18, - "y": 24 + "w": 13, + "x": 11, + "y": 40 }, "id": 33, "options": { "cellHeight": "sm", - "footer": { - "countRows": false, - "fields": "", - "reducer": [ - "sum" - ], - "show": false - }, "showHeader": true }, - "pluginVersion": "11.0.0", + "pluginVersion": "12.3.1", "targets": [ { "datasource": { @@ -1290,17 +1821,17 @@ "Time": true, "Value": true, "__name__": true, - "job": true, - "instance": true + "instance": true, + "job": true }, "indexByName": {}, "renameByName": { - "econet_friendly_name": "Name", - "econet_serial": "Serial", "econet_device_id": "Device ID", - "econet_type": "Type", + "econet_friendly_name": "Name", "econet_generic_type": "Generic Type", - "econet_mode": "Mode" + "econet_mode": "Mode", + "econet_serial": "Serial", + "econet_type": "Type" } } }, @@ -1311,5 +1842,58 @@ ], "type": "table" } - ] + ], + "preload": false, + "refresh": "30s", + "schemaVersion": 42, + "tags": [ + "econet", + "rheem", + "water-heater" + ], + "templating": { + "list": [ + { + "current": {}, + "includeAll": false, + "label": "Data source", + "name": "datasource", + "options": [], + "query": "prometheus", + "refresh": 1, + "regex": "", + "type": "datasource" + }, + { + "current": {}, + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "definition": "label_values(econet_device_info, econet_friendly_name)", + "includeAll": true, + "label": "Device", + "multi": true, + "name": "device", + "options": [], + "query": { + "query": "label_values(econet_device_info, econet_friendly_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + } + ] + }, + "time": { + "from": "now-24h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "EcoNet Water Heater", + "uid": "econet-exporter", + "version": 2 }