diff --git a/docker-compose-sample.yml b/contrib/docker-compose-sample.yml similarity index 100% rename from docker-compose-sample.yml rename to contrib/docker-compose-sample.yml diff --git a/contrib/grafana-dashboard.json b/contrib/grafana-dashboard.json new file mode 100644 index 0000000..27afe7b --- /dev/null +++ b/contrib/grafana-dashboard.json @@ -0,0 +1,5059 @@ +{ + "__inputs": [ + { + "name": "DS_VICTORIAMETRICS", + "label": "VictoriaMetrics", + "description": "", + "type": "datasource", + "pluginId": "prometheus", + "pluginName": "Prometheus" + }, + { + "name": "DS_PROMETHEUS", + "label": "Prometheus", + "description": "", + "type": "datasource", + "pluginId": "prometheus", + "pluginName": "Prometheus" + } + ], + "__elements": {}, + "__requires": [ + { + "type": "panel", + "id": "barchart", + "name": "Bar chart", + "version": "" + }, + { + "type": "panel", + "id": "bargauge", + "name": "Bar gauge", + "version": "" + }, + { + "type": "panel", + "id": "candlestick", + "name": "Candlestick", + "version": "" + }, + { + "type": "panel", + "id": "gauge", + "name": "Gauge", + "version": "" + }, + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "11.3.0" + }, + { + "type": "panel", + "id": "heatmap", + "name": "Heatmap", + "version": "" + }, + { + "type": "panel", + "id": "histogram", + "name": "Histogram", + "version": "" + }, + { + "type": "datasource", + "id": "prometheus", + "name": "Prometheus", + "version": "1.0.0" + }, + { + "type": "panel", + "id": "stat", + "name": "Stat", + "version": "" + }, + { + "type": "panel", + "id": "state-timeline", + "name": "State timeline", + "version": "" + }, + { + "type": "panel", + "id": "table", + "name": "Table", + "version": "" + }, + { + "type": "panel", + "id": "timeseries", + "name": "Time series", + "version": "" + } + ], + "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": null, + "links": [], + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 13, + "panels": [], + "repeat": "station", + "title": "Overview $station", + "type": "row" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_VICTORIAMETRICS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "from": 0, + "result": { + "index": 0, + "text": "North" + }, + "to": 11 + }, + "type": "range" + }, + { + "options": { + "from": 12, + "result": { + "index": 1, + "text": "North/NorthEast" + }, + "to": 33 + }, + "type": "range" + }, + { + "options": { + "from": 34, + "result": { + "index": 2, + "text": "NorthEast" + }, + "to": 56 + }, + "type": "range" + }, + { + "options": { + "from": 57, + "result": { + "index": 3, + "text": "East/NorthEast" + }, + "to": 78 + }, + "type": "range" + }, + { + "options": { + "from": 79, + "result": { + "index": 4, + "text": "East" + }, + "to": 101 + }, + "type": "range" + }, + { + "options": { + "from": 102, + "result": { + "index": 5, + "text": "East/SouthEast" + }, + "to": 123 + }, + "type": "range" + }, + { + "options": { + "from": 124, + "result": { + "index": 6, + "text": "SouthEast" + }, + "to": 146 + }, + "type": "range" + }, + { + "options": { + "from": 147, + "result": { + "index": 7, + "text": "South/SouthEast" + }, + "to": 168 + }, + "type": "range" + }, + { + "options": { + "from": 169, + "result": { + "index": 8, + "text": "South" + }, + "to": 191 + }, + "type": "range" + }, + { + "options": { + "from": 192, + "result": { + "index": 9, + "text": "South/SouthWest" + }, + "to": 213 + }, + "type": "range" + }, + { + "options": { + "from": 214, + "result": { + "index": 10, + "text": "SouthWest" + }, + "to": 236 + }, + "type": "range" + }, + { + "options": { + "from": 237, + "result": { + "index": 11, + "text": "West/SouthWest" + }, + "to": 258 + }, + "type": "range" + }, + { + "options": { + "from": 259, + "result": { + "index": 12, + "text": "West" + }, + "to": 281 + }, + "type": "range" + }, + { + "options": { + "from": 282, + "result": { + "index": 13, + "text": "West/NorthWest" + }, + "to": 303 + }, + "type": "range" + }, + { + "options": { + "from": 304, + "result": { + "index": 14, + "text": "NorthWest" + }, + "to": 326 + }, + "type": "range" + }, + { + "options": { + "from": 327, + "result": { + "index": 15, + "text": "North/NorthWest" + }, + "to": 348 + }, + "type": "range" + }, + { + "options": { + "from": 349, + "result": { + "index": 16, + "text": "North" + }, + "to": 360 + }, + "type": "range" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 0, + "y": 1 + }, + "id": 18, + "links": [ + { + "targetBlank": true, + "title": "Weather", + "url": "https://analytics.libretechconsulting.com/d/mtTjjSemk/weather-dashboard?orgId=1&refresh=1m" + } + ], + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_VICTORIAMETRICS}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "avg(weather_wind_dir{station_type=~\"$station\"}) by (station_type)", + "instant": true, + "range": false, + "refId": "A" + } + ], + "title": "Wind Direction", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "light-blue", + "value": null + }, + { + "color": "light-green", + "value": 5 + }, + { + "color": "yellow", + "value": 15 + }, + { + "color": "orange", + "value": 30 + }, + { + "color": "red", + "value": 50 + } + ] + }, + "unit": "velocitymph" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 3, + "y": 1 + }, + "id": 19, + "interval": "5m", + "maxDataPoints": 30, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": true, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "expr": "avg(max_over_time(weather_wind_gust_mph{station_type=~\"$station\"}[1m])[$__interval]) by (station_type)", + "legendFormat": "__auto", + "range": true, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + } + ], + "title": "Wind", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "from": 0, + "result": { + "color": "dark-orange", + "index": 0, + "text": "Very Low" + }, + "to": 28.9 + }, + "type": "range" + }, + { + "options": { + "from": 28.9, + "result": { + "color": "orange", + "index": 1, + "text": "Low" + }, + "to": 29.5 + }, + "type": "range" + }, + { + "options": { + "from": 29.5, + "result": { + "color": "green", + "index": 2, + "text": "Normal" + }, + "to": 30.1 + }, + "type": "range" + }, + { + "options": { + "from": 30.1, + "result": { + "color": "purple", + "index": 3, + "text": "High" + }, + "to": 30.7 + }, + "type": "range" + }, + { + "options": { + "from": 30.7, + "result": { + "color": "dark-purple", + "index": 4, + "text": "Very High" + }, + "to": 50 + }, + "type": "range" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-orange", + "value": null + }, + { + "color": "orange", + "value": 28.9 + }, + { + "color": "green", + "value": 29.5 + }, + { + "color": "semi-dark-purple", + "value": 30.1 + }, + { + "color": "dark-purple", + "value": 30.7 + } + ] + }, + "unit": "pressurehg" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 6, + "y": 1 + }, + "id": 26, + "interval": "5m", + "maxDataPoints": 30, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": true, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "expr": "avg(max_over_time(weather_barometric_pressure_relative_in{station_type=~\"$station\"}[1m])[$__interval]) by (station_type)", + "legendFormat": "__auto", + "range": true, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + } + ], + "title": "Pressure", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "light-green", + "index": 0, + "text": "Clear" + } + }, + "type": "value" + }, + { + "options": { + "from": 0, + "result": { + "color": "green", + "index": 1, + "text": "Rain" + }, + "to": 10000000 + }, + "type": "range" + }, + { + "options": { + "from": -1000000, + "result": { + "color": "light-blue", + "index": 2, + "text": "Snow" + }, + "to": 0 + }, + "type": "range" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 9, + "y": 1 + }, + "id": 12, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "(\n (\n (weather_barometric_pressure_relative_in{station_type=~\"$station\"} > 30.20)\n or\n ((weather_temp_outdoor_f{station_type=~\"$station\"} - weather_dew_point_f{station_type=~\"$station\"}) > 2)\n ) * 0\n or\n (\n (weather_barometric_pressure_relative_in{station_type=~\"$station\"} <= 29.80)\n and (weather_temp_outdoor_f{station_type=~\"$station\"} > 32)\n and ((weather_temp_outdoor_f{station_type=~\"$station\"} - weather_dew_point_f{station_type=~\"$station\"}) <= 2)\n ) * 1\n or\n (\n (weather_barometric_pressure_relative_in{station_type=~\"$station\"} <= 29.80)\n and (weather_temp_outdoor_f{station_type=~\"$station\"} <= 32)\n and ((weather_temp_outdoor_f{station_type=~\"$station\"} - weather_dew_point_f{station_type=~\"$station\"}) <= 2)\n ) * -1\n)", + "format": "table", + "instant": true, + "legendFormat": "{{station_type}}", + "range": false, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + } + ], + "title": "Forecast", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 120, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "super-light-blue", + "value": null + }, + { + "color": "blue", + "value": 40 + }, + { + "color": "green", + "value": 60 + }, + { + "color": "#EAB839", + "value": 80 + }, + { + "color": "red", + "value": 100 + } + ] + }, + "unit": "fahrenheit" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 12, + "y": 1 + }, + "id": 21, + "options": { + "colorMode": "background", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": true, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "avg(avg_over_time(weather_wind_chill_f{station_type=~\"$station\"}[10m])) by (station_type)", + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + } + ], + "title": "Feels Like", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "from": 0, + "result": { + "index": 0, + "text": "Dry" + }, + "to": 30 + }, + "type": "range" + }, + { + "options": { + "from": 30, + "result": { + "index": 1, + "text": "Comfortable" + }, + "to": 60 + }, + "type": "range" + }, + { + "options": { + "from": 60, + "result": { + "index": 2, + "text": "Humid" + }, + "to": 80 + }, + "type": "range" + }, + { + "options": { + "from": 80, + "result": { + "index": 3, + "text": "Saturated" + }, + "to": 100 + }, + "type": "range" + }, + { + "options": { + "from": 100, + "result": { + "index": 4, + "text": "Underwater" + }, + "to": 200 + }, + "type": "range" + } + ], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 30 + }, + { + "color": "dark-blue", + "value": 60 + }, + { + "color": "semi-dark-purple", + "value": 80 + } + ] + }, + "unit": "humidity" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 15, + "y": 1 + }, + "id": 33, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": true, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "avg(weather_humidity_outdoor{station_type=~\"$station\"}) by (station_type)", + "instant": false, + "legendFormat": "Outdoor", + "range": true, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "avg(weather_humidity_indoor{station_type=~\"$station\"}) by (station_type)", + "hide": false, + "instant": false, + "legendFormat": "Indoor", + "range": true, + "refId": "B" + } + ], + "title": "Humidity", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text", + "value": null + }, + { + "color": "semi-dark-blue", + "value": 1 + }, + { + "color": "#EAB839", + "value": 2 + }, + { + "color": "red", + "value": 3 + } + ] + }, + "unit": "lengthin" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 4, + "x": 18, + "y": 1 + }, + "id": 39, + "options": { + "colorMode": "background", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "avg(weather_daily_rain_in{station_type=~\"$station\"}) by (station_type)", + "instant": true, + "legendFormat": "Daily", + "range": false, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "avg(weather_weekly_rain_in{station_type=~\"$station\"}) by (station_type)", + "hide": false, + "instant": true, + "legendFormat": "Weekly", + "range": false, + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "avg(weather_monthly_rain_in{station_type=~\"$station\"}) by (station_type)", + "hide": false, + "instant": true, + "legendFormat": "Monthly", + "range": false, + "refId": "C" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "avg(weather_yearly_rain_in{station_type=~\"$station\"}) by (station_type)", + "hide": false, + "instant": true, + "legendFormat": "Yearly", + "range": false, + "refId": "D" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "avg(weather_hourly_rain_in{station_type=~\"$station\"}) by (station_type)", + "hide": false, + "instant": true, + "legendFormat": "Hourly", + "range": false, + "refId": "E" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "avg(weather_event_rain_in{station_type=~\"$station\"}) by (station_type)", + "hide": false, + "instant": true, + "legendFormat": "Event", + "range": false, + "refId": "F" + } + ], + "title": "Rain Amounts", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "text", + "index": 0, + "text": "🪫" + }, + "1": { + "color": "green", + "index": 1, + "text": "🔋" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 2, + "x": 22, + "y": 1 + }, + "id": 40, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "min(weather_battery_status{station_type=~\"$station\"}) by (component)", + "instant": true, + "legendFormat": "{{component}}", + "range": false, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + } + ], + "title": "Batteries", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "max": 5, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-blue", + "value": null + }, + { + "color": "dark-green", + "value": 1 + }, + { + "color": "#EAB839", + "value": 2 + }, + { + "color": "dark-orange", + "value": 3 + }, + { + "color": "dark-red", + "value": 4 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 3, + "x": 0, + "y": 7 + }, + "id": 46, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": true, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "avg(weather_uv{station_type=~\"$station\"}) by (station_type)", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + } + ], + "title": "UV Index", + "type": "gauge" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "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": "fahrenheit" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Pressure" + }, + "properties": [ + { + "id": "custom.axisPlacement", + "value": "right" + }, + { + "id": "unit", + "value": "pressurehg" + }, + { + "id": "color", + "value": { + "fixedColor": "purple", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 5, + "w": 18, + "x": 3, + "y": 7 + }, + "id": 27, + "options": { + "legend": { + "calcs": [ + "min", + "max", + "mean" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "expr": "avg(weather_temp_outdoor_f{station_type=~\"$station\"}) by (station_type)", + "legendFormat": "Outdoor Temp", + "range": true, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "avg(weather_dew_point_f{station_type=~\"$station\"}) by (station_type)", + "hide": false, + "instant": false, + "legendFormat": "Dew Point", + "range": true, + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "avg(weather_wind_chill_f{station_type=~\"$station\"}) by (station_type)", + "hide": false, + "instant": false, + "legendFormat": "Wind Chill F", + "range": true, + "refId": "C" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "avg(weather_barometric_pressure_relative_in{station_type=~\"$station\"}) by (station_type)", + "hide": false, + "instant": false, + "legendFormat": "Pressure", + "range": true, + "refId": "D" + } + ], + "title": "Temp/Dewpoint", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 200, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-purple", + "value": null + }, + { + "color": "purple", + "value": 20 + }, + { + "color": "semi-dark-blue", + "value": 90 + }, + { + "color": "semi-dark-yellow", + "value": 140 + }, + { + "color": "super-light-yellow", + "value": 180 + } + ] + }, + "unit": "Wm2" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 3, + "x": 21, + "y": 7 + }, + "id": 45, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": true, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "avg(weather_solar_radiation{station_type=~\"$station\"}) by (station_type)", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + } + ], + "title": "Solar Radiation", + "type": "gauge" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 12 + }, + "id": 14, + "panels": [], + "repeat": "station", + "title": "Wind $station", + "type": "row" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_VICTORIAMETRICS}" + }, + "fieldConfig": { + "defaults": { + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "scaleDistribution": { + "type": "linear" + } + } + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 8, + "x": 0, + "y": 13 + }, + "id": 17, + "options": { + "calculate": true, + "calculation": {}, + "cellGap": 2, + "cellValues": {}, + "color": { + "exponent": 0.5, + "fill": "rgba(77, 223, 255, 1)", + "min": 1, + "mode": "opacity", + "reverse": false, + "scale": "exponential", + "scheme": "Oranges", + "steps": 128 + }, + "exemplars": { + "color": "rgba(255,0,255,0.7)" + }, + "filterValues": { + "le": 1e-9 + }, + "legend": { + "show": true + }, + "rowsFrame": { + "layout": "auto" + }, + "showValue": "never", + "tooltip": { + "mode": "single", + "showColorScale": false, + "yHistogram": false + }, + "yAxis": { + "axisPlacement": "left", + "reverse": false, + "unit": "degree" + } + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_VICTORIAMETRICS}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "weather_wind_dir{station_type=~\"$station\"}", + "format": "time_series", + "group": [], + "interval": "", + "legendFormat": "", + "metricColumn": "none", + "range": true, + "rawQuery": false, + "rawSql": "SELECT\n \"time\" AS \"time\",\n value\nFROM oh0012\nWHERE\n $__timeFilter(\"time\")\nORDER BY 1", + "refId": "A", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "column" + } + ] + ], + "table": "oh0012", + "timeColumn": "\"time\"", + "timeColumnType": "timestamp", + "where": [ + { + "name": "$__timeFilter", + "params": [], + "type": "macro" + } + ] + } + ], + "title": "Wind Direction", + "type": "heatmap" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 65, + "gradientMode": "hue", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "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": "velocitymph" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Wind Speed" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "blue", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Wind Gust" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "orange", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 8, + "x": 8, + "y": 13 + }, + "id": 15, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "expr": "avg(weather_wind_gust_mph{station_type=~\"$station\"}) by (station_type)", + "hide": false, + "legendFormat": "Wind Gust", + "range": true, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "avg(weather_wind_speed_mph{station_type=~\"$station\"}) by (station_type)", + "hide": false, + "instant": false, + "legendFormat": "Wind Speed", + "range": true, + "refId": "B" + } + ], + "title": "Wind Speed", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "shades" + }, + "custom": { + "fillOpacity": 74, + "gradientMode": "hue", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineWidth": 1, + "stacking": { + "group": "A", + "mode": "none" + } + }, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "super-light-blue", + "value": null + }, + { + "color": "green", + "value": 5 + }, + { + "color": "#EAB839", + "value": 15 + }, + { + "color": "#EF843C", + "value": 20 + }, + { + "color": "red", + "value": 30 + } + ] + }, + "unit": "velocitymph" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 8, + "x": 16, + "y": 13 + }, + "id": 20, + "options": { + "combine": false, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "expr": "max(weather_wind_gust_mph{station_type=~\"$station\"}) by (station_type)", + "legendFormat": "Wind Gust Distribution", + "range": true, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + } + ], + "title": "Wind Gust Distribution", + "type": "histogram" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 20 + }, + "id": 5, + "panels": [], + "repeat": "station", + "title": "Temperature $station", + "type": "row" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "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": "fahrenheit" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 10, + "x": 0, + "y": 21 + }, + "id": 7, + "interval": "1m", + "maxDataPoints": 40, + "options": { + "candleStyle": "candles", + "colorStrategy": "open-close", + "colors": { + "down": "blue", + "up": "semi-dark-orange" + }, + "fields": { + "close": "Close", + "high": "High", + "low": "Low", + "open": "Open" + }, + "includeAllFields": false, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "mode": "candles", + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "expr": "avg(last_over_time(weather_temp_outdoor_f{station_type=~\"$station\"}[$__interval] offset $__interval))", + "legendFormat": "Open", + "range": true, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "avg(max_over_time(weather_temp_outdoor_f{station_type=~\"$station\"}[$__interval]))", + "hide": false, + "instant": false, + "legendFormat": "High", + "range": true, + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "avg(min_over_time(weather_temp_outdoor_f{station_type=~\"$station\"}[$__interval]))", + "hide": false, + "instant": false, + "legendFormat": "Low", + "range": true, + "refId": "C" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "avg(last_over_time(weather_temp_outdoor_f{station_type=~\"$station\"}[$__interval]))", + "hide": false, + "instant": false, + "legendFormat": "Close", + "range": true, + "refId": "D" + } + ], + "title": "Outdoor Temp Trend", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "Time", + "mode": "outer" + } + } + ], + "type": "candlestick" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "fieldMinMax": false, + "mappings": [], + "max": 120, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "light-blue", + "value": null + }, + { + "color": "super-light-blue", + "value": 32 + }, + { + "color": "super-light-green", + "value": 45 + }, + { + "color": "green", + "value": 65 + }, + { + "color": "#EAB839", + "value": 80 + }, + { + "color": "red", + "value": 90 + } + ] + }, + "unit": "fahrenheit" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 5, + "x": 10, + "y": 21 + }, + "id": 9, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": true, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "expr": "avg(weather_temp_outdoor_f{station_type=~\"$station\"}) by (station_type)", + "legendFormat": "__auto", + "range": true, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + } + ], + "title": "Outdoor Temp", + "type": "gauge" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "hue", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 3, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "dashed" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "super-light-blue", + "value": null + }, + { + "color": "light-blue", + "value": 32 + }, + { + "color": "light-green", + "value": 60 + }, + { + "color": "#EAB839", + "value": 80 + }, + { + "color": "red", + "value": 90 + } + ] + }, + "unit": "fahrenheit" + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "/.*Chill.*/" + }, + "properties": [ + { + "id": "custom.lineStyle", + "value": { + "dash": [ + 0, + 10 + ], + "fill": "dot" + } + }, + { + "id": "custom.lineWidth", + "value": 3 + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 9, + "x": 15, + "y": 21 + }, + "id": 2, + "options": { + "legend": { + "calcs": [ + "min", + "max", + "mean" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "avg(weather_temp_outdoor_f{station_type=~\"$station\"}) by (station_type)", + "interval": "1m", + "legendFormat": "{{station_type}} Temp F", + "range": true, + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "avg(weather_wind_chill_f{station_type=~\"$station\"}) by (station_type)", + "hide": false, + "instant": false, + "legendFormat": "{{station_type}} Wind Chill F", + "range": true, + "refId": "B" + } + ], + "title": "Outdoor Temperature", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "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": "fahrenheit" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 10, + "x": 0, + "y": 28 + }, + "id": 6, + "interval": "1m", + "maxDataPoints": 40, + "options": { + "candleStyle": "candles", + "colorStrategy": "open-close", + "colors": { + "down": "blue", + "up": "semi-dark-orange" + }, + "fields": { + "close": "Close", + "high": "High", + "low": "Low", + "open": "Open" + }, + "includeAllFields": false, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "mode": "candles", + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "expr": "avg(last_over_time(weather_temp_indoor_f{station_type=~\"$station\"}[$__interval] offset $__interval))", + "legendFormat": "Open", + "range": true, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "avg(max_over_time(weather_temp_indoor_f{station_type=~\"$station\"}[$__interval]))", + "hide": false, + "instant": false, + "legendFormat": "High", + "range": true, + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "avg(min_over_time(weather_temp_indoor_f{station_type=~\"$station\"}[$__interval]))", + "hide": false, + "instant": false, + "legendFormat": "Low", + "range": true, + "refId": "C" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "avg(last_over_time(weather_temp_indoor_f{station_type=~\"$station\"}[$__interval]))", + "hide": false, + "instant": false, + "legendFormat": "Close", + "range": true, + "refId": "D" + } + ], + "title": "Indoor Temp Trend", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "Time", + "mode": "outer" + } + } + ], + "type": "candlestick" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "fieldMinMax": false, + "mappings": [], + "max": 120, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "light-blue", + "value": null + }, + { + "color": "super-light-blue", + "value": 32 + }, + { + "color": "super-light-green", + "value": 45 + }, + { + "color": "green", + "value": 65 + }, + { + "color": "#EAB839", + "value": 80 + }, + { + "color": "red", + "value": 90 + } + ] + }, + "unit": "fahrenheit" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 5, + "x": 10, + "y": 28 + }, + "id": 8, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": true, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "expr": "avg(weather_temp_indoor_f{station_type=~\"$station\"}) by (station_type)", + "legendFormat": "__auto", + "range": true, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + } + ], + "title": "Indoor Temp", + "type": "gauge" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "axisSoftMax": 100, + "axisSoftMin": 0, + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "hue", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 6, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "dashed" + } + }, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "super-light-blue", + "value": null + }, + { + "color": "light-blue", + "value": 32 + }, + { + "color": "light-green", + "value": 60 + }, + { + "color": "#EAB839", + "value": 80 + }, + { + "color": "red", + "value": 90 + } + ] + }, + "unit": "fahrenheit" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 9, + "x": 15, + "y": 28 + }, + "id": 1, + "interval": "1m", + "maxDataPoints": 60, + "options": { + "legend": { + "calcs": [ + "min", + "max", + "mean" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "avg(weather_temp_indoor_f{station_type=~\"$station\"}) by (station_type)", + "interval": "1m", + "legendFormat": "{{station_type}}", + "range": true, + "refId": "A" + } + ], + "title": "Indoor Temperature", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 35 + }, + "id": 24, + "panels": [], + "repeat": "station", + "title": "Humidity $station", + "type": "row" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "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": 3, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "humidity" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 10, + "x": 0, + "y": 36 + }, + "id": 25, + "interval": "1m", + "maxDataPoints": 40, + "options": { + "candleStyle": "candles", + "colorStrategy": "open-close", + "colors": { + "down": "red", + "up": "green" + }, + "fields": { + "close": "Close", + "high": "High", + "low": "Low", + "open": "Open" + }, + "includeAllFields": false, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "mode": "candles", + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "expr": "avg(last_over_time(weather_humidity_outdoor{station_type=~\"$station\"}[$__interval] offset $__interval))", + "legendFormat": "Open", + "range": true, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "avg(max_over_time(weather_humidity_outdoor{station_type=~\"$station\"}[$__interval]))", + "hide": false, + "instant": false, + "legendFormat": "High", + "range": true, + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "avg(min_over_time(weather_humidity_outdoor{station_type=~\"$station\"}[$__interval]))", + "hide": false, + "instant": false, + "legendFormat": "Low", + "range": true, + "refId": "C" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "avg(last_over_time(weather_humidity_outdoor{station_type=~\"$station\"}[$__interval]))", + "hide": false, + "instant": false, + "legendFormat": "Close", + "range": true, + "refId": "D" + } + ], + "title": "Outdoor Humidity Trend", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "Time", + "mode": "outer" + } + } + ], + "type": "candlestick" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 30 + }, + { + "color": "dark-blue", + "value": 60 + }, + { + "color": "semi-dark-purple", + "value": 80 + } + ] + }, + "unit": "humidity" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 5, + "x": 10, + "y": 36 + }, + "id": 28, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": true, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "avg(weather_humidity_outdoor{station_type=~\"$station\"}) by (station_type)", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + } + ], + "title": "Outdoor Humidity", + "type": "gauge" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "from": 0, + "result": { + "index": 0, + "text": "Dry" + }, + "to": 30 + }, + "type": "range" + }, + { + "options": { + "from": 30, + "result": { + "index": 1, + "text": "Comfortable" + }, + "to": 60 + }, + "type": "range" + }, + { + "options": { + "from": 60, + "result": { + "index": 2, + "text": "Humid" + }, + "to": 80 + }, + "type": "range" + }, + { + "options": { + "from": 80, + "result": { + "index": 3, + "text": "Saturated" + }, + "to": 100 + }, + "type": "range" + }, + { + "options": { + "from": 100, + "result": { + "index": 4, + "text": "Underwater" + }, + "to": 200 + }, + "type": "range" + } + ], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 30 + }, + { + "color": "dark-blue", + "value": 60 + }, + { + "color": "semi-dark-purple", + "value": 80 + } + ] + }, + "unit": "humidity" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 9, + "x": 15, + "y": 36 + }, + "id": 29, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": true, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "avg(weather_humidity_outdoor{station_type=~\"$station\"}) by (station_type)", + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + } + ], + "title": "Outdoor Humidity", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "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": 3, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "humidity" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 10, + "x": 0, + "y": 43 + }, + "id": 30, + "interval": "1m", + "maxDataPoints": 40, + "options": { + "candleStyle": "candles", + "colorStrategy": "open-close", + "colors": { + "down": "red", + "up": "green" + }, + "fields": { + "close": "Close", + "high": "High", + "low": "Low", + "open": "Open" + }, + "includeAllFields": false, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "mode": "candles", + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "expr": "avg(last_over_time(weather_humidity_indoor{station_type=~\"$station\"}[$__interval] offset $__interval))", + "legendFormat": "Open", + "range": true, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "avg(max_over_time(weather_humidity_indoor{station_type=~\"$station\"}[$__interval]))", + "hide": false, + "instant": false, + "legendFormat": "High", + "range": true, + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "avg(min_over_time(weather_humidity_indoor{station_type=~\"$station\"}[$__interval]))", + "hide": false, + "instant": false, + "legendFormat": "Low", + "range": true, + "refId": "C" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "avg(last_over_time(weather_humidity_indoor{station_type=~\"$station\"}[$__interval]))", + "hide": false, + "instant": false, + "legendFormat": "Close", + "range": true, + "refId": "D" + } + ], + "title": "Indoor Humidity Trend", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "Time", + "mode": "outer" + } + } + ], + "type": "candlestick" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 30 + }, + { + "color": "dark-blue", + "value": 60 + }, + { + "color": "semi-dark-purple", + "value": 80 + } + ] + }, + "unit": "humidity" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 5, + "x": 10, + "y": 43 + }, + "id": 31, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": true, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "avg(weather_humidity_indoor{station_type=~\"$station\"}) by (station_type)", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + } + ], + "title": "Indoor Humidity", + "type": "gauge" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "from": 0, + "result": { + "index": 0, + "text": "Dry" + }, + "to": 30 + }, + "type": "range" + }, + { + "options": { + "from": 30, + "result": { + "index": 1, + "text": "Comfortable" + }, + "to": 60 + }, + "type": "range" + }, + { + "options": { + "from": 60, + "result": { + "index": 2, + "text": "Humid" + }, + "to": 80 + }, + "type": "range" + }, + { + "options": { + "from": 80, + "result": { + "index": 3, + "text": "Saturated" + }, + "to": 100 + }, + "type": "range" + }, + { + "options": { + "from": 100, + "result": { + "index": 4, + "text": "Underwater" + }, + "to": 200 + }, + "type": "range" + } + ], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 30 + }, + { + "color": "dark-blue", + "value": 60 + }, + { + "color": "semi-dark-purple", + "value": 80 + } + ] + }, + "unit": "humidity" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 9, + "x": 15, + "y": 43 + }, + "id": 32, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": true, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "avg(weather_humidity_indoor{station_type=~\"$station\"}) by (station_type)", + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + } + ], + "title": "Indoor Humidity", + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 50 + }, + "id": 4, + "panels": [], + "repeat": "station", + "title": "Pressure $station", + "type": "row" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "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": 3, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "pressurehg" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 10, + "x": 0, + "y": 51 + }, + "id": 10, + "interval": "1m", + "maxDataPoints": 40, + "options": { + "candleStyle": "candles", + "colorStrategy": "open-close", + "colors": { + "down": "red", + "up": "green" + }, + "fields": { + "close": "Close", + "high": "High", + "low": "Low", + "open": "Open" + }, + "includeAllFields": false, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "mode": "candles", + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "expr": "avg(last_over_time(weather_barometric_pressure_relative_in{station_type=~\"$station\"}[$__interval] offset $__interval)) by (station_type)", + "legendFormat": "Open", + "range": true, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "avg(max_over_time(weather_barometric_pressure_relative_in{station_type=~\"$station\"}[$__interval])) by (station_type)", + "hide": false, + "instant": false, + "legendFormat": "High", + "range": true, + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "avg(min_over_time(weather_barometric_pressure_relative_in{station_type=~\"$station\"}[$__interval])) by (station_type)", + "hide": false, + "instant": false, + "legendFormat": "Low", + "range": true, + "refId": "C" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "avg(last_over_time(weather_barometric_pressure_relative_in{station_type=~\"$station\"}[$__interval])) by (station_type)", + "hide": false, + "instant": false, + "legendFormat": "Close", + "range": true, + "refId": "D" + } + ], + "title": "Pressure Trend", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "Time", + "mode": "outer" + } + } + ], + "type": "candlestick" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "from": 0, + "result": { + "color": "dark-orange", + "index": 0, + "text": "Very Low" + }, + "to": 28.9 + }, + "type": "range" + }, + { + "options": { + "from": 28.9, + "result": { + "color": "orange", + "index": 1, + "text": "Low" + }, + "to": 29.5 + }, + "type": "range" + }, + { + "options": { + "from": 29.5, + "result": { + "color": "green", + "index": 2, + "text": "Normal" + }, + "to": 30.1 + }, + "type": "range" + }, + { + "options": { + "from": 30.1, + "result": { + "color": "purple", + "index": 3, + "text": "High" + }, + "to": 30.7 + }, + "type": "range" + }, + { + "options": { + "from": 30.7, + "result": { + "color": "dark-purple", + "index": 4, + "text": "Very High" + }, + "to": 50 + }, + "type": "range" + } + ], + "max": 31, + "min": 28.5, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-orange", + "value": null + }, + { + "color": "orange", + "value": 28.9 + }, + { + "color": "green", + "value": 29.5 + }, + { + "color": "semi-dark-purple", + "value": 30.1 + }, + { + "color": "dark-purple", + "value": 30.7 + } + ] + }, + "unit": "pressurehg" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 5, + "x": 10, + "y": 51 + }, + "id": 34, + "interval": "5m", + "maxDataPoints": 30, + "options": { + "displayMode": "gradient", + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "expr": "avg(max_over_time(weather_barometric_pressure_relative_in{station_type=~\"$station\"}[1m])[$__interval]) by (station_type)", + "legendFormat": "__auto", + "range": true, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + } + ], + "title": "Pressure", + "type": "bargauge" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "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": "smooth", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "pressurehg" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 9, + "x": 15, + "y": 51 + }, + "id": 3, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "expr": "avg(weather_barometric_pressure_relative_in{station_type=~\"$station\"}) by (station_type)", + "legendFormat": "Relative (Corrected)", + "range": true, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + } + ], + "title": "Barometric Pressure", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 58 + }, + "id": 41, + "panels": [], + "repeat": "station", + "title": "Sun $station", + "type": "row" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "max": 5, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-blue", + "value": null + }, + { + "color": "dark-green", + "value": 1 + }, + { + "color": "#EAB839", + "value": 2 + }, + { + "color": "dark-orange", + "value": 3 + }, + { + "color": "dark-red", + "value": 4 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 5, + "x": 0, + "y": 59 + }, + "id": 44, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": true, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "avg(weather_uv{station_type=~\"$station\"}) by (station_type)", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + } + ], + "title": "UV Index", + "type": "gauge" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 35, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-purple", + "value": null + }, + { + "color": "purple", + "value": 20 + }, + { + "color": "semi-dark-blue", + "value": 90 + }, + { + "color": "semi-dark-yellow", + "value": 140 + }, + { + "color": "super-light-yellow", + "value": 180 + } + ] + }, + "unit": "Wm2" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "UV" + }, + "properties": [ + { + "id": "custom.axisPlacement", + "value": "right" + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "color", + "value": { + "mode": "palette-classic" + } + }, + { + "id": "custom.lineWidth", + "value": 2 + }, + { + "id": "custom.lineStyle", + "value": { + "dash": [ + 0, + 10 + ], + "fill": "dot" + } + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 14, + "x": 5, + "y": 59 + }, + "id": 42, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "expr": "avg(weather_solar_radiation{station_type=~\"$station\"}) by (station_type)", + "legendFormat": "Solar Radiation", + "range": true, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "avg(weather_uv{station_type=~\"$station\"}) by (station_type)", + "hide": false, + "instant": false, + "legendFormat": "UV", + "range": true, + "refId": "B" + } + ], + "title": "Solar Radiation / UV", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 450, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-purple", + "value": null + }, + { + "color": "purple", + "value": 20 + }, + { + "color": "semi-dark-blue", + "value": 90 + }, + { + "color": "super-light-blue", + "value": 150 + }, + { + "color": "semi-dark-yellow", + "value": 250 + }, + { + "color": "super-light-yellow", + "value": 350 + } + ] + }, + "unit": "Wm2" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 5, + "x": 19, + "y": 59 + }, + "id": 43, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": true, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "avg(weather_solar_radiation{station_type=~\"$station\"}) by (station_type)", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + } + ], + "title": "Solar Radiation", + "type": "gauge" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 66 + }, + "id": 35, + "panels": [], + "repeat": "station", + "title": "Rain $station", + "type": "row" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "semi-dark-blue", + "value": 1 + }, + { + "color": "#EAB839", + "value": 2 + }, + { + "color": "red", + "value": 3 + } + ] + }, + "unit": "lengthin" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 8, + "x": 0, + "y": 67 + }, + "id": 37, + "options": { + "colorMode": "background", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "avg(weather_daily_rain_in{station_type=~\"$station\"}) by (station_type)", + "instant": true, + "legendFormat": "Daily", + "range": false, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "avg(weather_weekly_rain_in{station_type=~\"$station\"}) by (station_type)", + "hide": false, + "instant": true, + "legendFormat": "Weekly", + "range": false, + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "avg(weather_monthly_rain_in{station_type=~\"$station\"}) by (station_type)", + "hide": false, + "instant": true, + "legendFormat": "Monthly", + "range": false, + "refId": "C" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "avg(weather_yearly_rain_in{station_type=~\"$station\"}) by (station_type)", + "hide": false, + "instant": true, + "legendFormat": "Yearly", + "range": false, + "refId": "D" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "avg(weather_hourly_rain_in{station_type=~\"$station\"}) by (station_type)", + "hide": false, + "instant": true, + "legendFormat": "Hourly", + "range": false, + "refId": "E" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "avg(weather_event_rain_in{station_type=~\"$station\"}) by (station_type)", + "hide": false, + "instant": true, + "legendFormat": "Event", + "range": false, + "refId": "F" + } + ], + "title": "Rain Amounts", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "fillOpacity": 68, + "gradientMode": "hue", + "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": "line+area" + } + }, + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "super-light-green", + "value": null + }, + { + "color": "blue", + "value": 0.05 + }, + { + "color": "dark-blue", + "value": 0.1 + }, + { + "color": "dark-purple", + "value": 0.25 + }, + { + "color": "dark-red", + "value": 0.5 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 8, + "x": 8, + "y": 67 + }, + "id": 36, + "maxDataPoints": 60, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "expr": "max(sum_over_time(increase(weather_total_rain_in{station_type=~\"$station\"})[$__interval])) by (station_type)", + "legendFormat": "Rain", + "range": true, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + } + ], + "title": "Rain Over Time", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "fillOpacity": 70, + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineWidth": 0, + "spanNulls": false + }, + "decimals": 3, + "mappings": [ + { + "options": { + "from": -1, + "result": { + "color": "text", + "index": 0, + "text": "No Rain" + }, + "to": 0 + }, + "type": "range" + }, + { + "options": { + "from": 0, + "result": { + "color": "super-light-blue", + "index": 1, + "text": "Light Rain" + }, + "to": 5 + }, + "type": "range" + }, + { + "options": { + "from": 0.5, + "result": { + "color": "light-blue", + "index": 2, + "text": "Rain" + }, + "to": 0.75 + }, + "type": "range" + }, + { + "options": { + "from": 0.75, + "result": { + "color": "semi-dark-blue", + "index": 3, + "text": "Heavy Rain" + }, + "to": 1 + }, + "type": "range" + }, + { + "options": { + "from": 1, + "result": { + "color": "dark-blue", + "index": 4, + "text": "Downpour" + }, + "to": 2 + }, + "type": "range" + }, + { + "options": { + "from": 2, + "result": { + "color": "dark-purple", + "index": 5, + "text": "Get a Boat" + }, + "to": 999 + }, + "type": "range" + } + ], + "max": 5, + "min": 0, + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text", + "value": null + } + ] + }, + "unit": "lengthin" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 8, + "x": 16, + "y": 67 + }, + "id": 38, + "interval": "5m", + "maxDataPoints": 60, + "options": { + "alignValue": "left", + "legend": { + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "mergeValues": true, + "rowHeight": 0.9, + "showValue": "auto", + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "expr": "max(sum_over_time(increase(weather_total_rain_in{station_type=~\"$station\"}[5m])[$__interval])) by (station_type)", + "interval": "5m", + "legendFormat": "5 Minute Rain", + "range": true, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + } + ], + "title": "Rain Status", + "type": "state-timeline" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 74 + }, + "id": 47, + "panels": [], + "title": "Exporter Telemetry", + "type": "row" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "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": "ms" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 15, + "x": 0, + "y": 75 + }, + "id": 50, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "expr": "histogram_quantile(0.99, sum(rate(http_server_duration_milliseconds_bucket{k8s_pod_name=~\".*ambient.*\"}[$__rate_interval])) by (le))", + "legendFormat": "P99 Latency", + "range": true, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "histogram_quantile(0.90, sum(rate(http_server_duration_milliseconds_bucket{k8s_pod_name=~\".*ambient.*\"}[$__rate_interval])) by (le))", + "hide": false, + "instant": false, + "legendFormat": "P90 Latency", + "range": true, + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "histogram_quantile(0.50, sum(rate(http_server_duration_milliseconds_bucket{k8s_pod_name=~\".*ambient.*\"}[$__rate_interval])) by (le))", + "hide": false, + "instant": false, + "legendFormat": "P50 Latency", + "range": true, + "refId": "C" + } + ], + "title": "Weather Station Request Latencies", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "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": 6, + "w": 9, + "x": 15, + "y": 75 + }, + "id": 51, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "target_info{k8s_pod_name=~\".*ambient.*\"}", + "format": "table", + "hide": false, + "instant": true, + "legendFormat": "", + "range": false, + "refId": "A" + } + ], + "title": "Exporter Info", + "transformations": [ + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "env", + "k8s_pod_ip", + "k8s_pod_name", + "service_version" + ] + } + } + }, + { + "id": "transpose", + "options": {} + } + ], + "type": "table" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "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": "reqps" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 81 + }, + "id": 48, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "expr": "sum(rate(weather_updates_received_total{k8s_pod_name=~\".*ambient.*\"}[$__rate_interval]))", + "legendFormat": "{{service_version}}", + "range": true, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + } + ], + "title": "Weather Station Request Rate", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "hidden", + "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", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 81 + }, + "id": 49, + "options": { + "barRadius": 0, + "barWidth": 0.97, + "fullHighlight": false, + "groupWidth": 0.7, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "orientation": "auto", + "showValue": "always", + "stacking": "none", + "tooltip": { + "mode": "multi", + "sort": "none" + }, + "xField": "Time", + "xTickLabelRotation": 0, + "xTickLabelSpacing": 0 + }, + "pluginVersion": "11.3.0", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "sum(increase(http_server_duration_milliseconds_bucket{k8s_pod_name=~\".*ambient.*\"}[$__range])) by (le)", + "format": "heatmap", + "instant": true, + "legendFormat": "{{le}} ms", + "range": false, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + } + ], + "title": "HTTP Server Request Duration Buckets", + "type": "barchart" + } + ], + "refresh": "1m", + "schemaVersion": 40, + "tags": [], + "templating": { + "list": [ + { + "current": {}, + "definition": "label_values(weather_temp_indoor_f,station_type)", + "includeAll": true, + "label": "Weather Station", + "multi": true, + "name": "station", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(weather_temp_indoor_f,station_type)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 1, + "regex": "", + "type": "query" + } + ] + }, + "time": { + "from": "now/d", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "Ambient Local Weather", + "uid": "fe916mjcqgd1ca", + "version": 70, + "weekStart": "" +} \ No newline at end of file diff --git a/unset_env.sh b/contrib/unset_env.sh similarity index 100% rename from unset_env.sh rename to contrib/unset_env.sh