diff --git a/config/aeration.json b/config/aeration.json new file mode 100644 index 0000000..9e4f165 --- /dev/null +++ b/config/aeration.json @@ -0,0 +1,3242 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 5, + "links": [], + "panels": [ + { + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 2, + "title": "Hydraulics", + "type": "row" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "max": 5000, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "m3/h" + }, + "overrides": [ + { + "__systemRef": "hideSeriesFrom", + "matcher": { + "id": "byNames", + "options": { + "mode": "exclude", + "names": [ + "q {group=\"recirculation\", name=\"recircN1\"}", + "q {group=\"recirculation\", name=\"reciruclation\"}", + "q {group=\"influent\", name=\"influent\"}" + ], + "prefix": "All except:", + "readOnly": true + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": false, + "tooltip": false, + "viz": true + } + } + ] + } + ] + }, + "gridPos": { + "h": 10, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 1, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"influent\" and r._field == \"q\" )\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)\r\n |> yield(name: \"_results\")", + "refId": "A" + }, + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "hide": false, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"reciruclation\" and r._field == \"q\" )\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)\r\n |> yield(name: \"_results\")", + "refId": "B" + }, + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "hide": false, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"recircN1\" and r._field == \"q\" )\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)\r\n |> yield(name: \"_results\")", + "refId": "C" + } + ], + "title": "Influent | recirculation internally and externally", + "transformations": [ + { + "id": "calculateField", + "options": { + "cumulative": { + "field": "q {group=\"influent\", name=\"influent\"}", + "reducer": "sum" + }, + "mode": "reduceRow", + "reduce": { + "include": [ + "q {group=\"influent\", name=\"influent\"}", + "q {group=\"recirculation\", name=\"reciruclation\"}", + "q {group=\"recirculation\", name=\"recircN1\"}" + ], + "reducer": "sum" + } + } + } + ], + "transparent": true, + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 11 + }, + "id": 46, + "panels": [], + "title": "Compartiment 1", + "type": "row" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "max": 25, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#6ED0E0", + "value": 2.5 + }, + { + "color": "#EAB839", + "value": 5 + }, + { + "color": "red", + "value": 15 + } + ] + }, + "unit": "congm3" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 0, + "y": 12 + }, + "id": 4, + "options": { + "displayMode": "lcd", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"reactor1\" and r._field == \"reactor1.S10.NH4+|NH3\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "End compartiment NH4+|NH3", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-blues" + }, + "decimals": 2, + "mappings": [], + "max": 2400, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "m3/h" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 3, + "y": 12 + }, + "id": 12, + "options": { + "displayMode": "gradient", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"zone1\" and r._field == \"iFlow\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Input airflow in diffusers", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-blues" + }, + "decimals": 2, + "mappings": [], + "max": 2400, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "m3/h" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 6, + "y": 12 + }, + "id": 16, + "options": { + "displayMode": "gradient", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"zone1\" and r._field == \"oFlowElement\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Flow per element", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-blues" + }, + "decimals": 2, + "mappings": [], + "max": 2400, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "m3/h" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 9, + "y": 12 + }, + "id": 20, + "options": { + "displayMode": "gradient", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"zone1\" and r._field == \"oPLoss\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Diffuser DeltaP", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-RdYlGr" + }, + "decimals": 1, + "mappings": [], + "max": 30, + "min": 20, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "m3/h" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 12, + "y": 12 + }, + "id": 24, + "options": { + "displayMode": "gradient", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"zone1\" and r._field == \"oOtr\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Oxygen Transfer Rate", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "max": 4, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "blue", + "value": null + } + ] + }, + "unit": "congm3" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 15, + "y": 12 + }, + "id": 28, + "options": { + "displayMode": "gradient", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"reactor1\" and r._field == \"reactor1.S7.O2\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Dissolved Oxygen", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "semi-dark-yellow", + "value": 50 + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "%/min" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 2, + "x": 19, + "y": 12 + }, + "id": 32, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"reactor1\" and r._field == \"dFactor\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Mixer speed", + "transparent": true, + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "semi-dark-yellow", + "value": 3000 + }, + { + "color": "red", + "value": 4000 + } + ] + }, + "unit": "congm3" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 21, + "y": 12 + }, + "id": 36, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"reactor1\" and r._field == \"sludge\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "MLSS", + "transparent": true, + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 16 + }, + "id": 47, + "panels": [], + "title": "Compartiment 2", + "type": "row" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "max": 25, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#6ED0E0", + "value": 2.5 + }, + { + "color": "#EAB839", + "value": 5 + }, + { + "color": "red", + "value": 15 + } + ] + }, + "unit": "congm3" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 0, + "y": 17 + }, + "id": 9, + "options": { + "displayMode": "lcd", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "hide": false, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"reactor2\" and r._field == \"reactor2.S10.NH4+|NH3\" )\r\n |> last()", + "refId": "B" + } + ], + "title": "End compartiment NH4+|NH3", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "fixed" + }, + "mappings": [], + "max": 2400, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "m3/h" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 3, + "y": 17 + }, + "id": 13, + "options": { + "displayMode": "basic", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"zone2\" and r._field == \"iFlow\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Input airflow in diffusers", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "decimals": 2, + "mappings": [], + "max": 8, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "m3/h" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 6, + "y": 17 + }, + "id": 17, + "options": { + "displayMode": "gradient", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"zone2\" and r._field == \"oFlowElement\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Flow per element", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 600, + "min": 500, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "green", + "value": 520 + }, + { + "color": "#EAB839", + "value": 550 + }, + { + "color": "red", + "value": 600 + } + ] + }, + "unit": "pressurembar" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 9, + "y": 17 + }, + "id": 21, + "options": { + "displayMode": "gradient", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"zone2\" and r._field == \"oPLoss\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Diffuser DeltaP", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-RdYlGr" + }, + "decimals": 1, + "mappings": [], + "max": 30, + "min": 20, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "g/Nm3h/m" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 12, + "y": 17 + }, + "id": 25, + "options": { + "displayMode": "gradient", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"zone2\" and r._field == \"oOtr\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Oxygen Transfer Rate", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "max": 4, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "blue", + "value": null + } + ] + }, + "unit": "congm3" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 15, + "y": 17 + }, + "id": 29, + "options": { + "displayMode": "gradient", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"reactor2\" and r._field == \"reactor2.S7.O2\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Dissolved Oxygen", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "semi-dark-yellow", + "value": 50 + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "%/min" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 2, + "x": 19, + "y": 17 + }, + "id": 33, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"reactor2\" and r._field == \"dFactor\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Mixer speed", + "transparent": true, + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "semi-dark-yellow", + "value": 3000 + }, + { + "color": "red", + "value": 4000 + } + ] + }, + "unit": "congm3" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 21, + "y": 17 + }, + "id": 37, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"reactor2\" and r._field == \"sludge\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "MLSS", + "transparent": true, + "type": "stat" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 21 + }, + "id": 48, + "panels": [], + "title": "Compartiment 3", + "type": "row" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "max": 25, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#6ED0E0", + "value": 2.5 + }, + { + "color": "#EAB839", + "value": 5 + }, + { + "color": "red", + "value": 15 + } + ] + }, + "unit": "congm3" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 0, + "y": 22 + }, + "id": 10, + "options": { + "displayMode": "lcd", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "hide": false, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"reactor3\" and r._field == \"reactor3.S10.NH4+|NH3\" )\r\n |> last()", + "refId": "C" + } + ], + "title": "End compartiment NH4+|NH3", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "fixed" + }, + "mappings": [], + "max": 1920, + "min": 200, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "m3/h" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 3, + "y": 22 + }, + "id": 14, + "options": { + "displayMode": "basic", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"zone3\" and r._field == \"iFlow\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Input airflow in diffusers", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "decimals": 2, + "mappings": [], + "max": 8, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "m3/h" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 6, + "y": 22 + }, + "id": 18, + "options": { + "displayMode": "gradient", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"zone3\" and r._field == \"oFlowElement\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Flow per element", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 600, + "min": 500, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "green", + "value": 520 + }, + { + "color": "#EAB839", + "value": 550 + }, + { + "color": "red", + "value": 600 + } + ] + }, + "unit": "pressurembar" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 9, + "y": 22 + }, + "id": 22, + "options": { + "displayMode": "gradient", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"zone3\" and r._field == \"oPLoss\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Diffuser DeltaP", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-RdYlGr" + }, + "decimals": 1, + "mappings": [], + "max": 30, + "min": 20, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "g/Nm3h/m" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 12, + "y": 22 + }, + "id": 26, + "options": { + "displayMode": "gradient", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"zone3\" and r._field == \"oOtr\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Oxygen Transfer Rate", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "max": 4, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "blue", + "value": null + } + ] + }, + "unit": "congm3" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 15, + "y": 22 + }, + "id": 30, + "options": { + "displayMode": "gradient", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"reactor3\" and r._field == \"reactor3.S7.O2\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Dissolved Oxygen", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "semi-dark-yellow", + "value": 50 + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "%/min" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 2, + "x": 19, + "y": 22 + }, + "id": 34, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"reactor3\" and r._field == \"dFactor\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Mixer speed", + "transparent": true, + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "semi-dark-yellow", + "value": 3000 + }, + { + "color": "red", + "value": 4000 + } + ] + }, + "unit": "congm3" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 21, + "y": 22 + }, + "id": 38, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"reactor3\" and r._field == \"sludge\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "MLSS", + "transparent": true, + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 26 + }, + "id": 49, + "panels": [], + "title": "Compartiment 4", + "type": "row" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "max": 25, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#6ED0E0", + "value": 2.5 + }, + { + "color": "#EAB839", + "value": 5 + }, + { + "color": "red", + "value": 15 + } + ] + }, + "unit": "congm3" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 0, + "y": 27 + }, + "id": 11, + "options": { + "displayMode": "lcd", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "hide": false, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"reactor4\" and r._field == \"reactor4.S10.NH4+|NH3\" )\r\n |> last()", + "refId": "D" + } + ], + "title": "End compartiment NH4+|NH3", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "fixed" + }, + "mappings": [], + "max": 1920, + "min": 200, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "m3/h" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 3, + "y": 27 + }, + "id": 15, + "options": { + "displayMode": "basic", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"zone4\" and r._field == \"iFlow\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Input airflow in diffusers", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "decimals": 2, + "mappings": [], + "max": 8, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "m3/h" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 6, + "y": 27 + }, + "id": 19, + "options": { + "displayMode": "gradient", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"zone4\" and r._field == \"oFlowElement\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Flow per element", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 600, + "min": 500, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "green", + "value": 520 + }, + { + "color": "#EAB839", + "value": 550 + }, + { + "color": "red", + "value": 600 + } + ] + }, + "unit": "pressurembar" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 9, + "y": 27 + }, + "id": 23, + "options": { + "displayMode": "gradient", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"zone4\" and r._field == \"oPLoss\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Diffuser DeltaP", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-RdYlGr" + }, + "decimals": 1, + "mappings": [], + "max": 30, + "min": 20, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "g/Nm3h/m" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 12, + "y": 27 + }, + "id": 27, + "options": { + "displayMode": "gradient", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"zone4\" and r._field == \"oOtr\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Oxygen Transfer Rate", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "max": 4, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "blue", + "value": null + } + ] + }, + "unit": "congm3" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 15, + "y": 27 + }, + "id": 31, + "options": { + "displayMode": "gradient", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"reactor4\" and r._field == \"reactor4.S7.O2\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Dissolved Oxygen", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "semi-dark-yellow", + "value": 50 + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "%/min" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 2, + "x": 19, + "y": 27 + }, + "id": 35, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"reactor4\" and r._field == \"dFactor\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Mixer speed", + "transparent": true, + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "semi-dark-yellow", + "value": 3000 + }, + { + "color": "red", + "value": 4000 + } + ] + }, + "unit": "congm3" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 21, + "y": 27 + }, + "id": 39, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"reactor4\" and r._field == \"sludge\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "MLSS", + "transparent": true, + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 31 + }, + "id": 40, + "panels": [], + "title": "Basic info", + "type": "row" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "congm3" + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 24, + "x": 0, + "y": 32 + }, + "id": 41, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"influent\" and r._field == \"influent.snh\" )\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)\r\n |> yield(name: \"influent NH4+|NH3\")", + "refId": "A" + }, + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "hide": false, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"reactor4\" and r._field == \"reactor4.S10.NH4+|NH3\" )\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)\r\n |> yield(name: \"Reactor1 NH4+|NH3\")", + "refId": "B" + } + ], + "title": "Influent | Effluent NH4+|NH3", + "transparent": true, + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "congm3" + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 24, + "x": 0, + "y": 42 + }, + "id": 50, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => ( r._measurement == \"reactor1\" or r._measurement == \"reactor2\" or r._measurement == \"reactor3\" or r._measurement == \"reactor4\") and r._field == \"sludge\" )\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)\r\n |> movingAverage(n: 50)", + "refId": "A" + } + ], + "title": "Sludge MLSS", + "transparent": true, + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EF843C", + "value": 1000 + }, + { + "color": "green", + "value": 10000 + }, + { + "color": "#EAB839", + "value": 50000 + }, + { + "color": "semi-dark-red", + "value": 100000 + } + ] + }, + "unit": "kg/h" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 8, + "x": 0, + "y": 52 + }, + "id": 44, + "options": { + "displayMode": "lcd", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"influent\" and r._field == \"influent.snh\" )\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)\r\n |> last()", + "refId": "A" + }, + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "hide": false, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"influent\" and r._field == \"q\" )\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)\r\n |> last()", + "refId": "C" + } + ], + "title": "Influent vracht NH4+|NH3", + "transformations": [ + { + "id": "calculateField", + "options": { + "alias": "influentNH4_kgh", + "binary": { + "left": "q {group=\"influent\", name=\"influent\"}", + "operator": "*", + "right": "influent.snh {group=\"influent\", name=\"influent\"}" + }, + "mode": "binary", + "reduce": { + "reducer": "sum" + }, + "replaceFields": true + } + } + ], + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EF843C", + "value": 100 + }, + { + "color": "green", + "value": 5000 + }, + { + "color": "#EAB839", + "value": 12500 + }, + { + "color": "semi-dark-red", + "value": 25000 + } + ] + }, + "unit": "kg/h" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 8, + "x": 8, + "y": 52 + }, + "id": 45, + "options": { + "displayMode": "lcd", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "hide": false, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"reactor4\" and r._field == \"reactor4.S10.NH4+|NH3\" )\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)\r\n |> last()", + "refId": "A" + }, + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "hide": false, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"influent\" and r._field == \"q\" )\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)\r\n |> last()", + "refId": "C" + } + ], + "title": "Effluent Vrach NH4+|NH3", + "transformations": [ + { + "id": "calculateField", + "options": { + "alias": "influentNH4_kgh", + "binary": { + "left": "reactor4.S10.NH4+|NH3 {group=\"bio\", name=\"reactor4\"}", + "operator": "*", + "right": "q {group=\"influent\", name=\"influent\"}" + }, + "mode": "binary", + "reduce": { + "reducer": "sum" + }, + "replaceFields": true + } + } + ], + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic-by-name" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "congm3" + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 24, + "x": 0, + "y": 56 + }, + "id": 42, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"influent\" and r._field == \"influent.sno\" )\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)\r\n |> yield(name: \"influent NH4+|NH3\")", + "refId": "A" + }, + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "hide": false, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"reactor4\" and r._field == \"reactor4.S10.NO3-|NO2-\" )\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)\r\n |> yield(name: \"Reactor1 NH4+|NH3\")", + "refId": "B" + } + ], + "title": "Influent | Effluent NO3-|NO2-", + "transparent": true, + "type": "timeseries" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 66 + }, + "id": 51, + "panels": [], + "title": "Advanced", + "type": "row" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic-by-name" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "congm3" + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 24, + "x": 0, + "y": 67 + }, + "id": 52, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"sim\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"reactor1\" and r.group == \"bio\" and r._field =~ /reactor1.S1/)\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)\r\n ", + "refId": "A" + } + ], + "title": "reactor 1 full bio first section", + "transparent": true, + "type": "timeseries" + } + ], + "refresh": "30s", + "schemaVersion": 39, + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "RWZI bath - straat 1", + "uid": "bdzjluvuk4l4wb", + "version": 45, + "weekStart": "" + } \ No newline at end of file diff --git a/config/machine.json b/config/machine.json new file mode 100644 index 0000000..1eb1e3a --- /dev/null +++ b/config/machine.json @@ -0,0 +1,2091 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0,255,255,1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 20, + "links": [], + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 1, + "panels": [], + "title": "Realtime", + "type": "row" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 1 + }, + "id": 2, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^state \\{geoLocation_x=\"0\", geoLocation_y=\"0\", geoLocation_z=\"0\", id=\"b1226bbc99239bc5\", model=\"H05K\\-S03R\\+HGM1X\\-X280KO\", name=\"m1\", role=\"RotationalDeviceController\", softwareType=\"machine\", subType=\"centrifugal pumps\", supplier=\"hydrostal\", type=\"generic\", unit=\"m3/h\", uuid=\"null\"\\}$/", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: -1y) // Adjust time range as needed\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"state\")\n |> sort(columns: [\"_time\"], desc: true)\n |> limit(n: 1)", + "refId": "A" + } + ], + "title": "Machine State", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 1 + }, + "id": 4, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^mode \\{geoLocation_x=\"0\", geoLocation_y=\"0\", geoLocation_z=\"0\", id=\"b1226bbc99239bc5\", model=\"H05K\\-S03R\\+HGM1X\\-X280KO\", name=\"m1\", role=\"RotationalDeviceController\", softwareType=\"machine\", subType=\"centrifugal pumps\", supplier=\"hydrostal\", type=\"generic\", unit=\"m3/h\", uuid=\"null\"\\}$/", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: -1y) // Adjust time range as needed\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"mode\")\n |> sort(columns: [\"_time\"], desc: true)\n |> limit(n: 1)", + "refId": "A" + } + ], + "title": "Machine Mode", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "transparent", + "value": null + }, + { + "color": "green", + "value": 0 + }, + { + "color": "orange", + "value": 0.4 + }, + { + "color": "red", + "value": 0.8 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 3, + "x": 9, + "y": 1 + }, + "id": 28, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => r._measurement==\"${measurement}\" and r._field==\"effRelDistFromPeak\")\n |> sort(columns: [\"_time\"], desc: true)\n |> limit(n: 1)", + "refId": "A" + } + ], + "title": "Relative distance from BEP", + "type": "gauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "max": 220, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 150 + }, + { + "color": "red", + "value": 200 + } + ] + }, + "unit": "m3/h" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 3, + "x": 12, + "y": 1 + }, + "id": 26, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => r._measurement==\"${measurement}\" and r._field==\"downstream_measured_flow\")\n |> sort(columns: [\"_time\"], desc: true)\n |> limit(n: 1)", + "refId": "A" + } + ], + "title": "Downstream measured flow", + "type": "gauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "percent" + }, + "overrides": [ + { + "__systemRef": "hideSeriesFrom", + "matcher": { + "id": "byNames", + "options": { + "mode": "exclude", + "names": [ + "flowLongTermLevel {geoLocation_x=\"0\", geoLocation_y=\"0\", geoLocation_z=\"0\", id=\"b1226bbc99239bc5\", model=\"H05K-S03R+HGM1X-X280KO\", name=\"m1\", role=\"RotationalDeviceController\", softwareType=\"machine\", subType=\"centrifugal pumps\", supplier=\"hydrostal\", type=\"generic\", unit=\"m3/h\", uuid=\"null\"}" + ], + "prefix": "All except:", + "readOnly": true + } + }, + "properties": [] + } + ] + }, + "gridPos": { + "h": 15, + "w": 3, + "x": 15, + "y": 1 + }, + "id": 22, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: -1y) // Adjust time range as needed\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"ctrl\" )\n |> sort(columns: [\"_time\"], desc: true)\n |> limit(n: 1)", + "refId": "A" + } + ], + "title": "Control", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "percent" + }, + "overrides": [ + { + "__systemRef": "hideSeriesFrom", + "matcher": { + "id": "byNames", + "options": { + "mode": "exclude", + "names": [ + "flowLongTermLevel {geoLocation_x=\"0\", geoLocation_y=\"0\", geoLocation_z=\"0\", id=\"b1226bbc99239bc5\", model=\"H05K-S03R+HGM1X-X280KO\", name=\"m1\", role=\"RotationalDeviceController\", softwareType=\"machine\", subType=\"centrifugal pumps\", supplier=\"hydrostal\", type=\"generic\", unit=\"m3/h\", uuid=\"null\"}" + ], + "prefix": "All except:", + "readOnly": true + } + }, + "properties": [] + } + ] + }, + "gridPos": { + "h": 15, + "w": 3, + "x": 18, + "y": 1 + }, + "id": 32, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: -1y) // Adjust time range as needed\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"NCogPercent\" )\n |> sort(columns: [\"_time\"], desc: true)\n |> limit(n: 1)", + "refId": "A" + } + ], + "title": "Normalized CoG in %", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [ + { + "__systemRef": "hideSeriesFrom", + "matcher": { + "id": "byNames", + "options": { + "mode": "exclude", + "names": [ + "flowLongTermLevel {geoLocation_x=\"0\", geoLocation_y=\"0\", geoLocation_z=\"0\", id=\"b1226bbc99239bc5\", model=\"H05K-S03R+HGM1X-X280KO\", name=\"m1\", role=\"RotationalDeviceController\", softwareType=\"machine\", subType=\"centrifugal pumps\", supplier=\"hydrostal\", type=\"generic\", unit=\"m3/h\", uuid=\"null\"}" + ], + "prefix": "All except:", + "readOnly": true + } + }, + "properties": [] + } + ] + }, + "gridPos": { + "h": 5, + "w": 3, + "x": 0, + "y": 4 + }, + "id": 21, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: -1y) // Adjust time range as needed\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"cog\")\n |> sort(columns: [\"_time\"], desc: true)\n |> limit(n: 1)", + "refId": "A" + } + ], + "title": "Best Efficiency Point", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "yellow", + "value": 1 + }, + { + "color": "orange", + "value": 2 + }, + { + "color": "red", + "value": 3 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 3, + "x": 3, + "y": 4 + }, + "id": 19, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: -1y) // Adjust time range as needed\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"flowImmediateLevel\")\n |> sort(columns: [\"_time\"], desc: true)\n |> limit(n: 1)", + "refId": "A" + } + ], + "title": "Flow Shortterm NRMSD", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "yellow", + "value": 1 + }, + { + "color": "orange", + "value": 2 + }, + { + "color": "red", + "value": 3 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 3, + "x": 6, + "y": 4 + }, + "id": 20, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: -1y) // Adjust time range as needed\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"flowLongTermLevel\")\n |> sort(columns: [\"_time\"], desc: true)\n |> limit(n: 1)", + "refId": "A" + } + ], + "title": "Flow Longterm NRMSD", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "transparent", + "value": null + }, + { + "color": "green", + "value": 0 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 3, + "x": 0, + "y": 9 + }, + "id": 30, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => r._measurement==\"${measurement}\" and r._field==\"downstream_predicted_efficiency\")\n |> sort(columns: [\"_time\"], desc: true)\n |> limit(n: 1)", + "refId": "A" + } + ], + "title": "Efficiency", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "max": 3600, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 1500 + }, + { + "color": "red", + "value": 2000 + } + ] + }, + "unit": "pressurembar" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 3, + "x": 3, + "y": 9 + }, + "id": 23, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => r._measurement==\"${measurement}\" and r._field==\"upstream_measured_pressure\")\n |> sort(columns: [\"_time\"], desc: true)\n |> limit(n: 1)", + "refId": "A" + } + ], + "title": "Upstream pressure", + "type": "gauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "max": 3600, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 1500 + }, + { + "color": "red", + "value": 2000 + } + ] + }, + "unit": "pressurembar" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 3, + "x": 6, + "y": 9 + }, + "id": 25, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => r._measurement==\"${measurement}\" and r._field==\"downstream_measured_pressure\")\n |> sort(columns: [\"_time\"], desc: true)\n |> limit(n: 1)", + "refId": "A" + } + ], + "title": "Downstream pressure", + "type": "gauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "max": 220, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 80 + }, + { + "color": "red", + "value": 120 + } + ] + }, + "unit": "kwatt" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 3, + "x": 9, + "y": 9 + }, + "id": 31, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => r._measurement==\"${measurement}\" and r._field==\"upstream_predicted_power\")\n |> sort(columns: [\"_time\"], desc: true)\n |> limit(n: 1)", + "refId": "A" + } + ], + "title": "Predicted power", + "type": "gauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "max": 220, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 150 + }, + { + "color": "red", + "value": 200 + } + ] + }, + "unit": "m3/h" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 3, + "x": 12, + "y": 9 + }, + "id": 24, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => r._measurement==\"${measurement}\" and r._field==\"downstream_predicted_flow\")\n |> sort(columns: [\"_time\"], desc: true)\n |> limit(n: 1)", + "refId": "A" + } + ], + "title": "Downstream predicted flow", + "type": "gauge" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 16 + }, + "id": 5, + "panels": [], + "title": "Measurements", + "type": "row" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "displayName": "pressure", + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 6, + "x": 0, + "y": 17 + }, + "id": 6, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => r._measurement==\"${measurement}\" and r._field==\"upstream_measured_pressure\" or r._field==\"upstream_predicted_pressure\")\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "A" + } + ], + "title": "Upstream pressure", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 19, + "w": 5, + "x": 6, + "y": 17 + }, + "id": 15, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => r._measurement==\"${measurement}\" and r._field==\"differential_measured_pressure\" )\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "A" + } + ], + "title": "Differential pressure", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 6, + "x": 11, + "y": 17 + }, + "id": 16, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => r._measurement==\"${measurement}\" and ( r._field==\"upstream_measured_power\" or r._field==\"upstream_predicted_power\" ) )\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "A" + } + ], + "title": "Power", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 7, + "x": 17, + "y": 17 + }, + "id": 14, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => r._measurement==\"${measurement}\" and ( r._field==\"downstream_measured_flow\" or r._field==\"downstream_predicted_flow\") )\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "A" + } + ], + "title": "Flow", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "fixed" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "dashed" + } + }, + "decimals": 2, + "displayName": "pressure", + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 1500 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 6, + "x": 0, + "y": 22 + }, + "id": 7, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => r._measurement==\"${measurement}\" and r._field==\"downstream_measured_pressure\" or r._field==\"downstream_predicted_pressure\")\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "A" + } + ], + "title": "Downstream pressure", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "dashed" + } + }, + "decimals": 2, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "transparent", + "value": null + }, + { + "color": "green", + "value": 0 + }, + { + "color": "orange", + "value": 0.4 + }, + { + "color": "red", + "value": 0.8 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 0, + "y": 27 + }, + "id": 29, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => r._measurement==\"${measurement}\" and r._field==\"effRelDistFromPeak\")", + "refId": "A" + } + ], + "title": "Relative distance from BEP", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "flowLongterNRMSD {geoLocation_x=\"0\", geoLocation_y=\"0\", geoLocation_z=\"0\", id=\"b1226bbc99239bc5\", model=\"H05K-S03R+HGM1X-X280KO\", name=\"m1\", role=\"RotationalDeviceController\", softwareType=\"machine\", subType=\"centrifugal pumps\", supplier=\"hydrostal\", type=\"generic\", unit=\"m3/h\", uuid=\"null\"}" + }, + "properties": [ + { + "id": "custom.axisPlacement", + "value": "right" + } + ] + } + ] + }, + "gridPos": { + "h": 10, + "w": 7, + "x": 17, + "y": 27 + }, + "id": 18, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => r._measurement==\"${measurement}\" and ( r._field==\"flowLongterNRMSD\" or r._field==\"flowNrmse\") )\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "A" + } + ], + "title": "Predictive maintenance flow", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "Flow / Power", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [ + { + "__systemRef": "hideSeriesFrom", + "matcher": { + "id": "byNames", + "options": { + "mode": "exclude", + "names": [ + "downstream_predicted_efficiency {geoLocation_x=\"0\", geoLocation_y=\"0\", geoLocation_z=\"0\", id=\"b1226bbc99239bc5\", model=\"H05K-S03R+HGM1X-X280KO\", name=\"m1\", role=\"RotationalDeviceController\", softwareType=\"machine\", subType=\"centrifugal pumps\", supplier=\"hydrostal\", type=\"generic\", unit=\"m3/h\", uuid=\"null\"}" + ], + "prefix": "All except:", + "readOnly": true + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": false, + "tooltip": false, + "viz": true + } + } + ] + } + ] + }, + "gridPos": { + "h": 13, + "w": 24, + "x": 0, + "y": 37 + }, + "id": 17, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => r._measurement==\"${measurement}\" and ( r._field==\"downstream_measured_efficiency\" or r._field==\"downstream_predicted_efficiency\") )\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "A" + } + ], + "title": "Efficiency", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 50 + }, + "id": 10, + "panels": [], + "title": "Machine control", + "type": "row" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 10 + }, + { + "color": "#EAB839", + "value": 20 + }, + { + "color": "yellow", + "value": 80 + }, + { + "color": "red", + "value": 90 + } + ] + } + }, + "overrides": [ + { + "__systemRef": "hideSeriesFrom", + "matcher": { + "id": "byNames", + "options": { + "mode": "exclude", + "names": [ + "position {geoLocation_x=\"0\", geoLocation_y=\"0\", geoLocation_z=\"0\", id=\"b1226bbc99239bc5\", model=\"H05K-S03R+HGM1X-X280KO\", name=\"m1\", role=\"RotationalDeviceController\", softwareType=\"machine\", subType=\"centrifugal pumps\", supplier=\"hydrostal\", type=\"generic\", unit=\"m3/h\", uuid=\"null\"}" + ], + "prefix": "All except:", + "readOnly": true + } + }, + "properties": [] + } + ] + }, + "gridPos": { + "h": 11, + "w": 24, + "x": 0, + "y": 51 + }, + "id": 13, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "8.0.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => r._measurement==\"${measurement}\" and ( r._field==\"ctrl\" or r._field==\"moveTimeleft\" ))\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "A" + } + ], + "title": "Control", + "type": "timeseries" + } + ], + "refresh": "10s", + "schemaVersion": 39, + "tags": [], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "influxdb", + "value": "influxdb" + }, + "hide": 0, + "includeAll": false, + "label": "dbase", + "multi": false, + "name": "dbase", + "options": [ + { + "selected": true, + "text": "influxdb", + "value": "influxdb" + } + ], + "query": "influxdb", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "current": { + "selected": false, + "text": "m1", + "value": "m1" + }, + "hide": 0, + "includeAll": false, + "label": "", + "multi": false, + "name": "measurement", + "options": [ + { + "selected": true, + "text": "m1", + "value": "m1" + } + ], + "query": "m1", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "current": { + "selected": false, + "text": "lvl2", + "value": "lvl2" + }, + "hide": 0, + "includeAll": false, + "multi": false, + "name": "bucket", + "options": [ + { + "selected": true, + "text": "lvl2", + "value": "lvl2" + } + ], + "query": "lvl2", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h" + ] + }, + "timezone": "browser", + "title": "machineDashboard", + "uid": "", + "version": 40, + "weekStart": "" +} \ No newline at end of file diff --git a/config/machineGroup.json b/config/machineGroup.json new file mode 100644 index 0000000..3a30e79 --- /dev/null +++ b/config/machineGroup.json @@ -0,0 +1,2609 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0,255,255,1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 22, + "links": [], + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 1, + "panels": [], + "title": "Realtime Prio flow", + "type": "row" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 250, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 150 + }, + { + "color": "red", + "value": 180 + } + ] + }, + "unit": "m3/h" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 4, + "x": 0, + "y": 1 + }, + "id": 25, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => ( r._measurement==\"mG1\" ) and ( r._field==\"downstream_predicted_flow\" ) )\n |> last()", + "refId": "A" + } + ], + "title": "Realtime flow", + "transformations": [ + { + "id": "calculateField", + "options": { + "alias": "cost / h", + "binary": { + "left": "upstream_predicted_power {geoLocation=\"undefined\", id=\"eb9bc2362e755b9e\", model=\"undefined\", name=\"mG1\", role=\"GroupController\", softwareType=\"machineGroup\", subType=\"undefined\", supplier=\"undefined\", type=\"undefined\", unit=\"undefined\", uuid=\"undefined\"}", + "operator": "*", + "right": "0.25" + }, + "mode": "binary", + "reduce": { + "reducer": "sum" + }, + "replaceFields": true + } + } + ], + "type": "gauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 300, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 100 + }, + { + "color": "red", + "value": 180 + } + ] + }, + "unit": "kwatt" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 5, + "x": 4, + "y": 1 + }, + "id": 23, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => ( r._measurement==\"mG1\" ) and ( r._field==\"upstream_measured_power\" or r._field==\"upstream_predicted_power\" ) )\n |> last()", + "refId": "A" + } + ], + "title": "Realtime verbruik", + "type": "gauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 300, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 20 + }, + { + "color": "red", + "value": 50 + } + ] + }, + "unit": "currencyEUR" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 2, + "x": 9, + "y": 1 + }, + "id": 39, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r._measurement == \"mG1\" and r._field == \"upstream_predicted_power\")\n |> last()\n |> map(fn: (r) => ({ r with _value: r._value * 0.25 }))\n |> yield(name: \"multiplied_value\")", + "refId": "A" + } + ], + "title": "Realtime kost", + "transformations": [ + { + "id": "calculateField", + "options": { + "alias": "cost / h", + "binary": { + "left": "upstream_predicted_power {geoLocation=\"undefined\", id=\"07ec60b7b7c17582\", model=\"undefined\", name=\"mG2\", role=\"GroupController\", softwareType=\"machineGroup\", subType=\"undefined\", supplier=\"undefined\", type=\"undefined\", unit=\"undefined\", uuid=\"undefined\"}", + "operator": "*", + "right": "0.25" + }, + "mode": "binary", + "reduce": { + "reducer": "sum" + }, + "replaceFields": true + } + } + ], + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 300, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 20 + }, + { + "color": "red", + "value": 50 + } + ] + }, + "unit": "m3/kW" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 3, + "x": 11, + "y": 1 + }, + "id": 44, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r._measurement == \"mG1\" and r._field == \"downstream_predicted_efficiency\")\n |> last()\n |> map(fn: (r) => ({ r with _value: r._value}))\n |> yield(name: \"multiplied_value\")", + "refId": "A" + } + ], + "title": "Flow / Power", + "transformations": [ + { + "id": "calculateField", + "options": { + "alias": "cost / h", + "binary": { + "left": "upstream_predicted_power {geoLocation=\"undefined\", id=\"07ec60b7b7c17582\", model=\"undefined\", name=\"mG2\", role=\"GroupController\", softwareType=\"machineGroup\", subType=\"undefined\", supplier=\"undefined\", type=\"undefined\", unit=\"undefined\", uuid=\"undefined\"}", + "operator": "*", + "right": "0.25" + }, + "mode": "binary", + "reduce": { + "reducer": "sum" + }, + "replaceFields": true + } + } + ], + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "blue", + "value": null + } + ] + }, + "unit": "kwatth" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 7, + "x": 14, + "y": 1 + }, + "id": 27, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => \n r._measurement == \"mG1\" and \n r._field == \"upstream_predicted_power\"\n )\n |> group()\n |> window(every: $__interval, period: $__interval)\n |> mean(column: \"_value\")\n |> duplicate(column: \"_start\", as: \"_time\")\n |> drop(columns: [\"_start\", \"_stop\"])\n |> yield(name: \"rolling_average_predicted_power\")\n", + "refId": "A" + } + ], + "title": "Verbruik", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "blue", + "value": null + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 3, + "x": 21, + "y": 1 + }, + "id": 42, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => ( r._measurement==\"mG1\" ) and ( r._field==\"absDistFromPeak\" ) )\n |> last()\n", + "refId": "A" + } + ], + "title": "Distance from group BEP", + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 8 + }, + "id": 34, + "panels": [], + "title": "Realtime Optimaal", + "type": "row" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 250, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 150 + }, + { + "color": "red", + "value": 180 + } + ] + }, + "unit": "m3/h" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 4, + "x": 0, + "y": 9 + }, + "id": 37, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => ( r._measurement==\"mG2\" ) and ( r._field==\"downstream_predicted_flow\" ) )\n |> last()", + "refId": "A" + } + ], + "title": "Realtime flow", + "transformations": [ + { + "id": "calculateField", + "options": { + "alias": "cost / h", + "binary": { + "left": "upstream_predicted_power {geoLocation=\"undefined\", id=\"eb9bc2362e755b9e\", model=\"undefined\", name=\"mG1\", role=\"GroupController\", softwareType=\"machineGroup\", subType=\"undefined\", supplier=\"undefined\", type=\"undefined\", unit=\"undefined\", uuid=\"undefined\"}", + "operator": "*", + "right": "0.25" + }, + "mode": "binary", + "reduce": { + "reducer": "sum" + }, + "replaceFields": true + } + } + ], + "type": "gauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 300, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 100 + }, + { + "color": "red", + "value": 180 + } + ] + }, + "unit": "kwatt" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 5, + "x": 4, + "y": 9 + }, + "id": 24, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => ( r._measurement==\"mG2\" ) and ( r._field==\"upstream_measured_power\" or r._field==\"upstream_predicted_power\" ) )\n |> last()", + "refId": "A" + } + ], + "title": "Realtime verbruik", + "type": "gauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 300, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 20 + }, + { + "color": "red", + "value": 50 + } + ] + }, + "unit": "currencyEUR" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 2, + "x": 9, + "y": 9 + }, + "id": 30, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r._measurement == \"mG2\" and r._field == \"upstream_predicted_power\")\n |> last()\n |> map(fn: (r) => ({ r with _value: r._value * 0.25 }))\n |> yield(name: \"multiplied_value\")", + "refId": "A" + } + ], + "title": "Realtime kost", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 300, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 20 + }, + { + "color": "red", + "value": 50 + } + ] + }, + "unit": "m3/kW" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 3, + "x": 11, + "y": 9 + }, + "id": 45, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r._measurement == \"mG2\" and r._field == \"downstream_predicted_efficiency\")\n |> last()\n |> map(fn: (r) => ({ r with _value: r._value}))\n |> yield(name: \"multiplied_value\")", + "refId": "A" + } + ], + "title": "Flow / Power", + "transformations": [ + { + "id": "calculateField", + "options": { + "alias": "cost / h", + "binary": { + "left": "upstream_predicted_power {geoLocation=\"undefined\", id=\"07ec60b7b7c17582\", model=\"undefined\", name=\"mG2\", role=\"GroupController\", softwareType=\"machineGroup\", subType=\"undefined\", supplier=\"undefined\", type=\"undefined\", unit=\"undefined\", uuid=\"undefined\"}", + "operator": "*", + "right": "0.25" + }, + "mode": "binary", + "reduce": { + "reducer": "sum" + }, + "replaceFields": true + } + } + ], + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "blue", + "value": null + } + ] + }, + "unit": "kwatth" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 7, + "x": 14, + "y": 9 + }, + "id": 28, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => \n r._measurement == \"mG2\" and \n r._field == \"upstream_predicted_power\"\n )\n |> group()\n |> window(every: $__interval, period: $__interval)\n |> mean(column: \"_value\")\n |> duplicate(column: \"_start\", as: \"_time\")\n |> drop(columns: [\"_start\", \"_stop\"])\n |> yield(name: \"rolling_average_predicted_power\")\n", + "refId": "A" + } + ], + "title": "Verbruik", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "blue", + "value": null + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 3, + "x": 21, + "y": 9 + }, + "id": 43, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => ( r._measurement==\"mG2\" ) and ( r._field==\"absDistFromPeak\" ) )\n |> last()\n", + "refId": "A" + } + ], + "title": "Distance from group BEP", + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 16 + }, + "id": 35, + "panels": [], + "title": "Verschillen", + "type": "row" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 250, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 150 + }, + { + "color": "red", + "value": 180 + } + ] + }, + "unit": "m3/h" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 4, + "x": 0, + "y": 17 + }, + "id": 38, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) =>\n (r._measurement == \"mG2\" or r._measurement == \"mG1\") and \n r._field == \"downstream_predicted_flow\"\n )\n |> last()\n // Add a constant key so that both records share the same pivot key\n |> map(fn: (r) => ({ r with pivotKey: \"last\" }))\n // Drop _time to ensure both records are combined in the pivot\n |> drop(columns: [\"_time\"])\n |> group(columns: [\"pivotKey\"])\n // Pivot using the constant key, so that both mG2 and mG1 values appear in one row\n |> pivot(rowKey: [\"pivotKey\"], columnKey: [\"_measurement\"], valueColumn: \"_value\")\n // Compute the difference: mG2 minus mG1\n |> map(fn: (r) => ({ r with diff: r.mG1 - r.mG2 }))\n |> keep(columns: [\"diff\"])\n |> yield(name: \"difference\")", + "refId": "A" + } + ], + "title": "Realtime flow verschil", + "transformations": [ + { + "id": "calculateField", + "options": { + "alias": "cost / h", + "binary": { + "left": "upstream_predicted_power {geoLocation=\"undefined\", id=\"eb9bc2362e755b9e\", model=\"undefined\", name=\"mG1\", role=\"GroupController\", softwareType=\"machineGroup\", subType=\"undefined\", supplier=\"undefined\", type=\"undefined\", unit=\"undefined\", uuid=\"undefined\"}", + "operator": "*", + "right": "0.25" + }, + "mode": "binary", + "reduce": { + "reducer": "sum" + }, + "replaceFields": true + } + } + ], + "type": "gauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 300, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 100 + }, + { + "color": "red", + "value": 180 + } + ] + }, + "unit": "kwatt" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 5, + "x": 4, + "y": 17 + }, + "id": 29, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) =>\n (r._measurement == \"mG2\" or r._measurement == \"mG1\") and \n r._field == \"upstream_predicted_power\"\n )\n |> last()\n // Add a constant key so that both records share the same pivot key\n |> map(fn: (r) => ({ r with pivotKey: \"last\" }))\n // Drop _time to ensure both records are combined in the pivot\n |> drop(columns: [\"_time\"])\n |> group(columns: [\"pivotKey\"])\n // Pivot using the constant key, so that both mG2 and mG1 values appear in one row\n |> pivot(rowKey: [\"pivotKey\"], columnKey: [\"_measurement\"], valueColumn: \"_value\")\n // Compute the difference: mG2 minus mG1\n |> map(fn: (r) => ({ r with diff: r.mG1 - r.mG2 }))\n |> keep(columns: [\"diff\"])\n |> yield(name: \"difference\")\n", + "refId": "A" + } + ], + "title": "Realtime power verschil", + "type": "gauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 20 + }, + { + "color": "red", + "value": 50 + } + ] + }, + "unit": "Euro (€) / h" + }, + "overrides": [ + { + "__systemRef": "hideSeriesFrom", + "matcher": { + "id": "byNames", + "options": { + "mode": "exclude", + "names": [ + "diff upstream_predicted_power" + ], + "prefix": "All except:", + "readOnly": true + } + }, + "properties": [] + } + ] + }, + "gridPos": { + "h": 7, + "w": 5, + "x": 9, + "y": 17 + }, + "id": 26, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "mG1 = from(bucket: \"${bucket}\")\n |> range(start: -90m, stop: now())\n |> filter(fn: (r) => r._measurement == \"mG1\" and r._field == \"upstream_predicted_power\")\n |> last()\n |> map(fn: (r) => ({\n _time: now(), // set a common timestamp\n joinKey: \"last\", // add a constant key for joining\n mG1_Cost: float(v: r._value) * 0.25\n }))\n\nmG2 = from(bucket: \"${bucket}\")\n |> range(start: -90m, stop: now())\n |> filter(fn: (r) => r._measurement == \"mG2\" and r._field == \"upstream_predicted_power\")\n |> last()\n |> map(fn: (r) => ({\n _time: now(), // set the same common timestamp\n joinKey: \"last\", // add the constant key for joining\n mG2_Cost: float(v: r._value) * 0.25\n }))\n\njoin(\n tables: {mG1: mG1, mG2: mG2},\n on: [\"joinKey\"],\n method: \"inner\"\n)\n |> map(fn: (r) => ({\n _time: r._time,\n diff: r.mG1_Cost - r.mG2_Cost\n }))\n |> yield(name: \"diff\")", + "refId": "A" + } + ], + "title": "Realtime verschil", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "Over een tijdsperiode van 1 uur het rollend gemiddelde in euro/h", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "Euro (€) / h" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 8, + "x": 14, + "y": 17 + }, + "id": 32, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "vertical", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^scaled_difference$/", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "// Process mG1: Aggregate at 1m, compute moving average, and scale\nmG1 = from(bucket: \"${bucket}\")\n |> range(start: -90m, stop: now())\n |> filter(fn: (r) => r._measurement == \"mG1\" and r._field == \"upstream_predicted_power\")\n |> aggregateWindow(every: 1m, fn: mean, createEmpty: false)\n |> movingAverage(n: 60)\n |> map(fn: (r) => ({\n _time: r._time,\n mG1_scaled: float(v: r._value)\n }))\n\n// Process mG2: Same processing as mG1\nmG2 = from(bucket: \"${bucket}\")\n |> range(start: -90m, stop: now())\n |> filter(fn: (r) => r._measurement == \"mG2\" and r._field == \"upstream_predicted_power\")\n |> aggregateWindow(every: 1m, fn: mean, createEmpty: false)\n |> movingAverage(n: 60)\n |> map(fn: (r) => ({\n _time: r._time,\n mG2_scaled: float(v: r._value)\n }))\n\n// Join the two streams on _time and compute the cost difference\njoin(\n tables: {mG1: mG1, mG2: mG2},\n on: [\"_time\"],\n method: \"inner\"\n)\n |> map(fn: (r) => ({\n _time: r._time,\n // Assuming 0.25 Euro per kWh:\n scaled_difference: (r.mG1_scaled - r.mG2_scaled) * 0.25\n }))\n |> yield(name: \"scaled_rolling_difference\")", + "refId": "A" + } + ], + "title": "Rollend gemiddeld verschil / h", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "Rollend gemiddelde kost / h", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "mappings": [], + "max": 16, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "blue", + "value": null + } + ] + }, + "unit": "Euro (€) / h" + }, + "overrides": [] + }, + "gridPos": { + "h": 14, + "w": 9, + "x": 0, + "y": 24 + }, + "id": 31, + "options": { + "displayMode": "lcd", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "text" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: -90m, stop: now())\n |> filter(fn: (r) => \n r._measurement == \"mG1\" and \n r._field == \"upstream_predicted_power\"\n )\n // Aggregate raw data to 1-minute intervals.\n |> aggregateWindow(every: 1m, fn: mean, createEmpty: false)\n // Compute a 60-point moving average (rolling average over the last 60 minutes).\n |> movingAverage(n: 60)\n // Re-aggregate to 1-minute intervals (adjust if you meant 6m for 10 points per hour)\n |> aggregateWindow(every: 1m, fn: last, createEmpty: false)\n // Multiply each value by 0.25\n |> map(fn: (r) => ({\n _time: r._time,\n _value: r._value * 0.25\n }))\n |> yield(name: \"mG1\")\n", + "refId": "A" + }, + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "hide": false, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: -90m, stop: now())\r\n |> filter(fn: (r) => \r\n r._measurement == \"mG2\" and \r\n r._field == \"upstream_predicted_power\"\r\n )\r\n // Aggregate raw data to 1-minute intervals.\r\n |> aggregateWindow(every: 1m, fn: mean, createEmpty: false)\r\n // Compute a 60-point moving average (rolling average over the last 60 minutes).\r\n |> movingAverage(n: 60)\r\n // Re-aggregate to 1-minute intervals (adjust if you meant 6m for 10 points per hour)\r\n |> aggregateWindow(every: 1m, fn: last, createEmpty: false)\r\n // Multiply each value by 0.25\r\n |> map(fn: (r) => ({\r\n _time: r._time,\r\n _value: r._value * 0.25\r\n }))\r\n |> yield(name: \"mG2\")\r\n", + "refId": "B" + } + ], + "title": "Kosten Rollend gemiddelde / h", + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "Over een tijdsperiode van 1 uur het rollend gemiddelde in kWh", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "kwatth" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 7, + "x": 9, + "y": 24 + }, + "id": 41, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: -90m, stop: now())\n |> filter(fn: (r) => \n r._measurement == \"mG1\" and \n r._field == \"upstream_predicted_power\"\n )\n // Aggregate raw data to 1-minute intervals.\n |> aggregateWindow(every: 1m, fn: mean, createEmpty: false)\n // Compute a 60-point moving average (rolling average over the last 60 minutes).\n |> movingAverage(n: 60)\n // Re-aggregate to 6-minute intervals to consistently yield 60 data points per hour.\n |> aggregateWindow(every: 1m, fn: last, createEmpty: false)\n |> yield(name: \"rolling_average\")\n", + "refId": "A" + } + ], + "title": "mG1 Rollend gemiddeld verschil / kWh", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "Het rollend gemiddelde * 8766 uur", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 20, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + } + ] + }, + "unit": "currencyEUR" + }, + "overrides": [] + }, + "gridPos": { + "h": 14, + "w": 6, + "x": 16, + "y": 24 + }, + "id": 33, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^scaled_difference$/", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "// Process mG1: Filter, aggregate, compute moving average, and scale\nmG1 = from(bucket: \"${bucket}\")\n |> range(start: -90m, stop: now())\n |> filter(fn: (r) => r._measurement == \"mG1\" and r._field == \"upstream_predicted_power\")\n |> aggregateWindow(every: 1m, fn: mean, createEmpty: false)\n |> movingAverage(n: 60)\n |> map(fn: (r) => ({\n _time: r._time,\n mG1_scaled: float(v: r._value) * 8766.0\n }))\n\n// Process mG2: Filter, aggregate, compute moving average, and scale\nmG2 = from(bucket: \"${bucket}\")\n |> range(start: -90m, stop: now())\n |> filter(fn: (r) => r._measurement == \"mG2\" and r._field == \"upstream_predicted_power\")\n |> aggregateWindow(every: 1m, fn: mean, createEmpty: false)\n |> movingAverage(n: 60)\n |> map(fn: (r) => ({\n _time: r._time,\n mG2_scaled: float(v: r._value) * 8766.0\n }))\n\n// Join the two streams on _time and compute the difference\njoin(\n tables: {mG1: mG1, mG2: mG2},\n on: [\"_time\"],\n method: \"inner\"\n)\n |> map(fn: (r) => ({\n _time: r._time,\n scaled_difference: ( r.mG1_scaled - r.mG2_scaled ) * 0.25\n }))\n |> yield(name: \"scaled_rolling_difference\")\n\n\n\n\n\n", + "refId": "A" + } + ], + "title": "Projectie over 1 jaar", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "Over een tijdsperiode van 1 uur het rollend gemiddelde in kWh", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "kwatth" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 7, + "x": 9, + "y": 31 + }, + "id": 40, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "vertical", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: -90m, stop: now())\n |> filter(fn: (r) => \n r._measurement == \"mG2\" and \n r._field == \"upstream_predicted_power\"\n )\n // Aggregate raw data to 1-minute intervals.\n |> aggregateWindow(every: 1m, fn: mean, createEmpty: false)\n // Compute a 60-point moving average (rolling average over the last 60 minutes).\n |> movingAverage(n: 60)\n // Re-aggregate to 6-minute intervals to consistently yield 60 data points per hour.\n |> aggregateWindow(every: 1m, fn: last, createEmpty: false)\n |> yield(name: \"rolling_average\")\n\n", + "refId": "A" + } + ], + "title": "MG2 Rollend gemiddeld verschil / kWh", + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 38 + }, + "id": 5, + "panels": [], + "title": "Measurements", + "type": "row" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "Flow / Power", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 13, + "w": 24, + "x": 0, + "y": 39 + }, + "id": 17, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => ( r._measurement==\"mG1\" or r._measurement==\"mG2\" ) and ( r._field==\"downstream_measured_efficiency\" or r._field==\"downstream_predicted_efficiency\") )\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "A" + } + ], + "title": "Efficiency", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "diff {_field=\"upstream_predicted_power\"}" + }, + "properties": [ + { + "id": "custom.axisPlacement", + "value": "right" + }, + { + "id": "custom.drawStyle", + "value": "points" + } + ] + } + ] + }, + "gridPos": { + "h": 12, + "w": 24, + "x": 0, + "y": 52 + }, + "id": 16, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => ( r._measurement==\"mG1\" or r._measurement==\"mG2\" ) and ( r._field==\"upstream_measured_power\" or r._field==\"upstream_predicted_power\" ) )\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "A" + }, + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "hide": false, + "query": "mg1 = from(bucket: \"${bucket}\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => \r\n r._measurement == \"mG1\" and \r\n (r._field == \"upstream_measured_power\" or r._field == \"upstream_predicted_power\")\r\n )\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)\r\n\r\nmg2 = from(bucket: \"${bucket}\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => \r\n r._measurement == \"mG2\" and \r\n (r._field == \"upstream_measured_power\" or r._field == \"upstream_predicted_power\")\r\n )\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)\r\n\r\njoin(\r\n tables: {mg1: mg1, mg2: mg2},\r\n on: [\"_time\", \"_field\"],\r\n method: \"inner\"\r\n)\r\n|> map(fn: (r) => ({\r\n _time: r._time,\r\n _field: r._field,\r\n diff: r._value_mg1 - r._value_mg2\r\n}))", + "refId": "B" + } + ], + "title": "machineGroup power comparison", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 11, + "w": 24, + "x": 0, + "y": 64 + }, + "id": 14, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => ( r._measurement==\"mG1\" or r._measurement==\"mG2\" ) and (r._field==\"downstream_predicted_flow\") )\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "A" + } + ], + "title": "Flow", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 75 + }, + "id": 10, + "panels": [], + "title": "Machine control", + "type": "row" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 10 + }, + { + "color": "#EAB839", + "value": 20 + }, + { + "color": "yellow", + "value": 80 + }, + { + "color": "red", + "value": 90 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "m1 ctrl {geoLocation_x=\"0\", geoLocation_y=\"0\", geoLocation_z=\"0\", id=\"b1226bbc99239bc5\", model=\"H05K-S03R+HGM1X-X280KO\", name=\"m1\", role=\"RotationalDeviceController\", softwareType=\"machine\", subType=\"centrifugal pumps\", supplier=\"hydrostal\", type=\"generic\", unit=\"m3/h\", uuid=\"null\"}" + }, + "properties": [ + { + "id": "custom.axisPlacement", + "value": "right" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "m2 ctrl {geoLocation_x=\"0\", geoLocation_y=\"0\", geoLocation_z=\"0\", id=\"f8a5f0524be2a754\", model=\"H05K-S03R+HGM1X-X280KO\", name=\"m2\", role=\"RotationalDeviceController\", softwareType=\"machine\", subType=\"centrifugal pumps\", supplier=\"hydrostal\", type=\"generic\", unit=\"m3/h\", uuid=\"null\"}" + }, + "properties": [ + { + "id": "custom.axisPlacement", + "value": "right" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "m3 ctrl {geoLocation_x=\"0\", geoLocation_y=\"0\", geoLocation_z=\"0\", id=\"b7cee587e61eeef4\", model=\"H05K-S03R+HGM1X-X280KO\", name=\"m3\", role=\"RotationalDeviceController\", softwareType=\"machine\", subType=\"centrifugal pumps\", supplier=\"hydrostal\", type=\"generic\", unit=\"m3/h\", uuid=\"null\"}" + }, + "properties": [ + { + "id": "custom.axisPlacement", + "value": "right" + } + ] + }, + { + "__systemRef": "hideSeriesFrom", + "matcher": { + "id": "byNames", + "options": { + "mode": "exclude", + "names": [ + "m1 ctrl {geoLocation_x=\"0\", geoLocation_y=\"0\", geoLocation_z=\"0\", id=\"b1226bbc99239bc5\", model=\"H05K-S03R+HGM1X-X280KO\", name=\"m1\", role=\"RotationalDeviceController\", softwareType=\"machine\", subType=\"centrifugal pumps\", supplier=\"hydrostal\", type=\"generic\", unit=\"m3/h\", uuid=\"null\"}" + ], + "prefix": "All except:", + "readOnly": true + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": false, + "tooltip": false, + "viz": true + } + } + ] + } + ] + }, + "gridPos": { + "h": 11, + "w": 24, + "x": 0, + "y": 76 + }, + "id": 13, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "8.0.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) =>\n r._field == \"ctrl\" and \n (r._measurement == \"m1\" or \n r._measurement == \"m2\" or \n r._measurement == \"m3\" or \n r._measurement == \"m4\" or \n r._measurement == \"m5\" or \n r._measurement == \"m6\")\n )\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "A" + }, + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "hide": false, + "query": "", + "refId": "B" + } + ], + "title": "Control", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 10 + }, + { + "color": "#EAB839", + "value": 20 + }, + { + "color": "yellow", + "value": 80 + }, + { + "color": "red", + "value": 90 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 12, + "w": 12, + "x": 0, + "y": 87 + }, + "id": 18, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "8.0.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => ( r._measurement==\"m1\" or r._measurement==\"m2\" or r._measurement==\"m3\" or r._measurement==\"mG1\" ) and ( r._field==\"downstream_predicted_flow\") )\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "A" + } + ], + "title": "mG1 flow", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 10 + }, + { + "color": "#EAB839", + "value": 20 + }, + { + "color": "yellow", + "value": 80 + }, + { + "color": "red", + "value": 90 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 12, + "w": 12, + "x": 12, + "y": 87 + }, + "id": 20, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "8.0.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => ( r._measurement==\"m4\" or r._measurement==\"m5\" or r._measurement==\"m6\" or r._measurement==\"mG2\" ) and (r._field==\"downstream_predicted_flow\") )\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "A" + } + ], + "title": "mG2 flow", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 10 + }, + { + "color": "#EAB839", + "value": 20 + }, + { + "color": "yellow", + "value": 80 + }, + { + "color": "red", + "value": 90 + } + ] + } + }, + "overrides": [ + { + "__systemRef": "hideSeriesFrom", + "matcher": { + "id": "byNames", + "options": { + "mode": "exclude", + "names": [ + "mG2 downstream_predicted_flow {geoLocation=\"undefined\", id=\"07ec60b7b7c17582\", model=\"undefined\", name=\"mG2\", role=\"GroupController\", softwareType=\"machineGroup\", subType=\"undefined\", supplier=\"undefined\", type=\"undefined\", unit=\"undefined\", uuid=\"undefined\"}", + "mG1 downstream_predicted_flow {geoLocation=\"undefined\", id=\"eb9bc2362e755b9e\", model=\"undefined\", name=\"mG1\", role=\"GroupController\", softwareType=\"machineGroup\", subType=\"undefined\", supplier=\"undefined\", type=\"undefined\", unit=\"undefined\", uuid=\"undefined\"}" + ], + "prefix": "All except:", + "readOnly": true + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": false, + "tooltip": false, + "viz": true + } + } + ] + } + ] + }, + "gridPos": { + "h": 12, + "w": 24, + "x": 0, + "y": 99 + }, + "id": 21, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "8.0.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => ( r._measurement==\"m1\" or r._measurement==\"m2\" or r._measurement==\"m3\" or r._measurement==\"mG1\" ) and (r._field==\"downstream_predicted_flow\") )\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "A" + }, + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "hide": false, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn:(r) => ( r._measurement==\"m4\" or r._measurement==\"m5\" or r._measurement==\"m6\" or r._measurement==\"mG2\" ) and (r._field==\"downstream_predicted_flow\") )\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "B" + } + ], + "title": "mG1 and mG2 Flow", + "type": "timeseries" + } + ], + "refresh": "10s", + "schemaVersion": 39, + "tags": [], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "influxdb", + "value": "influxdb" + }, + "hide": 0, + "includeAll": false, + "label": "dbase", + "multi": false, + "name": "dbase", + "options": [ + { + "selected": true, + "text": "influxdb", + "value": "influxdb" + } + ], + "query": "influxdb", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "current": { + "selected": true, + "text": "> mG1", + "value": "mG1" + }, + "hide": 0, + "includeAll": false, + "label": "", + "multi": false, + "name": "measurement", + "options": [ + { + "selected": false, + "text": "template", + "value": "template" + } + ], + "query": "template", + "queryValue": "mG1", + "skipUrlSync": false, + "type": "custom" + }, + { + "current": { + "selected": true, + "text": "> lvl2", + "value": "lvl2" + }, + "hide": 0, + "includeAll": false, + "multi": false, + "name": "bucket", + "options": [ + { + "selected": false, + "text": "template", + "value": "template" + } + ], + "query": "template", + "queryValue": "lvl2", + "skipUrlSync": false, + "type": "custom" + } + ] + }, + "time": { + "from": "now-30m", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h" + ] + }, + "timezone": "browser", + "title": "MultipleMachineGroups", + "uid": "eefi4duhkar5sd", + "version": 94, + "weekStart": "" + } \ No newline at end of file diff --git a/config/measurement.json b/config/measurement.json new file mode 100644 index 0000000..c565bad --- /dev/null +++ b/config/measurement.json @@ -0,0 +1,973 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0,255,255,1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 14, + "links": [], + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 1, + "panels": [], + "title": "Machine Overview", + "type": "row" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 6, + "x": 0, + "y": 1 + }, + "id": 2, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "frameIndex": 2, + "showHeader": false + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: -1y) // Adjust time range as needed\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"state\")\n |> sort(columns: [\"_time\"], desc: true)\n |> limit(n: 1)", + "refId": "A" + } + ], + "title": "Machine State", + "type": "table" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 6, + "x": 6, + "y": 1 + }, + "id": 4, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "frameIndex": 1, + "showHeader": false + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: -1y) // Adjust time range as needed\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"mode\")\n |> sort(columns: [\"_time\"], desc: true)\n |> limit(n: 1)", + "refId": "A" + } + ], + "title": "Machine Mode", + "type": "table" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 5 + }, + "id": 5, + "panels": [], + "title": "Measurements", + "type": "row" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "displayName": "pressure", + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 6, + "x": 0, + "y": 6 + }, + "id": 6, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => r._measurement==\"${measurement}\" and r._field==\"upstream_measured_pressure\" or r._field==\"upstream_predicted_pressure\")\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "A" + } + ], + "title": "Upstream pressure", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 5, + "x": 6, + "y": 6 + }, + "id": 15, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => r._measurement==\"${measurement}\" and r._field==\"differential_measured_pressure\" )\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "A" + } + ], + "title": "Differential pressure", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 6, + "x": 11, + "y": 6 + }, + "id": 16, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => r._measurement==\"${measurement}\" and ( r._field==\"upstream_measured_power\" or r._field==\"upstream_predicted_power\" ) )\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "A" + } + ], + "title": "Power", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 7, + "x": 17, + "y": 6 + }, + "id": 14, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => r._measurement==\"${measurement}\" and ( r._field==\"downstream_measured_flow\" or r._field==\"downstream_predicted_flow\") )\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "A" + } + ], + "title": "Flow", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "fixed" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "dashed" + } + }, + "decimals": 2, + "displayName": "pressure", + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 1500 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 6, + "x": 0, + "y": 11 + }, + "id": 7, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => r._measurement==\"${measurement}\" and r._field==\"downstream_measured_pressure\" or r._field==\"downstream_predicted_pressure\")\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "A" + } + ], + "title": "Downstream pressure", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "Flow / Power", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 13, + "w": 24, + "x": 0, + "y": 16 + }, + "id": 17, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => r._measurement==\"${measurement}\" and ( r._field==\"downstream_measured_efficiency\" or r._field==\"downstream_predicted_efficiency\") )\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "A" + } + ], + "title": "Efficiency", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 29 + }, + "id": 10, + "panels": [], + "title": "Machine control", + "type": "row" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 10 + }, + { + "color": "#EAB839", + "value": 20 + }, + { + "color": "yellow", + "value": 80 + }, + { + "color": "red", + "value": 90 + } + ] + } + }, + "overrides": [ + { + "__systemRef": "hideSeriesFrom", + "matcher": { + "id": "byNames", + "options": { + "mode": "exclude", + "names": [ + "position {geoLocation_x=\"0\", geoLocation_y=\"0\", geoLocation_z=\"0\", id=\"b1226bbc99239bc5\", model=\"H05K-S03R+HGM1X-X280KO\", name=\"m1\", role=\"RotationalDeviceController\", softwareType=\"machine\", subType=\"centrifugal pumps\", supplier=\"hydrostal\", type=\"generic\", unit=\"m3/h\", uuid=\"null\"}" + ], + "prefix": "All except:", + "readOnly": true + } + }, + "properties": [] + } + ] + }, + "gridPos": { + "h": 11, + "w": 24, + "x": 0, + "y": 30 + }, + "id": 13, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "8.0.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn:(r) => r._measurement==\"${measurement}\" and r._field==\"ctrl\")\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "A" + } + ], + "title": "Control", + "type": "timeseries" + } + ], + "refresh": "10s", + "schemaVersion": 39, + "tags": [], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "influxdb", + "value": "influxdb" + }, + "hide": 0, + "includeAll": false, + "label": "dbase", + "multi": false, + "name": "dbase", + "options": [ + { + "selected": true, + "text": "influxdb", + "value": "influxdb" + } + ], + "query": "influxdb", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "current": { + "selected": false, + "text": "template", + "value": "template" + }, + "hide": 0, + "includeAll": false, + "label": "", + "multi": false, + "name": "measurement", + "options": [ + { + "selected": true, + "text": "template", + "value": "template" + } + ], + "query": "template", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "current": { + "selected": false, + "text": "template", + "value": "template" + }, + "hide": 0, + "includeAll": false, + "multi": false, + "name": "bucket", + "options": [ + { + "selected": true, + "text": "template", + "value": "template" + } + ], + "query": "template", + "skipUrlSync": false, + "type": "custom" + } + ] + }, + "time": { + "from": "now-15m", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h" + ] + }, + "timezone": "browser", + "title": "template", + "uid": "test", + "version": 8, + "weekStart": "" +} \ No newline at end of file diff --git a/config/monster.json b/config/monster.json new file mode 100644 index 0000000..af7b620 --- /dev/null +++ b/config/monster.json @@ -0,0 +1,2682 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 4, + "links": [], + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 2, + "panels": [], + "title": "Realtime values", + "type": "row" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#2b3146", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#818c99", + "value": null + } + ] + }, + "unit": "dateTimeAsSystem" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 20, + "x": 0, + "y": 1 + }, + "id": 37, + "options": { + "colorMode": "background_solid", + "graphMode": "area", + "justifyMode": "center", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^nextDate \\{aquon_name=\"112100\", location=\"rwzi_dongemond\"\\}$/", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: -60d)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"nextDate\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Next sample", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#282e44", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "false": { + "color": "#552d2d", + "index": 0, + "text": "False" + }, + "true": { + "color": "#336533", + "index": 1, + "text": "True" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#818c99", + "value": null + } + ] + }, + "unit": "bool" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 20, + "x": 0, + "y": 5 + }, + "id": 6, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "center", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/.*/", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: -30d)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"running\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Sampling active", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#2b3146", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#818c99", + "value": null + } + ] + }, + "unit": "days" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 5, + "x": 0, + "y": 9 + }, + "id": 8, + "options": { + "colorMode": "background_solid", + "graphMode": "area", + "justifyMode": "center", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: -60d)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"daysPerYear\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Sampling days left", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#2b3146", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#818c99", + "value": null + } + ] + }, + "unit": "dateTimeFromNow" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 5, + "x": 5, + "y": 9 + }, + "id": 9, + "options": { + "colorMode": "background_solid", + "graphMode": "area", + "justifyMode": "center", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^nextDate \\{aquon_name=\"112100\", location=\"rwzi_dongemond\"\\}$/", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: -60d)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"nextDate\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Timeleft before next sample", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#2b3146", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#818c99", + "value": null + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 5, + "x": 10, + "y": 9 + }, + "id": 10, + "options": { + "colorMode": "background_solid", + "graphMode": "area", + "justifyMode": "center", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: -60d)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"timePassed\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Running time", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#2b3146", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#818c99", + "value": null + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 5, + "x": 15, + "y": 9 + }, + "id": 11, + "options": { + "colorMode": "background_solid", + "graphMode": "area", + "justifyMode": "center", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: -60d)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"timeLeft\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Time left", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "mappings": [], + "max": 19.7, + "min": 5, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "litre" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 10, + "x": 0, + "y": 14 + }, + "id": 4, + "options": { + "displayMode": "lcd", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: -60d)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"bucketVol\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Current bucket volume", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "mappings": [], + "max": 25, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "lengthmm" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 10, + "x": 10, + "y": 14 + }, + "id": 13, + "options": { + "displayMode": "lcd", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: -60d)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"sumRainNeg24\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Summed Actual -24h rain", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "mappings": [], + "max": 23, + "min": 5, + "noValue": "-", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "masskg" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 10, + "x": 0, + "y": 17 + }, + "id": 30, + "options": { + "displayMode": "lcd", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: -60d)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"bucketWeight\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Total weight", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "mappings": [], + "max": 25, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "lengthmm" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 10, + "x": 10, + "y": 17 + }, + "id": 12, + "options": { + "displayMode": "lcd", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: -60d)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"sumRainPos24\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Summed Predicted +24h rain", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#2b3146", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 15, + "x": 0, + "y": 20 + }, + "id": 19, + "options": { + "colorMode": "background_solid", + "graphMode": "none", + "justifyMode": "center", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: -60d)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"sumPuls\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Actual number of pulses", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#2b3146", + "mode": "fixed" + }, + "mappings": [], + "noValue": "-", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 12, + "w": 5, + "x": 15, + "y": 20 + }, + "id": 1, + "options": { + "colorMode": "background_solid", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: -60d)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"m3PerPuls\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "m3/puls", + "transparent": true, + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#2b3146", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 5, + "x": 0, + "y": 26 + }, + "id": 21, + "options": { + "colorMode": "background_solid", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: -60d)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"minPuls\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Minimum number of pulses", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#4f6483", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 5, + "x": 5, + "y": 26 + }, + "id": 20, + "options": { + "colorMode": "background_solid", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: -60d)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"targetPuls\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Target number of pulses", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#2b3146", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 5, + "x": 10, + "y": 26 + }, + "id": 22, + "options": { + "colorMode": "background_solid", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: -60d)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"maxPuls\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Maximum number of pulses", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#2b3146", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 5, + "x": 0, + "y": 32 + }, + "id": 27, + "options": { + "colorMode": "background_solid", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: -60d)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"minVolume\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Minimum volume", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#4f6483", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 5, + "x": 5, + "y": 32 + }, + "id": 28, + "options": { + "colorMode": "background_solid", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: -60d)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"targetVolume\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Target Volume", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "Taking into account the own weight of the bucket", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#2b3146", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 5, + "x": 10, + "y": 32 + }, + "id": 29, + "options": { + "colorMode": "background_solid", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: -60d)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"maxVolume\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Maximum volume", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#2b3146", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 5, + "x": 15, + "y": 32 + }, + "id": 31, + "options": { + "colorMode": "background_solid", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: -1y)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"emptyWeightBucket\" )\r\n |> last()", + "refId": "A" + } + ], + "title": "Weight of bucket", + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 38 + }, + "id": 3, + "panels": [], + "title": "Historic values", + "type": "row" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "fillOpacity": 80, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineWidth": 1, + "scaleDistribution": { + "type": "linear" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-yellow" + }, + { + "color": "semi-dark-green", + "value": 5 + }, + { + "color": "semi-dark-red", + "value": 15 + } + ] + }, + "unit": "litre" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 39 + }, + "id": 5, + "options": { + "barRadius": 0, + "barWidth": 0.9, + "fullHighlight": true, + "groupWidth": 0.7, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "orientation": "auto", + "showValue": "always", + "stacking": "none", + "tooltip": { + "mode": "single", + "sort": "none" + }, + "xTickLabelRotation": 90, + "xTickLabelSpacing": 0 + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"bucketVol\" )\r\n |> sample(n:5)", + "refId": "A" + } + ], + "title": "Historical bucket volume", + "type": "barchart" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "dashed" + } + }, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "flowcms" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 39 + }, + "id": 7, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"qm3sec\" )\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "A" + }, + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "hide": false, + "query": "lastValue = from(bucket: \"monster\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"Monsternamekast1\" and r._field == \"predM3PerSec\")\r\n |> last()\r\n |> findRecord(fn: (key) => true, idx: 0) // Get the last record\r\n\r\nfrom(bucket: \"monster\")\r\n |> range(start: v.timeRangeStart, stop:v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"Monsternamekast1\" and r._field == \"predM3PerSec\")\r\n |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: true) // Create regular time windows\r\n |> map(fn: (r) => ({\r\n _time: r._time,\r\n predM3PerSec: lastValue._value\r\n }))", + "refId": "B" + } + ], + "title": "Actual and predicted m3/s", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "scheme", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 3, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "max": 1.5, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 48 + }, + "id": 32, + "options": { + "legend": { + "calcs": [], + "displayMode": "hidden", + "placement": "right", + "showLegend": false + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"qm3sec\" )\r\n |> aggregateWindow(every: 1m, fn: mean, createEmpty: true) // Optional: aggregate to 1 minute intervals first\r\n |> movingAverage(n: 60)\r\n |> sample(n:10)", + "refId": "A" + } + ], + "title": "m3/s moving average / h", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "scheme", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 3, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "max": 1.5, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 48 + }, + "id": 35, + "options": { + "legend": { + "calcs": [], + "displayMode": "hidden", + "placement": "right", + "showLegend": false + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"qm3sec\" )\r\n |> aggregateWindow(every: 1m, fn: mean, createEmpty: true)\r\n |> movingAverage(n: 180)\r\n |> sample(n:10)\r\n", + "refId": "A" + } + ], + "title": "m3/s moving average / 3h", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "fillOpacity": 87, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineWidth": 1, + "scaleDistribution": { + "type": "linear" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "fieldMinMax": false, + "mappings": [], + "max": 20, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "lengthmm" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "predFlow {aquon_name=\"112100\", location=\"rwzi_dongemond\"}" + }, + "properties": [ + { + "id": "custom.axisPlacement", + "value": "right" + }, + { + "id": "unit", + "value": "m3" + }, + { + "id": "max", + "value": 130000 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "qm3sec {aquon_name=\"112100\", location=\"rwzi_dongemond\"}" + }, + "properties": [ + { + "id": "custom.axisPlacement", + "value": "right" + }, + { + "id": "unit", + "value": "m3" + }, + { + "id": "max" + } + ] + } + ] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 57 + }, + "id": 16, + "options": { + "barRadius": 0, + "barWidth": 1, + "fullHighlight": true, + "groupWidth": 0.72, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "orientation": "auto", + "showValue": "auto", + "stacking": "none", + "tooltip": { + "mode": "single", + "sort": "none" + }, + "xTickLabelRotation": 0, + "xTickLabelSpacing": 0 + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"sumRainPos24\" or r._measurement == \"${measurement}\"and r._field == \"sumRainNeg24\" )", + "refId": "A" + }, + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "hide": false, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: v.timeRangeStart, stop:v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"predFlow\")", + "refId": "B" + } + ], + "title": "Rain -+24h", + "transparent": true, + "type": "barchart" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "scheme", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 3, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "max": 1.5, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 57 + }, + "id": 33, + "options": { + "legend": { + "calcs": [], + "displayMode": "hidden", + "placement": "right", + "showLegend": false + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"qm3sec\" )\r\n |> aggregateWindow(every: 1h, fn: mean, createEmpty: true) \r\n |> movingAverage(n: 24)", + "refId": "A" + } + ], + "title": "m3/s moving average / day", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "max": 130000, + "noValue": "-", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "m3" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 66 + }, + "id": 14, + "options": { + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"m3Total\" )\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "A" + }, + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "hide": false, + "query": "from(bucket: \"monster\")\r\n |> range(start: v.timeRangeStart, stop:v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"Monsternamekast1\" and r._field == \"predFlow\")", + "refId": "B" + } + ], + "title": "Predicted m3 total vs accumalated m3", + "transparent": true, + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "fillOpacity": 80, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineWidth": 1, + "scaleDistribution": { + "type": "linear" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 66 + }, + "id": 34, + "options": { + "barRadius": 0.05, + "barWidth": 1, + "fullHighlight": true, + "groupWidth": 0.7, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "orientation": "auto", + "showValue": "auto", + "stacking": "none", + "tooltip": { + "mode": "single", + "sort": "none" + }, + "xTickLabelRotation": 0, + "xTickLabelSpacing": 0 + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "hide": false, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: v.timeRangeStart, stop:v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field ==\"m3Total\")\r\n |> timeShift(duration: -6h) \r\n |> window(every: 24h) \r\n |> last() \r\n |> filter(fn: (r) => r._value != 0)\r\n |> timeShift(duration: 6h) ", + "refId": "B" + } + ], + "title": "total m3 per day", + "type": "barchart" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 75 + }, + "id": 23, + "panels": [], + "title": "Past values", + "type": "row" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "Before ending the cycle what was last known value.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#2b3146", + "mode": "fixed" + }, + "mappings": [], + "noValue": "-", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "litre" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 5, + "x": 0, + "y": 76 + }, + "id": 26, + "options": { + "colorMode": "background_solid", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: -60d)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"bucketVol\" )\r\n |> filter(fn: (r) => r._value > 0)\r\n |> last()", + "refId": "A" + } + ], + "title": "Last known bucket volume", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "Before ending the cycle what was last known value.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#2b3146", + "mode": "fixed" + }, + "mappings": [], + "noValue": "-", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 5, + "x": 5, + "y": 76 + }, + "id": 36, + "options": { + "colorMode": "background_solid", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: -60d)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"m3PerPuls\" )\r\n |> filter(fn: (r) => r._value > 0)\r\n |> last()", + "refId": "A" + } + ], + "title": "Last known total m3/pulse", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "Before ending the cycle what was last known value.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#2b3146", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "m3" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 5, + "x": 10, + "y": 76 + }, + "id": 25, + "options": { + "colorMode": "background_solid", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: -60d)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"m3Total\" )\r\n |> filter(fn: (r) => r._value > 0)\r\n |> last()", + "refId": "A" + } + ], + "title": "Last known total m3", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "Before ending the cycle what was last known value.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#2b3146", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "m3" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 5, + "x": 15, + "y": 76 + }, + "id": 24, + "options": { + "colorMode": "background_solid", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: -60d)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"predFlow\" )\r\n |> filter(fn: (r) => r._value > 0)\r\n |> last()", + "refId": "A" + } + ], + "title": "Last known predicted flow over 24h", + "type": "stat" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 24, + "x": 0, + "y": 82 + }, + "id": 39, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "hide": false, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: v.timeRangeStart, stop:v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field ==\"m3Total\")\r\n\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)", + "refId": "B" + } + ], + "title": "total m3 per day", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 12, + "w": 24, + "x": 0, + "y": 91 + }, + "id": 18, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "cdzg44tv250jkd" + }, + "query": "from(bucket: \"${bucket}\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"${measurement}\" and r._field == \"precipationRaw\" )\r\n |> filter(fn: (r) => r.latitude == 51.592 and r.longitude == 4.93)", + "refId": "A" + } + ], + "title": "Predicted m3 total vs accumalated m3", + "transparent": true, + "type": "timeseries" + } + ], + "refresh": "30s", + "schemaVersion": 39, + "tags": [], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "influxdb", + "value": "influxdb" + }, + "hide": 0, + "includeAll": false, + "label": "dbase", + "multi": false, + "name": "dbase", + "options": [ + { + "selected": true, + "text": "influxdb", + "value": "influxdb" + } + ], + "query": "influxdb", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "current": { + "selected": false, + "text": "Monsternamekast1", + "value": "Monsternamekast1" + }, + "hide": 0, + "includeAll": false, + "label": "", + "multi": false, + "name": "measurement", + "options": [ + { + "selected": true, + "text": "Monsternamekast1", + "value": "Monsternamekast1" + } + ], + "query": "Monsternamekast1", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "current": { + "selected": false, + "text": "monster", + "value": "monster" + }, + "hide": 0, + "includeAll": false, + "multi": false, + "name": "bucket", + "options": [ + { + "selected": true, + "text": "monster", + "value": "monster" + } + ], + "query": "monster", + "skipUrlSync": false, + "type": "custom" + } + ] + }, + "time": { + "from": "now-7d", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "10s", + "30s", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d", + "2d", + "3d", + "4d", + "5d", + "6d", + "7d" + ] + }, + "timezone": "browser", + "title": "Monster", + "uid": "fdzjc5mslrpq8d", + "version": 139, + "weekStart": "" +} \ No newline at end of file diff --git a/dashboardapi.html b/dashboardapi.html new file mode 100644 index 0000000..4336a25 --- /dev/null +++ b/dashboardapi.html @@ -0,0 +1,149 @@ + + + + + + \ No newline at end of file diff --git a/dashboardapi.js b/dashboardapi.js new file mode 100644 index 0000000..e10747a --- /dev/null +++ b/dashboardapi.js @@ -0,0 +1,108 @@ +module.exports = function (RED) { + function dashboardapi(config) { + // create node + RED.nodes.createNode(this, config); + + //call this => node so whenver you want to call a node function type node and the function behind it + var node = this; + + try { + //fetch obj + const Dashboardapi = require("./dependencies/dashboardapi/dashboardapi_class"); + + //load user defined config in the node-red UI + const dConfig = { + general: { + name: config.name, + id: node.id, + logging: { + logLevel: config.logLevel, + enabled: config.enableLog, + }, + }, + grafanaConnector: { + host: config.host, + port: config.port, + bearerToken: config.bearerToken, + }, + }; + + //make new measurement on creation to work with. + const d = new Dashboardapi(dConfig); + + // put m on node memory as source + node.source = d; + + function updateNodeStatus(val) { + if (val && val.grafanaResponse) { + // Check for a successful response from the Grafana API call + if (val.grafanaResponse.status === 200) { + node.status({ + fill: "green", + shape: "dot", + text: "Grafana API: Success", + }); + node.log("Grafana API call completed successfully."); + } else { + node.status({ + fill: "red", + shape: "ring", + text: "Grafana API: Error", + }); + node.error( + "Grafana API call failed with status: " + + val.grafanaResponse.status + ); + } + } + } + + //-------------------------------------------------------------------->>what to do on input + node.on("input", async function (msg, send, done) { + try { + switch(msg.topic) { + //on start make dashboard + case 'registerChild': + + const childId = msg.payload; + const childObj = RED.nodes.getNode(childId); + if (!childObj || !childObj.source) { + throw new Error("Missing or invalid child node"); + } + const child = childObj.source; + + msg.payload = await d.generateDashB(child.config); + + msg.topic = "create"; + msg.headers = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Bearer glsa_gI7fOMEd844p1gZt9iaDeEFpeYtejRj7_cf1c41f8'// + config.bearerToken + }; + + console.log(`Child registered: ${childId}`); + send(msg); + + break; + } + + done(); + } catch (err) { + node.status({ fill: "red", shape: "ring", text: "Bad request data" }); + node.error("Bad request data: " + err.message, msg); + done(err); + } + }); + + // tidy up any async code here - shutdown connections and so on. + node.on("close", function () { + + }); + + } catch (e) { + console.log(e); + } + } + + RED.nodes.registerType("dashboardapi", dashboardapi); +}; diff --git a/dependencies/dashboardapi/dashboardapiConfig.json b/dependencies/dashboardapi/dashboardapiConfig.json new file mode 100644 index 0000000..3d32ae0 --- /dev/null +++ b/dependencies/dashboardapi/dashboardapiConfig.json @@ -0,0 +1,130 @@ +{ + "general": { + "name": { + "default": "dashboardapi", + "rules": { + "type": "string", + "description": "A human-readable name or label." + } + }, + "id": { + "default": null, + "rules": { + "type": "string", + "nullable": true, + "description": "A unique identifier for this configuration. If not provided, defaults to null." + } + }, + "unit": { + "default": "N/A", + "rules": { + "type": "string", + "description": "The default measurement unit for this configuration (e.g., 'meters', 'seconds', 'unitless')." + } + }, + "logging": { + "logLevel": { + "default": "info", + "rules": { + "type": "enum", + "values": [ + { + "value": "debug", + "description": "Log messages are printed for debugging purposes." + }, + { + "value": "info", + "description": "Informational messages are printed." + }, + { + "value": "warn", + "description": "Warning messages are printed." + }, + { + "value": "error", + "description": "Error messages are printed." + } + ] + } + }, + "enabled": { + "default": true, + "rules": { + "type": "boolean", + "description": "Indicates whether logging is active. If true, log messages will be generated." + } + } + } + }, + "functionality": { + "softwareType": { + "default": "dashboardapi", + "rules": { + "type": "string", + "description": "Specified software type for this configuration." + } + }, + "role": { + "default": "auto ui generator", + "rules": { + "type": "string", + "description": "Indicates the role this configuration plays within the system." + } + } + }, + "grafanaConnector": { + "host": { + "default": "localhost", + "rules": { + "type": "string", + "description": "The host name or IP address of the server." + } + }, + "port": { + "default": 3000, + "rules": { + "type": "integer", + "description": "The port number on which the server is listening." + } + }, + "protocol": { + "default": "http", + "rules": { + "type": "string", + "description": "The protocol used to communicate with the server." + } + }, + "header": { + "default": {}, + "rules": { + "type": "object", + "schema":{ + "Accept": { + "default": "application/json", + "rules": { + "type": "string", + "description": "Specifies the expected response format for requests using this header." + } + }, + "Content-Type":{ + "default": "application/json", + "rules": { + "type": "string", + "description": "Specifies the MIME type of the content." + } + } + }, + "description": "The header object to be sent with the request." + } + }, + "bearerToken": { + "default": null, + "rules": { + "type": "string", + "nullable": true, + "description": "The bearer token to be sent with the request." + } + } + } +} + \ No newline at end of file diff --git a/dependencies/dashboardapi/dashboardapi_class.js b/dependencies/dashboardapi/dashboardapi_class.js new file mode 100644 index 0000000..0fa0adc --- /dev/null +++ b/dependencies/dashboardapi/dashboardapi_class.js @@ -0,0 +1,183 @@ +/** + * @file dashboardapi_class.js + * + * Permission is hereby granted to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to use it for personal + * or non-commercial purposes, with the following restrictions: + * + * 1. **No Copying or Redistribution**: The Software or any of its parts may not + * be copied, merged, distributed, sublicensed, or sold without explicit + * prior written permission from the author. + * + * 2. **Commercial Use**: Any use of the Software for commercial purposes requires + * a valid license, obtainable only with the explicit consent of the author. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM, + * OUT OF, OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Ownership of this code remains solely with the original author. Unauthorized + * use of this Software is strictly prohibited. + * + * @summary A class for generating dynamic dashboards for system monitoring. + * @description The Dashboardapi class facilitates the creation and customization + * of Grafana dashboards using JSON templates. It dynamically updates templating values + * based on provided measurement and bucket configurations, enabling seamless integration + * within monitoring environments. + * @module dashboardapi_class + * @exports Dashboardapi + * @version 0.1.0 + * @since 0.1.0 + * + * Author: + * - Rene De Ren + * Email: + * - rene@thegoldenbasket.nl + * + * Future Enhancements: + * - Incorporate additional dynamic templating capabilities. + * - Add support for more customization options within dashboard configurations. + */ + +//A class to interact and manipulate sampling machines + +//load local dependencies +const EventEmitter = require('events'); +const Logger = require('../../../generalFunctions/helper/logger'); + +//load all config modules +const defaultConfig = require('./dashboardapiConfig.json'); +const ConfigUtils = require('../../../generalFunctions/helper/configUtils'); + +//load registration utility +const ChildRegistrationUtils = require('../../../generalFunctions/helper/childRegistrationUtils'); + +class Dashboardapi{ + /*------------------- Construct and set vars -------------------*/ + constructor(config={}){ + + // basic setup + this.emitter = new EventEmitter(); // Own EventEmitter + this.configUtils = new ConfigUtils(defaultConfig); + this.config = this.configUtils.initConfig(config); + + this.child = {} ; // object to hold child information so we know on what to subscribe + + // Init after config is set + this.logger = new Logger(this.config.general.logging.enabled, this.config.general.logging.logLevel, this.config.general.name); + + } + + //how to handle children like the pump on a machine group node? Do we duplicate the information or fetch the names of the registered children en connect them + //to the dashboard? + //this is a question that needs to be answered in the future. + + /*------------------- FUNCTIONS -------------------*/ + async getDashboard(softwareType){ + try { + let response = await fetch(`http://localhost:1880/dashboardapi/config/${softwareType}.json`); + if (!response.ok) { + this.logger.error(`Failed to fetch dashboard template: ${response.statusText}`); + } + const jsonDashB = await response.json(); + return jsonDashB; + } catch (error) { + this.logger.error(`Failed to fetch dashboard template: ${error.message}`); + + } + } + //generate dashboards based on the childs connected + async generateDashB(config) { + //define file name + const softwareType = config.functionality.softwareType; + this.logger.debug(`Generating dashboard for ${softwareType}`); + const jsonDashB = await this.getDashboard(softwareType); + + // Validate templating structure exists + if (!jsonDashB.templating || + !Array.isArray(jsonDashB.templating.list) || + jsonDashB.templating.list.length < 3) { + this.logger.error("Dashboard JSON templating structure is not as expected."); + throw new Error("Invalid dashboard template structure"); + } + + const bucketName = "lvl2"; + const measurementName = config.general.name; + + // Set properties for a new dashboard + jsonDashB.id = null; + jsonDashB.uid = null; + jsonDashB.title = measurementName; + + // Update measurement placeholder (using index 1) + const measurementTpl = jsonDashB.templating.list[1]; + measurementTpl.current.text = measurementName; + measurementTpl.current.value = measurementName; + if (Array.isArray(measurementTpl.options) && measurementTpl.options.length > 0) { + measurementTpl.options[0].text = measurementName; + measurementTpl.options[0].value = measurementName; + } + measurementTpl.query = measurementName; + + // Update bucket placeholder (using index 2) + const bucketTpl = jsonDashB.templating.list[2]; + bucketTpl.current.text = bucketName; + bucketTpl.current.value = bucketName; + if (Array.isArray(bucketTpl.options) && bucketTpl.options.length > 0) { + bucketTpl.options[0].text = bucketName; + bucketTpl.options[0].value = bucketName; + } + bucketTpl.query = bucketName; + + const output = { + dashboard: jsonDashB, + folderId: 0, + overwrite: true + }; + + return output; + } + +} // end of class + +module.exports = Dashboardapi; + +/* +//import a child +const Child = require('../../../measurement/dependencies/measurement/measurement'); +//const Child = require('../../../rotatingMachine/dependencies/machine/machine'); + +console.log(`Creating child...`); +const child = new Child(config={ + general:{ + name:"PT1", + logging:{ + enabled:true, + logLevel:"debug", + }, + }, + functionality:{ + softwareType:"measurement", + }, + asset:{ + type:"sensor", + subType:"pressure", + }, +}); + +const d = new Dashboardapi(); + +testGen(); + +function testGen(){ + d.generateDashB(child.config).then((res)=>{ + console.log(res); + }); +} + + +//*/ \ No newline at end of file