ctucx.git: nixfiles

ctucx' nixfiles

commit decb17d54502f1b264eb41a9fddb597eae7a0b1c
parent d5f3e8492dc5fadb2559f907c2b2fb00c692dee5
Author: Leah (ctucx) <git@ctu.cx>
Date: Wed, 14 Dec 2022 10:59:39 +0100

machines/trabbi/grafana: update dashboard
4 files changed, 288 insertions(+), 730 deletions(-)
M
flake.lock
|
8
++++----
M
machines/trabbi/grafana/dashboards/SmartHome.json
|
798
++++++++++++++++++-------------------------------------------------------------
M
machines/trabbi/grafana/default.nix
|
31
++++++++++---------------------
M
secrets/flake.nix.age
|
181
++++++++++++++++++++++++++++++++++++++++---------------------------------------
diff --git a/flake.lock b/flake.lock
@@ -360,7 +360,7 @@
     "local-secrets": {
       "locked": {
         "lastModified": 0,
-        "narHash": "sha256-n4YQlbRjltid1vgovueppFYRRnuWkAgE50Iyf8R0ySA=",
+        "narHash": "sha256-XK2UpQxrxZtsRkdngah8ugkKzptRPbOlDdi3y83iJTY=",
         "type": "git",
         "url": "file:///tmp/nix-secrets"
       },

@@ -403,10 +403,10 @@
         ]
       },
       "locked": {
-        "lastModified": 1670953149,
-        "narHash": "sha256-VADBy42h3jxcrlMtwaNIf3Xo1B/gnOt3pj0hRde65Lo=",
+        "lastModified": 1671011305,
+        "narHash": "sha256-ZeZNVoblnfWDhoULjWxndjKEjP85Q8NNh/IWoiSUeJ4=",
         "ref": "master",
-        "rev": "06253735ad68b6133a4fbcac5a2b847aae1a7b5a",
+        "rev": "ad9343f711898047e6df6a82f7e0993895b6dd37",
         "revCount": 18,
         "type": "git",
         "url": "https://git.ctu.cx/mqtt-webui"
diff --git a/machines/trabbi/grafana/dashboards/SmartHome.json b/machines/trabbi/grafana/dashboards/SmartHome.json
@@ -30,7 +30,7 @@
     {
       "datasource": {
         "type": "influxdb",
-        "uid": "PA0E6B47E27FEC54C"
+        "uid": "PE2A2C1E083866E29"
       },
       "fieldConfig": {
         "defaults": {

@@ -79,30 +79,15 @@
         "showThresholdMarkers": true,
         "text": {}
       },
-      "pluginVersion": "8.5.11",
+      "pluginVersion": "9.2.5",
       "targets": [
         {
-          "alias": "L. Zimmer",
-          "groupBy": [],
-          "measurement": "lacrosse-l1",
-          "orderByTime": "ASC",
-          "policy": "autogen",
-          "query": "SELECT mean(\"value\") FROM \"sensors\".\"measurement\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
-          "queryType": "randomWalk",
-          "rawQuery": false,
-          "refId": "A",
-          "resultFormat": "time_series",
-          "select": [
-            [
-              {
-                "params": [
-                  "temperature"
-                ],
-                "type": "field"
-              }
-            ]
-          ],
-          "tags": []
+          "datasource": {
+            "type": "influxdb",
+            "uid": "PE2A2C1E083866E29"
+          },
+          "query": "from(bucket: \"mqttData\")\n  |> range(start: v.timeRangeStart, stop:v.timeRangeStop)\n  |> filter(fn: (r) => (r._measurement == \"mqtt_consumer\" and r._field == \"temperature\" and r.topic == \"lacrosse2mqtt/5\"))\n  |> last()\n  |> yield()",
+          "refId": "A"
         }
       ],
       "title": "Bad",

@@ -112,7 +97,7 @@
     {
       "datasource": {
         "type": "influxdb",
-        "uid": "PAA5748F9FC9E31B1"
+        "uid": "PE2A2C1E083866E29"
       },
       "description": "",
       "fieldConfig": {

@@ -153,6 +138,7 @@
         "y": 0
       },
       "id": 4,
+      "maxDataPoints": 10,
       "options": {
         "orientation": "auto",
         "reduceOptions": {

@@ -166,31 +152,15 @@
         "showThresholdMarkers": true,
         "text": {}
       },
-      "pluginVersion": "8.5.11",
+      "pluginVersion": "9.2.5",
       "targets": [
         {
-          "alias": "L. Zimmer",
-          "groupBy": [],
-          "measurement": "modbus-50",
-          "orderByTime": "ASC",
-          "policy": "default",
-          "refId": "B",
-          "resultFormat": "time_series",
-          "select": [
-            [
-              {
-                "params": [
-                  "voltage"
-                ],
-                "type": "field"
-              },
-              {
-                "params": [],
-                "type": "last"
-              }
-            ]
-          ],
-          "tags": []
+          "datasource": {
+            "type": "influxdb",
+            "uid": "PE2A2C1E083866E29"
+          },
+          "query": "from(bucket: \"mqttData\")\n  |> range(start: v.timeRangeStart, stop:v.timeRangeStop)\n  |> filter(fn: (r) => (r._measurement == \"mqtt_consumer\" and r._field == \"voltage\"))\n  |> last()\n  |> yield()",
+          "refId": "A"
         }
       ],
       "title": "Voltage",

@@ -200,7 +170,7 @@
     {
       "datasource": {
         "type": "influxdb",
-        "uid": "PAA5748F9FC9E31B1"
+        "uid": "PE2A2C1E083866E29"
       },
       "fieldConfig": {
         "defaults": {

@@ -245,121 +215,25 @@
         "showThresholdMarkers": true,
         "text": {}
       },
-      "pluginVersion": "8.5.11",
+      "pluginVersion": "9.2.5",
       "targets": [
         {
-          "alias": "L. Zimmer",
-          "groupBy": [],
-          "measurement": "modbus-50",
-          "orderByTime": "ASC",
-          "policy": "default",
-          "queryType": "randomWalk",
-          "refId": "B",
-          "resultFormat": "time_series",
-          "select": [
-            [
-              {
-                "params": [
-                  "frequency"
-                ],
-                "type": "field"
-              },
-              {
-                "params": [],
-                "type": "last"
-              }
-            ]
-          ],
-          "tags": []
-        }
-      ],
-      "title": "Frequency",
-      "transparent": true,
-      "type": "gauge"
-    },
-    {
-      "datasource": {
-        "type": "influxdb",
-        "uid": "PAA5748F9FC9E31B1"
-      },
-      "fieldConfig": {
-        "defaults": {
-          "decimals": 2,
-          "mappings": [],
-          "max": 16,
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "green",
-                "value": null
-              },
-              {
-                "color": "red",
-                "value": 10
-              }
-            ]
+          "datasource": {
+            "type": "influxdb",
+            "uid": "PE2A2C1E083866E29"
           },
-          "unit": "amp"
-        },
-        "overrides": []
-      },
-      "gridPos": {
-        "h": 6,
-        "w": 3,
-        "x": 9,
-        "y": 0
-      },
-      "id": 8,
-      "options": {
-        "orientation": "auto",
-        "reduceOptions": {
-          "calcs": [
-            "lastNotNull"
-          ],
-          "fields": "",
-          "values": false
-        },
-        "showThresholdLabels": false,
-        "showThresholdMarkers": true,
-        "text": {}
-      },
-      "pluginVersion": "8.5.11",
-      "targets": [
-        {
-          "alias": "L. Zimmer",
-          "groupBy": [],
-          "measurement": "modbus-50",
-          "orderByTime": "ASC",
-          "policy": "default",
-          "queryType": "randomWalk",
-          "refId": "B",
-          "resultFormat": "time_series",
-          "select": [
-            [
-              {
-                "params": [
-                  "current"
-                ],
-                "type": "field"
-              },
-              {
-                "params": [],
-                "type": "last"
-              }
-            ]
-          ],
-          "tags": []
+          "query": "from(bucket: \"mqttData\")\n  |> range(start: v.timeRangeStart, stop:v.timeRangeStop)\n  |> filter(fn: (r) => (r._measurement == \"mqtt_consumer\" and r._field == \"frequency\"))\n  |> last()\n  |> yield()",
+          "refId": "A"
         }
       ],
-      "title": "Current",
+      "title": "Frequency",
       "transparent": true,
       "type": "gauge"
     },
     {
       "datasource": {
         "type": "influxdb",
-        "uid": "PAA5748F9FC9E31B1"
+        "uid": "PE2A2C1E083866E29"
       },
       "fieldConfig": {
         "defaults": {

@@ -404,31 +278,15 @@
         "showThresholdMarkers": true,
         "text": {}
       },
-      "pluginVersion": "8.5.11",
+      "pluginVersion": "9.2.5",
       "targets": [
         {
-          "alias": "L. Zimmer",
-          "groupBy": [],
-          "measurement": "modbus-50",
-          "orderByTime": "ASC",
-          "policy": "default",
-          "refId": "B",
-          "resultFormat": "time_series",
-          "select": [
-            [
-              {
-                "params": [
-                  "cosphi"
-                ],
-                "type": "field"
-              },
-              {
-                "params": [],
-                "type": "last"
-              }
-            ]
-          ],
-          "tags": []
+          "datasource": {
+            "type": "influxdb",
+            "uid": "PE2A2C1E083866E29"
+          },
+          "query": "from(bucket: \"mqttData\")\n  |> range(start: v.timeRangeStart, stop:v.timeRangeStop)\n  |> filter(fn: (r) => (r._measurement == \"mqtt_consumer\" and r._field == \"cosphi\"))\n  |> last()\n  |> yield()",
+          "refId": "A"
         }
       ],
       "title": "Power Factor",

@@ -438,7 +296,7 @@
     {
       "datasource": {
         "type": "influxdb",
-        "uid": "PAA5748F9FC9E31B1"
+        "uid": "PE2A2C1E083866E29"
       },
       "fieldConfig": {
         "defaults": {

@@ -487,32 +345,15 @@
         "showThresholdMarkers": true,
         "text": {}
       },
-      "pluginVersion": "8.5.11",
+      "pluginVersion": "9.2.5",
       "targets": [
         {
-          "alias": "L. Zimmer",
-          "groupBy": [],
-          "measurement": "modbus-50",
-          "orderByTime": "ASC",
-          "policy": "default",
-          "queryType": "randomWalk",
-          "refId": "B",
-          "resultFormat": "time_series",
-          "select": [
-            [
-              {
-                "params": [
-                  "power"
-                ],
-                "type": "field"
-              },
-              {
-                "params": [],
-                "type": "last"
-              }
-            ]
-          ],
-          "tags": []
+          "datasource": {
+            "type": "influxdb",
+            "uid": "PE2A2C1E083866E29"
+          },
+          "query": "from(bucket: \"mqttData\")\n  |> range(start: v.timeRangeStart, stop:v.timeRangeStop)\n  |> filter(fn: (r) => (r._measurement == \"mqtt_consumer\" and r._field == \"power\"))\n  |> last()\n  |> yield()\n",
+          "refId": "A"
         }
       ],
       "title": "Power",

@@ -522,7 +363,7 @@
     {
       "datasource": {
         "type": "influxdb",
-        "uid": "PAA5748F9FC9E31B1"
+        "uid": "PE2A2C1E083866E29"
       },
       "fieldConfig": {
         "defaults": {

@@ -561,44 +402,28 @@
           "values": false
         },
         "text": {},
-        "textMode": "value_and_name"
+        "textMode": "value"
       },
-      "pluginVersion": "8.5.11",
+      "pluginVersion": "9.2.5",
       "targets": [
         {
-          "alias": "L. Zimmer",
-          "groupBy": [],
-          "measurement": "modbus-50",
-          "orderByTime": "ASC",
-          "policy": "default",
-          "queryType": "randomWalk",
-          "refId": "B",
-          "resultFormat": "time_series",
-          "select": [
-            [
-              {
-                "params": [
-                  "import"
-                ],
-                "type": "field"
-              },
-              {
-                "params": [],
-                "type": "last"
-              }
-            ]
-          ],
-          "tags": []
+          "datasource": {
+            "type": "influxdb",
+            "uid": "PE2A2C1E083866E29"
+          },
+          "query": "from(bucket: \"mqttData\")\n  |> range(start: v.timeRangeStart, stop:v.timeRangeStop)\n  |> filter(fn: (r) => (r._measurement == \"mqtt_consumer\" and r._field == \"import\"))\n  |> last()\n  |> yield()",
+          "refId": "A"
         }
       ],
       "title": "Imported",
+      "transformations": [],
       "transparent": true,
       "type": "stat"
     },
     {
       "datasource": {
         "type": "influxdb",
-        "uid": "PA0E6B47E27FEC54C"
+        "uid": "PE2A2C1E083866E29"
       },
       "fieldConfig": {
         "defaults": {

@@ -647,34 +472,15 @@
         "showThresholdMarkers": true,
         "text": {}
       },
-      "pluginVersion": "8.5.11",
+      "pluginVersion": "9.2.5",
       "targets": [
         {
-          "alias": "",
-          "groupBy": [],
-          "measurement": "lacrosse-kuehlschrank",
-          "orderByTime": "ASC",
-          "policy": "autogen",
-          "query": "SELECT mean(\"value\") FROM \"sensors\".\"measurement\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
-          "queryType": "randomWalk",
-          "rawQuery": false,
-          "refId": "A",
-          "resultFormat": "time_series",
-          "select": [
-            [
-              {
-                "params": [
-                  "temperature"
-                ],
-                "type": "field"
-              },
-              {
-                "params": [],
-                "type": "last"
-              }
-            ]
-          ],
-          "tags": []
+          "datasource": {
+            "type": "influxdb",
+            "uid": "PE2A2C1E083866E29"
+          },
+          "query": "from(bucket: \"mqttData\")\n  |> range(start: v.timeRangeStart, stop:v.timeRangeStop)\n  |> filter(fn: (r) => (r._measurement == \"mqtt_consumer\" and r._field == \"temperature\" and r.topic == \"lacrosse2mqtt/33\"))\n  |> last()\n  |> yield()",
+          "refId": "A"
         }
       ],
       "title": "Kühlschrank",

@@ -684,7 +490,7 @@
     {
       "datasource": {
         "type": "influxdb",
-        "uid": "PAA5748F9FC9E31B1"
+        "uid": "PE2A2C1E083866E29"
       },
       "description": "",
       "fieldConfig": {

@@ -693,6 +499,8 @@
             "mode": "palette-classic"
           },
           "custom": {
+            "axisCenteredZero": false,
+            "axisColorMode": "text",
             "axisLabel": "",
             "axisPlacement": "auto",
             "barAlignment": 0,

@@ -749,7 +557,8 @@
         "legend": {
           "calcs": [],
           "displayMode": "list",
-          "placement": "bottom"
+          "placement": "bottom",
+          "showLegend": true
         },
         "tooltip": {
           "mode": "multi",

@@ -759,43 +568,12 @@
       "pluginVersion": "8.5.11",
       "targets": [
         {
-          "alias": "L. Zimmer",
-          "groupBy": [
-            {
-              "params": [
-                "$__interval"
-              ],
-              "type": "time"
-            },
-            {
-              "params": [
-                "linear"
-              ],
-              "type": "fill"
-            }
-          ],
-          "measurement": "modbus-50",
-          "orderByTime": "ASC",
-          "policy": "default",
-          "query": "SELECT mean(\"value\") FROM \"modbus-50\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
-          "rawQuery": false,
-          "refId": "B",
-          "resultFormat": "time_series",
-          "select": [
-            [
-              {
-                "params": [
-                  "power"
-                ],
-                "type": "field"
-              },
-              {
-                "params": [],
-                "type": "mean"
-              }
-            ]
-          ],
-          "tags": []
+          "datasource": {
+            "type": "influxdb",
+            "uid": "PE2A2C1E083866E29"
+          },
+          "query": "from(bucket: \"mqttData\")\n  |> range(start: v.timeRangeStart, stop:v.timeRangeStop)\n  |> filter(fn: (r) => (r._measurement == \"mqtt_consumer\" and r._field == \"power\"))\n  |> yield()",
+          "refId": "A"
         }
       ],
       "title": "Power Consumption",

@@ -805,7 +583,7 @@
     {
       "datasource": {
         "type": "influxdb",
-        "uid": "PAA5748F9FC9E31B1"
+        "uid": "PE2A2C1E083866E29"
       },
       "fieldConfig": {
         "defaults": {

@@ -813,6 +591,8 @@
             "mode": "palette-classic"
           },
           "custom": {
+            "axisCenteredZero": false,
+            "axisColorMode": "text",
             "axisLabel": "",
             "axisPlacement": "auto",
             "barAlignment": 0,

@@ -869,7 +649,8 @@
         "legend": {
           "calcs": [],
           "displayMode": "list",
-          "placement": "bottom"
+          "placement": "bottom",
+          "showLegend": true
         },
         "tooltip": {
           "mode": "multi",

@@ -879,41 +660,12 @@
       "pluginVersion": "8.5.11",
       "targets": [
         {
-          "alias": "L. Zimmer",
-          "groupBy": [
-            {
-              "params": [
-                "$__interval"
-              ],
-              "type": "time"
-            },
-            {
-              "params": [
-                "linear"
-              ],
-              "type": "fill"
-            }
-          ],
-          "measurement": "modbus-50",
-          "orderByTime": "ASC",
-          "policy": "default",
-          "refId": "B",
-          "resultFormat": "time_series",
-          "select": [
-            [
-              {
-                "params": [
-                  "voltage"
-                ],
-                "type": "field"
-              },
-              {
-                "params": [],
-                "type": "mean"
-              }
-            ]
-          ],
-          "tags": []
+          "datasource": {
+            "type": "influxdb",
+            "uid": "PE2A2C1E083866E29"
+          },
+          "query": "from(bucket: \"mqttData\")\n  |> range(start: v.timeRangeStart, stop:v.timeRangeStop)\n  |> filter(fn: (r) => (r._measurement == \"mqtt_consumer\" and r._field == \"voltage\"))\n  |> yield()",
+          "refId": "A"
         }
       ],
       "title": "Voltage",

@@ -923,7 +675,7 @@
     {
       "datasource": {
         "type": "influxdb",
-        "uid": "PA0E6B47E27FEC54C"
+        "uid": "PE2A2C1E083866E29"
       },
       "fieldConfig": {
         "defaults": {

@@ -931,6 +683,8 @@
             "mode": "palette-classic"
           },
           "custom": {
+            "axisCenteredZero": false,
+            "axisColorMode": "text",
             "axisLabel": "",
             "axisPlacement": "auto",
             "barAlignment": 0,

@@ -974,7 +728,56 @@
           },
           "unit": "celsius"
         },
-        "overrides": []
+        "overrides": [
+          {
+            "matcher": {
+              "id": "byName",
+              "options": "temperature {host=\"lollo\", topic=\"lacrosse2mqtt/33\"}"
+            },
+            "properties": [
+              {
+                "id": "displayName",
+                "value": "Kühlschrank"
+              }
+            ]
+          },
+          {
+            "matcher": {
+              "id": "byName",
+              "options": "temperature {host=\"lollo\", topic=\"lacrosse2mqtt/5\"}"
+            },
+            "properties": [
+              {
+                "id": "displayName",
+                "value": "Bad"
+              }
+            ]
+          },
+          {
+            "matcher": {
+              "id": "byName",
+              "options": "temperature {host=\"lollo\", topic=\"lacrosse2mqtt/3a\"}"
+            },
+            "properties": [
+              {
+                "id": "displayName",
+                "value": "Leah"
+              }
+            ]
+          },
+          {
+            "matcher": {
+              "id": "byName",
+              "options": "temperature {host=\"lollo\", topic=\"lacrosse2mqtt/3c\"}"
+            },
+            "properties": [
+              {
+                "id": "displayName",
+                "value": "Isa"
+              }
+            ]
+          }
+        ]
       },
       "gridPos": {
         "h": 8,

@@ -987,7 +790,8 @@
         "legend": {
           "calcs": [],
           "displayMode": "list",
-          "placement": "bottom"
+          "placement": "bottom",
+          "showLegend": true
         },
         "tooltip": {
           "mode": "multi",

@@ -997,205 +801,12 @@
       "pluginVersion": "8.5.11",
       "targets": [
         {
-          "alias": "Bad",
-          "groupBy": [
-            {
-              "params": [
-                "$__interval"
-              ],
-              "type": "time"
-            },
-            {
-              "params": [
-                "linear"
-              ],
-              "type": "fill"
-            }
-          ],
-          "measurement": "lacrosse-bad",
-          "orderByTime": "ASC",
-          "policy": "default",
-          "query": "SELECT mean(\"value\") FROM \"measurement\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
-          "queryType": "randomWalk",
-          "rawQuery": false,
-          "refId": "A",
-          "resultFormat": "time_series",
-          "select": [
-            [
-              {
-                "params": [
-                  "temperature"
-                ],
-                "type": "field"
-              },
-              {
-                "params": [],
-                "type": "mean"
-              }
-            ]
-          ],
-          "tags": []
-        },
-        {
-          "alias": "Draußen",
-          "groupBy": [
-            {
-              "params": [
-                "$__interval"
-              ],
-              "type": "time"
-            },
-            {
-              "params": [
-                "linear"
-              ],
-              "type": "fill"
-            }
-          ],
-          "measurement": "lacrosse-draussen",
-          "orderByTime": "ASC",
-          "policy": "default",
-          "query": "SELECT mean(\"value\") FROM \"measurement\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
-          "queryType": "randomWalk",
-          "rawQuery": false,
-          "refId": "B",
-          "resultFormat": "time_series",
-          "select": [
-            [
-              {
-                "params": [
-                  "temperature"
-                ],
-                "type": "field"
-              },
-              {
-                "params": [],
-                "type": "mean"
-              }
-            ]
-          ],
-          "tags": []
-        },
-        {
-          "alias": "Kühlschrank",
-          "groupBy": [
-            {
-              "params": [
-                "$__interval"
-              ],
-              "type": "time"
-            },
-            {
-              "params": [
-                "linear"
-              ],
-              "type": "fill"
-            }
-          ],
-          "measurement": "lacrosse-kuehlschrank",
-          "orderByTime": "ASC",
-          "policy": "default",
-          "query": "SELECT mean(\"temperature\") FROM \"lacrosse-kuehlschrank\" WHERE $timeFilter GROUP BY time($__interval) fill(linear)",
-          "queryType": "randomWalk",
-          "rawQuery": false,
-          "refId": "C",
-          "resultFormat": "time_series",
-          "select": [
-            [
-              {
-                "params": [
-                  "temperature"
-                ],
-                "type": "field"
-              },
-              {
-                "params": [],
-                "type": "mean"
-              }
-            ]
-          ],
-          "tags": []
-        },
-        {
-          "alias": "Zimmer1",
-          "groupBy": [
-            {
-              "params": [
-                "$__interval"
-              ],
-              "type": "time"
-            },
-            {
-              "params": [
-                "linear"
-              ],
-              "type": "fill"
-            }
-          ],
-          "measurement": "lacrosse-l1",
-          "orderByTime": "ASC",
-          "policy": "default",
-          "query": "SELECT mean(\"temperature\") FROM \"lacrosse-kuehlschrank\" WHERE $timeFilter GROUP BY time($__interval) fill(linear)",
-          "queryType": "randomWalk",
-          "rawQuery": false,
-          "refId": "D",
-          "resultFormat": "time_series",
-          "select": [
-            [
-              {
-                "params": [
-                  "temperature"
-                ],
-                "type": "field"
-              },
-              {
-                "params": [],
-                "type": "mean"
-              }
-            ]
-          ],
-          "tags": []
-        },
-        {
-          "alias": "Zimmer2",
-          "groupBy": [
-            {
-              "params": [
-                "$__interval"
-              ],
-              "type": "time"
-            },
-            {
-              "params": [
-                "linear"
-              ],
-              "type": "fill"
-            }
-          ],
-          "hide": false,
-          "measurement": "lacrosse-l2",
-          "orderByTime": "ASC",
-          "policy": "default",
-          "query": "SELECT mean(\"temperature\") FROM \"lacrosse-kuehlschrank\" WHERE $timeFilter GROUP BY time($__interval) fill(linear)",
-          "queryType": "randomWalk",
-          "rawQuery": false,
-          "refId": "E",
-          "resultFormat": "time_series",
-          "select": [
-            [
-              {
-                "params": [
-                  "temperature"
-                ],
-                "type": "field"
-              },
-              {
-                "params": [],
-                "type": "mean"
-              }
-            ]
-          ],
-          "tags": []
+          "datasource": {
+            "type": "influxdb",
+            "uid": "PE2A2C1E083866E29"
+          },
+          "query": "from(bucket: \"mqttData\")\n  |> range(start: v.timeRangeStart, stop:v.timeRangeStop)\n  |> filter(fn: (r) => (r._measurement == \"mqtt_consumer\" and r._field == \"temperature\"))\n  |> yield()",
+          "refId": "A"
         }
       ],
       "title": "Temperature",

@@ -1205,7 +816,7 @@
     {
       "datasource": {
         "type": "influxdb",
-        "uid": "PA0E6B47E27FEC54C"
+        "uid": "PE2A2C1E083866E29"
       },
       "fieldConfig": {
         "defaults": {

@@ -1213,6 +824,8 @@
             "mode": "palette-classic"
           },
           "custom": {
+            "axisCenteredZero": false,
+            "axisColorMode": "text",
             "axisLabel": "",
             "axisPlacement": "auto",
             "barAlignment": 0,

@@ -1256,7 +869,32 @@
           },
           "unit": "humidity"
         },
-        "overrides": []
+        "overrides": [
+          {
+            "matcher": {
+              "id": "byName",
+              "options": "humidity {host=\"lollo\", topic=\"lacrosse2mqtt/3c\"}"
+            },
+            "properties": [
+              {
+                "id": "displayName",
+                "value": "Isa"
+              }
+            ]
+          },
+          {
+            "matcher": {
+              "id": "byName",
+              "options": "humidity {host=\"lollo\", topic=\"lacrosse2mqtt/5\"}"
+            },
+            "properties": [
+              {
+                "id": "displayName",
+                "value": "Bad"
+              }
+            ]
+          }
+        ]
       },
       "gridPos": {
         "h": 8,

@@ -1269,7 +907,8 @@
         "legend": {
           "calcs": [],
           "displayMode": "list",
-          "placement": "bottom"
+          "placement": "bottom",
+          "showLegend": true
         },
         "tooltip": {
           "mode": "multi",

@@ -1279,85 +918,12 @@
       "pluginVersion": "8.5.11",
       "targets": [
         {
-          "alias": "Bad",
-          "groupBy": [
-            {
-              "params": [
-                "$__interval"
-              ],
-              "type": "time"
-            },
-            {
-              "params": [
-                "linear"
-              ],
-              "type": "fill"
-            }
-          ],
-          "measurement": "lacrosse-bad",
-          "orderByTime": "ASC",
-          "policy": "default",
-          "query": "SELECT mean(\"value\") FROM \"measurement\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
-          "queryType": "randomWalk",
-          "rawQuery": false,
-          "refId": "A",
-          "resultFormat": "time_series",
-          "select": [
-            [
-              {
-                "params": [
-                  "humidity"
-                ],
-                "type": "field"
-              },
-              {
-                "params": [],
-                "type": "mean"
-              }
-            ]
-          ],
-          "tags": []
-        },
-        {
-          "alias": "L. Zimmer",
-          "groupBy": [
-            {
-              "params": [
-                "$__interval"
-              ],
-              "type": "time"
-            },
-            {
-              "params": [
-                "linear"
-              ],
-              "type": "fill"
-            }
-          ],
-          "hide": false,
-          "measurement": "lacrosse-l1",
-          "orderByTime": "ASC",
-          "policy": "default",
-          "query": "SELECT mean(\"temperature\") FROM \"lacrosse-kuehlschrank\" WHERE $timeFilter GROUP BY time($__interval) fill(linear)",
-          "queryType": "randomWalk",
-          "rawQuery": false,
-          "refId": "C",
-          "resultFormat": "time_series",
-          "select": [
-            [
-              {
-                "params": [
-                  "humidity"
-                ],
-                "type": "field"
-              },
-              {
-                "params": [],
-                "type": "mean"
-              }
-            ]
-          ],
-          "tags": []
+          "datasource": {
+            "type": "influxdb",
+            "uid": "PE2A2C1E083866E29"
+          },
+          "query": "from(bucket: \"mqttData\")\n  |> range(start: v.timeRangeStart, stop:v.timeRangeStop)\n  |> filter(fn: (r) => (r._measurement == \"mqtt_consumer\" and r._field == \"humidity\"))\n  |> yield()",
+          "refId": "A"
         }
       ],
       "title": "Humidity",

@@ -1366,14 +932,14 @@
     }
   ],
   "refresh": "5s",
-  "schemaVersion": 36,
+  "schemaVersion": 37,
   "style": "dark",
   "tags": [],
   "templating": {
     "list": []
   },
   "time": {
-    "from": "now-12h",
+    "from": "now-30m",
     "to": "now"
   },
   "timepicker": {

@@ -1393,6 +959,6 @@
   "timezone": "",
   "title": "SmartHome (Influx)",
   "uid": "FRDYqjEGz",
-  "version": 3,
+  "version": 1,
   "weekStart": ""
 } 
\ No newline at end of file
diff --git a/machines/trabbi/grafana/default.nix b/machines/trabbi/grafana/default.nix
@@ -32,29 +32,18 @@
           }
 
           {
-            name                     = "InfluxDB (Powermeters)";
-            type                     = "influxdb";
-            url                      = "https://influx.home.ctu.cx";
-            orgId                    = 1;
-            database                 = "powermeters";
-            editable                 = false;
-            jsonData.httpMode        = "GET";
-            jsonData.httpHeaderName1 = "Authorization";
-            secureJsonData.httpHeaderValue1 = "Token ${inputs.local-secrets.hosts.lollo.smartied.influxToken}";
+            name                   = "InfluxDB (mqttData)";
+            type                   = "influxdb";
+            url                    = "https://influx.home.ctu.cx";
+            orgId                  = 1;
+            database               = "mqttData";
+            editable               = false;
+            jsonData.version       = "Flux";
+            jsonData.organization  = "leah";
+            jsonData.defaultBucket = "mqttData";
+            secureJsonData.token   = inputs.local-secrets.hosts.trabbi.grafana.influxToken;
           }
 
-          {
-            name                     = "InfluxDB (Sensors)";
-            type                     = "influxdb";
-            url                      = "https://influx.home.ctu.cx";
-            orgId                    = 1;
-            database                 = "sensors";
-            editable                 = false;
-            jsonData.httpMode        = "GET";
-            jsonData.httpHeaderName1 = "Authorization";
-            secureJsonData.httpHeaderValue1 = "Token ${inputs.local-secrets.hosts.lollo.smartied.influxToken}";
-          }	
-
         ];
 
         dashboards.settings.providers = [{
diff --git a/secrets/flake.nix.age b/secrets/flake.nix.age
@@ -1,91 +1,94 @@
 -----BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxcXQvR2Erc0drZEl6TlJY
-Q2s1S1RnMllTK1hoMk9mNVY4VGZmanNRUUMwCjFKNmp0eXdxMWlsS0tFeVQ5RlRw
-UFR3aWhncWZSVjFjUlBPVGtZU095dkUKLS0tIHYzdlRHRmE2cWNDY29xaDh5b2du
-Q21Bdk9ZQ3BQcnJNMmk4ZTYvdEFNM0UKGwR+T0HVXNsnlfU/85a+dE0rl4GMVIER
-WsSfJrwuOhySi0DoxjcDv67U904rXK5cVoA2m2yP6qooeqg0Mk0QMsZvwtmvgRwi
-FKRLRI+uOk453ixQtYFIGUkPxRAFCVoOVX9b6TnaQMBB4i8o9ivVN3k6L1QKS6Qn
-A7vXfUHpd4G81nVktcUiTfW1GwKkluphT+eNmzXKPU1hPcuIBJycbt6CxNnFrY0J
-Mi2rKDoEAOcP43mlFL84K+JuACZz72gdIFIK0zZmJvRp2srOv1PzSqnTKeLsPNqM
-5aGwOWsJLocAW/W2mhQICvBG4BiTO80DBFxb/N5Vsl9zSffmtki/zGKdU4iW7cz0
-8JjSXwdr61ZvQreiXcjspzf15j4uQfRwk+uZNc2pbjE0Ktv/QLC8RzJ27uZYo0e9
-cMdJb0AFn9ZhI2NS+eEXl9v78tfjuH5+SLBvSlVC2RB4cHep0iSsklJ0GrN0OEnE
-OTX+ySW28wjHDGNezJRcmFy35e7woxYeQKsqqlofCg2qJenU55msrKk+NbB3T4Cg
-hO6uVWJTpInqJu5jwQ8xfByE5HD8CfpkTddLZRjGuLN1ehJRn8Kcf/zS6enx2mXs
-LO/yeSSt6qy+So/7oq9al9vK064VSIYdHFxBJEdA6qVI5aJtPzmNLzveFEQ46qcR
-RFe7cHQ60whuVKsZXYZWNUZAZ5Qs5M5EIQyDIyq1LDtd2FrJPfskzcam0EEBz8+K
-a0Ol2X0zoUaAtq5YfmMqe6c7qDsYDjs+k+kC6pV5MvFoJYha1pk5E1xSBLGEAGbV
-ymwAZcb6go2wIjuhdf8MpSDZseaZiAwR0R8bwGsux9Sq5zurx1Seds92JvP2S/3a
-2sTDMyhwiuAbF/QKTU27HXAEPKDGvwDoO+Hfs6kecyeXEEp1me39pWZYFJvpwEQ+
-4ABDpf1+c57Ge3TVTWyQiu6siydAL+I7RJtXQ5BmMxoinf7LHRh2MYGSZlSEP3hp
-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
-vXkDkwpEqqMFBS5as7q5QS1x365jzGHXiYvkNtTqp+kfSm0JlVV16ZhjakV3xgDG
-UXEfJm4bycRys3MtHccr4G34Vh/w0aG1/cZpXSXrFV1Imd58+WcsgU9VO4/Zog63
-Um2Rdg/HWO1ZWxA1vPLS5l1RWhLO6Wr63q7WzHaPcsdecFajQCcOIGqPvWyje3yV
-xgLpgdQOvjXHNhevWtR2YTPKcuZzKb1J8mE/gS+UXTqzLsaaUO14qGG9Lk93op+T
-6XDyU71jcW60cXWGT9mpGiooo7fHpUN5ctMS2KQpMu7VzYCQiGzyHfKnH2GYZeML
-lcR7NLWY7ufzhQtM3G015LpaRWK5DUSts7OXDWFpojC+wrAb62sLUWbNuTrv1uQ5
-ZQkzP8mQSTD2WaD620cY+Zr5VmtdoSakjNzPbes+26YpquT9UZQuuqi5hsK6Rt1y
-9Z1qe2kX9xeBuz095MLhUnUBSEiPWhNjLFoLXN0If+2EJl2cltZt8ncP8aFbqTuj
-NAY2Zk8AILckx68CqwBSGgmYcfN5hGIVmTbJu7+hzgAlkjqfh27zKIN5720TAZaO
-72HYXOXzpbswUbueK19yq9kj6vLFyEelGqo5duP3F7cDyljveVnrve/s7zP3QkcM
-gzPPNiiS2RlanZMcm85oqC0OBBYe/nCzD6yUSYAZ2m4MzjutuEvM1oRF9xahDZ5k
-mENMDYc5KAyltGzL1OPc0UWOo0ZDQ55qzLpHDaC7NWH3kczpnGusvoaBaRS8d/eF
-uuvgbbSu4ip+F1YpRlMdJcqVhLxEg3iaCPAo+ZdA
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBHY3p2dVYrR3c2YzhXc0ph
+NWpyS0d4Tm0rLzUyM0ozK1dpSVdMYmpySEVjCkducUQ2eWppNWV5ZTJCS2JuNG84
+RGo3SFpaSTZGQ0Y5K05FdW9uVlNrWncKLS0tIGo5MlFBcTNmY28vVFVjc0hreVZP
+MGkzRkdXc2hJRUNod0djeVI0Qm1UOWMKc0j8/ASihWQAlKcgqQUcMI3KGvFjPQ/X
+cN9I7dva+CuueVfjP2kT7k+NgZ11iLtwpi/43jiYu8snpkqQxjKPxB0uFvYBeBQ8
+UfsukWPeHZ064OHAezayA04xDXwouCF7xRCMYpuU+pxP1pq5rqC74Zl/qvvLgJTn
+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
+P1yDxRAibSfGl5Jd584ov89uTLZGvQ==
 -----END AGE ENCRYPTED FILE-----