{ "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": 10, "links": [], "panels": [ { "datasource": { "type": "datasource", "uid": "-- Mixed --" }, "description": "Total packets sent in the specified time range", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "fieldMinMax": false, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] }, "unit": "Packets" }, "overrides": [] }, "gridPos": { "h": 4, "w": 5, "x": 0, "y": 0 }, "id": 10, "options": { "colorMode": "value", "graphMode": "none", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true }, "pluginVersion": "11.2.2+security-01", "targets": [ { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "disableTextWrap": false, "editorMode": "builder", "expr": "sum(sum by(portnum) (mesh_packet_source_types_total{source_id=~\"$nodeID\"}))", "fullMetaSearch": false, "includeNullMetadata": true, "legendFormat": "__auto", "range": true, "refId": "A", "useBackend": false } ], "title": "Total packets sent", "type": "stat" }, { "datasource": { "type": "datasource", "uid": "-- Mixed --" }, "description": "Displays types of packets sent in the selected time range.\n\nFor more details see:\nhttps://buf.build/meshtastic/protobufs/docs/main:meshtastic#meshtastic.PortNum", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "fieldMinMax": false, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "Packets" }, "overrides": [] }, "gridPos": { "h": 4, "w": 14, "x": 5, "y": 0 }, "id": 11, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "center", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "value_and_name", "wideLayout": true }, "pluginVersion": "11.2.2+security-01", "targets": [ { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "disableTextWrap": false, "editorMode": "builder", "expr": "sum by(portnum) (mesh_packet_source_types_total{source_id=~\"$nodeID\"})", "fullMetaSearch": false, "includeNullMetadata": true, "legendFormat": "__auto", "range": true, "refId": "A", "useBackend": false } ], "title": "Packet types sent for selected time", "type": "stat" }, { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "description": "The last time a packet was observed being sent from this node", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "fieldMinMax": false, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "dateTimeFromNow" }, "overrides": [] }, "gridPos": { "h": 4, "w": 5, "x": 19, "y": 0 }, "id": 12, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "/^Time$/", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true }, "pluginVersion": "11.2.2+security-01", "targets": [ { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "editorMode": "code", "expr": "timestamp((\n count(mesh_packet_total{source_id=\"$nodeID\"}) by (source_id)\n -\n count(mesh_packet_total{source_id=\"$nodeID\"} offset 1m) by (source_id)\n) > 0)", "instant": false, "legendFormat": "__auto", "range": true, "refId": "A" } ], "title": "Last packet sent", "type": "stat" }, { "datasource": { "type": "datasource", "uid": "-- Mixed --" }, "description": "Total packets observed with this node as their destination in the specified time range", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "fieldMinMax": false, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] }, "unit": "Packets" }, "overrides": [] }, "gridPos": { "h": 4, "w": 5, "x": 0, "y": 4 }, "id": 14, "options": { "colorMode": "value", "graphMode": "none", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true }, "pluginVersion": "11.2.2+security-01", "targets": [ { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "disableTextWrap": false, "editorMode": "builder", "expr": "sum(sum by(portnum) (mesh_packet_source_types_total{destination_id=~\"$nodeID\"}))", "fullMetaSearch": false, "includeNullMetadata": true, "legendFormat": "__auto", "range": true, "refId": "A", "useBackend": false } ], "title": "Total packets received", "type": "stat" }, { "datasource": { "type": "datasource", "uid": "-- Mixed --" }, "description": "Displays types of packets received in the selected time range.\n\nFor more details see:\nhttps://buf.build/meshtastic/protobufs/docs/main:meshtastic#meshtastic.PortNum", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "fieldMinMax": false, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "Packets" }, "overrides": [] }, "gridPos": { "h": 4, "w": 14, "x": 5, "y": 4 }, "id": 15, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "center", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "value_and_name", "wideLayout": true }, "pluginVersion": "11.2.2+security-01", "targets": [ { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "disableTextWrap": false, "editorMode": "builder", "expr": "sum by(portnum) (mesh_packet_source_types_total{destination_id=\"$nodeID\"})", "fullMetaSearch": false, "includeNullMetadata": true, "legendFormat": "__auto", "range": true, "refId": "A", "useBackend": false } ], "title": "Packet types received for selected time", "type": "stat" }, { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "description": "The last time a packet was observed with this node as its destination", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "fieldMinMax": false, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "dateTimeFromNow" }, "overrides": [] }, "gridPos": { "h": 4, "w": 5, "x": 19, "y": 4 }, "id": 16, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "/^Time$/", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true }, "pluginVersion": "11.2.2+security-01", "targets": [ { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "editorMode": "code", "expr": "timestamp((\n count(mesh_packet_total{destination_id=\"$nodeID\"}) by (destination_id)\n -\n count(mesh_packet_total{destination_id=\"$nodeID\"} offset 1m) by (destination_id)\n) > 0)", "instant": false, "legendFormat": "__auto", "range": true, "refId": "A" } ], "title": "Last message received", "type": "stat" }, { "datasource": { "type": "grafana-postgresql-datasource", "uid": "PA942B37CCFAF5A81" }, "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "custom": { "align": "center", "cellOptions": { "type": "auto", "wrapText": false }, "inspect": true }, "mappings": [ { "options": { "none": { "color": "text", "index": 2, "text": "⚪️ Unknown" }, "offline": { "color": "red", "index": 1, "text": "🛑 Offline" }, "online": { "color": "green", "index": 0, "text": "🟢 Online" } }, "type": "value" } ], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [ { "matcher": { "id": "byName", "options": "Node Created At" }, "properties": [ { "id": "unit", "value": "dateTimeFromNow" } ] }, { "matcher": { "id": "byName", "options": "Node Updated At" }, "properties": [ { "id": "unit", "value": "dateTimeFromNow" } ] }, { "matcher": { "id": "byName", "options": "Node ID" }, "properties": [ { "id": "unit", "value": "hex" } ] } ] }, "gridPos": { "h": 4, "w": 24, "x": 0, "y": 8 }, "id": 1, "options": { "cellHeight": "lg", "footer": { "countRows": false, "fields": "", "reducer": [ "sum" ], "show": false }, "showHeader": true }, "pluginVersion": "11.2.2+security-01", "targets": [ { "datasource": { "type": "postgres", "uid": "PA942B37CCFAF5A81" }, "editorMode": "code", "format": "table", "rawQuery": true, "rawSql": "SELECT * FROM node_details WHERE node_id = '${nodeID}' LIMIT 1 ", "refId": "A", "sql": { "columns": [ { "parameters": [ { "name": "*", "type": "functionParameter" } ], "type": "function" } ], "groupBy": [ { "property": { "type": "string" }, "type": "groupBy" } ], "limit": 50, "whereJsonTree": { "children1": [ { "id": "99bbbb8b-0123-4456-b89a-b1907a16d7fe", "properties": { "field": "node_id", "fieldSrc": "field", "operator": "equal", "value": [ "${nodeID}" ], "valueSrc": [ "value" ], "valueType": [ "text" ] }, "type": "rule" } ], "id": "babb9899-0123-4456-b89a-b19079f5bfed", "type": "group" }, "whereString": "node_id = '${nodeID}'" }, "table": "node_details" } ], "title": "Node details", "transformations": [ { "id": "organize", "options": { "excludeByName": { "altitude": true, "latitude": true, "longitude": true, "precision": true }, "includeByName": {}, "indexByName": {}, "renameByName": { "created_at": "Node Created At", "hardware_model": "Hardware Model", "long_name": "Long Name", "mqtt_status": "MQTT Status", "node_id": "Node ID", "role": "Client Role", "short_name": "Short Name", "updated_at": "Node Updated At" } } } ], "transparent": true, "type": "table" }, { "datasource": { "type": "postgres", "uid": "PA942B37CCFAF5A81" }, "description": "Graph that is built from Neighbor Info reports and shows the signal strenth for each line", "gridPos": { "h": 8, "w": 8, "x": 0, "y": 12 }, "id": 9, "options": { "edges": { "mainStatUnit": "dB" }, "nodes": { "arcs": [] } }, "pluginVersion": "10.4.2", "targets": [ { "datasource": { "type": "postgres", "uid": "PA942B37CCFAF5A81" }, "editorMode": "code", "format": "table", "rawQuery": true, "rawSql": "SELECT \n node_id AS \"id\", \n long_name AS \"title\", \n hardware_model AS \"detail__Hardware Detail\", \n role AS \"detail__Client Role\", \n mqtt_status AS \"detail__MQTT Status\", \n short_name AS \"subtitle\",\n CASE \n WHEN mqtt_status = 'online' THEN '#2ECC71' -- Green for online\n WHEN mqtt_status = 'offline' THEN '#E74C3C' -- Red for offline\n ELSE '#808080' -- Gray for none or any other status\n END AS \"color\"\nFROM \n node_details\n WHERE node_id IN (${nodeID:singlequote}) OR node_id IN (${relatives:singlequote})", "refId": "nodes", "sql": { "columns": [ { "alias": "\"id\"", "parameters": [ { "name": "node_id", "type": "functionParameter" } ], "type": "function" }, { "alias": "\"title\"", "parameters": [ { "name": "long_name", "type": "functionParameter" } ], "type": "function" }, { "alias": "\"detail__Hardware Detail\"", "parameters": [ { "name": "hardware_model", "type": "functionParameter" } ], "type": "function" }, { "alias": "\"detail__Client Role\"", "parameters": [ { "name": "role", "type": "functionParameter" } ], "type": "function" }, { "alias": "\"detail__MQTT Status\"", "parameters": [ { "name": "mqtt_status", "type": "functionParameter" } ], "type": "function" }, { "alias": "\"subtitle\"", "parameters": [ { "name": "short_name", "type": "functionParameter" } ], "type": "function" } ], "groupBy": [ { "property": { "type": "string" }, "type": "groupBy" } ], "limit": 50 }, "table": "node_details" }, { "datasource": { "type": "postgres", "uid": "PA942B37CCFAF5A81" }, "editorMode": "code", "format": "table", "hide": false, "rawQuery": true, "rawSql": "SELECT \n CONCAT(neighbor_id, '_', node_id) AS id,\n neighbor_id AS \"source\",\n node_id AS \"target\",\n snr AS \"mainstat\",\n CASE\n WHEN snr < -13 THEN '#E74C3C' -- Red for SNR < -13\n WHEN snr < -7 THEN '#F4D03F' -- Yellow for -13 ≤ SNR < -7\n ELSE '#2ECC71' -- Green for SNR ≥ -7\n END AS \"color\",\n GREATEST(0.1, LEAST(2, 1 + ((snr + 13) / 10))) AS \"thickness\"\nFROM \n node_neighbors\n WHERE (neighbor_id IN (${nodeID:singlequote}) OR neighbor_id IN (${relatives:singlequote}))\n AND (node_id IN (${nodeID:singlequote}) OR node_id IN (${relatives:singlequote}))", "refId": "edges", "sql": { "columns": [ { "parameters": [ { "name": "id", "type": "functionParameter" } ], "type": "function" }, { "alias": "\"source\"", "parameters": [ { "name": "neighbor_id", "type": "functionParameter" } ], "type": "function" }, { "alias": "\"target\"", "parameters": [ { "name": "node_id", "type": "functionParameter" } ], "type": "function" }, { "alias": "\"mainstat\"", "parameters": [ { "name": "snr", "type": "functionParameter" } ], "type": "function" } ], "groupBy": [ { "property": { "type": "string" }, "type": "groupBy" } ], "limit": 50 }, "table": "node_neighbors" } ], "title": "Node Graph", "type": "nodeGraph" }, { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "fieldConfig": { "defaults": { "color": { "mode": "continuous-GrYlRd" }, "custom": { "fillOpacity": 70, "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineWidth": 0, "spanNulls": false }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "celsius" }, "overrides": [] }, "gridPos": { "h": 5, "w": 9, "x": 8, "y": 12 }, "id": 5, "options": { "alignValue": "center", "legend": { "displayMode": "list", "placement": "bottom", "showLegend": false }, "mergeValues": true, "rowHeight": 0.9, "showValue": "auto", "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "disableTextWrap": false, "editorMode": "builder", "exemplar": false, "expr": "topk(1, telemetry_app_temperature{node_id=\"$nodeID\"})", "fullMetaSearch": false, "includeNullMetadata": true, "instant": false, "legendFormat": "{{long_name}}", "range": true, "refId": "A", "useBackend": false } ], "title": "Temprerature telemetry", "transformations": [ { "id": "seriesToRows", "options": {} }, { "id": "organize", "options": { "excludeByName": { "Metric": true }, "includeByName": {}, "indexByName": {}, "renameByName": {} } } ], "type": "state-timeline" }, { "datasource": { "type": "grafana-postgresql-datasource", "uid": "PA942B37CCFAF5A81" }, "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "custom": { "align": "left", "cellOptions": { "type": "auto", "wrapText": false }, "filterable": true, "inspect": false }, "fieldMinMax": false, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [] }, "gridPos": { "h": 15, "w": 7, "x": 17, "y": 12 }, "id": 17, "options": { "cellHeight": "sm", "footer": { "countRows": false, "fields": "", "reducer": [ "sum" ], "show": false }, "showHeader": true }, "pluginVersion": "11.2.2+security-01", "targets": [ { "datasource": { "type": "grafana-postgresql-datasource", "uid": "PA942B37CCFAF5A81" }, "editorMode": "code", "format": "table", "rawQuery": true, "rawSql": "SELECT\n node_id,\n CASE\n WHEN EXTRACT(EPOCH FROM environment_update_interval) > 1\n THEN to_char(environment_update_interval, 'HH24:MI:SS')\n ELSE NULL\n END AS environment_update_interval,\n to_char(environment_update_last_timestamp, 'YYYY-MM-DD HH24:MI:SS') AS environment_update_last_timestamp,\n \n CASE\n WHEN EXTRACT(EPOCH FROM device_update_interval) > 1\n THEN to_char(device_update_interval, 'HH24:MI:SS')\n ELSE NULL\n END AS device_update_interval,\n to_char(device_update_last_timestamp, 'YYYY-MM-DD HH24:MI:SS') AS device_update_last_timestamp,\n \n CASE\n WHEN EXTRACT(EPOCH FROM air_quality_update_interval) > 1\n THEN to_char(air_quality_update_interval, 'HH24:MI:SS')\n ELSE NULL\n END AS air_quality_update_interval,\n to_char(air_quality_update_last_timestamp, 'YYYY-MM-DD HH24:MI:SS') AS air_quality_update_last_timestamp,\n \n CASE\n WHEN EXTRACT(EPOCH FROM power_update_interval) > 1\n THEN to_char(power_update_interval, 'HH24:MI:SS')\n ELSE NULL\n END AS power_update_interval,\n to_char(power_update_last_timestamp, 'YYYY-MM-DD HH24:MI:SS') AS power_update_last_timestamp,\n \n CASE\n WHEN EXTRACT(EPOCH FROM range_test_interval) > 1\n THEN to_char(range_test_interval, 'HH24:MI:SS')\n ELSE NULL\n END AS range_test_interval,\n to_char(range_test_last_packet_timestamp, 'YYYY-MM-DD HH24:MI:SS') AS range_test_last_packet_timestamp,\n \n CASE\n WHEN EXTRACT(EPOCH FROM pax_counter_interval) > 1\n THEN to_char(pax_counter_interval, 'HH24:MI:SS')\n ELSE NULL\n END AS pax_counter_interval,\n to_char(pax_counter_last_timestamp, 'YYYY-MM-DD HH24:MI:SS') AS pax_counter_last_timestamp,\n \n CASE\n WHEN EXTRACT(EPOCH FROM neighbor_info_interval) > 1\n THEN to_char(neighbor_info_interval, 'HH24:MI:SS')\n ELSE NULL\n END AS neighbor_info_interval,\n to_char(neighbor_info_last_timestamp, 'YYYY-MM-DD HH24:MI:SS') AS neighbor_info_last_timestamp,\n \n CASE\n WHEN EXTRACT(EPOCH FROM map_broadcast_interval) > 1\n THEN to_char(map_broadcast_interval, 'HH24:MI:SS')\n ELSE NULL\n END AS map_broadcast_interval,\n to_char(map_broadcast_last_timestamp, 'YYYY-MM-DD HH24:MI:SS') AS map_broadcast_last_timestamp,\n \n mqtt_encryption_enabled,\n mqtt_json_enabled,\n mqtt_configured_root_topic,\n to_char(mqtt_info_last_timestamp, 'YYYY-MM-DD HH24:MI:SS') AS mqtt_info_last_timestamp,\n \n to_char(last_updated, 'YYYY-MM-DD HH24:MI:SS') AS last_updated\nFROM node_configurations\nWHERE\n (EXTRACT(EPOCH FROM environment_update_interval) > 1 OR\n EXTRACT(EPOCH FROM device_update_interval) > 1 OR\n EXTRACT(EPOCH FROM air_quality_update_interval) > 1 OR\n EXTRACT(EPOCH FROM power_update_interval) > 1 OR\n EXTRACT(EPOCH FROM range_test_interval) > 1 OR\n EXTRACT(EPOCH FROM pax_counter_interval) > 1 OR\n EXTRACT(EPOCH FROM neighbor_info_interval) > 1 OR\n EXTRACT(EPOCH FROM map_broadcast_interval) > 1)\n AND node_id = '${nodeID}'\nLIMIT 50", "refId": "A", "sql": { "columns": [ { "parameters": [ { "name": "environment_update_interval", "type": "functionParameter" } ], "type": "function" } ], "groupBy": [ { "property": { "type": "string" }, "type": "groupBy" } ], "limit": 50, "whereJsonTree": { "children1": [ { "id": "8abaab98-4567-489a-bcde-f19136d5e7d5", "properties": { "field": "node_id", "fieldSrc": "field", "operator": "equal", "value": [ "${nodeID}" ], "valueError": [ null ], "valueSrc": [ "value" ], "valueType": [ "text" ] }, "type": "rule" } ], "id": "9b988aa8-0123-4456-b89a-b1913556a003", "type": "group" }, "whereString": "node_id = '${nodeID}'" }, "table": "node_configurations" } ], "title": "Node configuration details", "transformations": [ { "id": "organize", "options": { "excludeByName": {}, "includeByName": {}, "indexByName": {}, "renameByName": { "air_quality_update_interval": "Air quality update interval", "air_quality_update_last_timestamp": "Air quality (Timestamp)", "device_update_interval": "Device information update interval", "device_update_last_timestamp": "Device information (Timestamp)", "environment_update_interval": "Environment update interval", "environment_update_last_timestamp": "Environment (Timestamp)", "last_updated": "Last updated", "map_broadcast_interval": "Map Broadcast update interval", "map_broadcast_last_timestamp": "Map Broadcast (Timestamp)", "mqtt_configured_root_topic": "Root topic at MQTT", "mqtt_encryption_enabled": "Is MQTT encryption enabled", "mqtt_info_last_timestamp": "MQTT Info (Timestamp)", "mqtt_json_enabled": "Is MQTT JSON toggled on", "neighbor_info_interval": "Neighbour Info update interval", "neighbor_info_last_timestamp": "Neighbour Info (Timestamp)", "node_id": "Node ID", "pax_counter_interval": "PAX counter update interval", "pax_counter_last_timestamp": "PAX counter (Timestamp)", "power_update_interval": "Power update interval", "power_update_last_timestamp": "Power (Timestamp)", "range_test_interval": "Range test update interval", "range_test_last_packet_timestamp": "Range test (Timestamp)" } } }, { "id": "reduce", "options": { "labelsToFields": false, "reducers": [ "lastNotNull" ] } } ], "type": "table" }, { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "fieldConfig": { "defaults": { "color": { "mode": "continuous-GrYlRd" }, "custom": { "fillOpacity": 70, "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineWidth": 0, "spanNulls": false }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "humidity" }, "overrides": [] }, "gridPos": { "h": 5, "w": 9, "x": 8, "y": 17 }, "id": 6, "options": { "alignValue": "center", "legend": { "displayMode": "list", "placement": "bottom", "showLegend": false }, "mergeValues": true, "rowHeight": 0.9, "showValue": "auto", "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "disableTextWrap": false, "editorMode": "builder", "exemplar": false, "expr": "topk(1, telemetry_app_relative_humidity{node_id=\"$nodeID\"})", "fullMetaSearch": false, "includeNullMetadata": true, "instant": false, "legendFormat": "{{long_name}}", "range": true, "refId": "A", "useBackend": false } ], "title": "Humidity telemetry", "transformations": [ { "id": "seriesToRows", "options": {} }, { "id": "organize", "options": { "excludeByName": { "Metric": true }, "includeByName": {}, "indexByName": {}, "renameByName": {} } } ], "type": "state-timeline" }, { "datasource": { "type": "grafana-postgresql-datasource", "uid": "PA942B37CCFAF5A81" }, "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "custom": { "hideFrom": { "legend": false, "tooltip": false, "viz": false } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green" } ] } }, "overrides": [] }, "gridPos": { "h": 7, "w": 8, "x": 0, "y": 20 }, "id": 13, "options": { "basemap": { "config": {}, "name": "Layer 0", "tooltip": true, "type": "osm-standard" }, "controls": { "mouseWheelZoom": true, "showAttribution": true, "showDebug": false, "showMeasure": false, "showScale": true, "showZoom": true }, "layers": [ { "config": { "showLegend": false, "style": { "color": { "fixed": "dark-green" }, "opacity": 0.4, "rotation": { "fixed": 0, "max": 360, "min": -360, "mode": "mod" }, "size": { "fixed": 5, "max": 15, "min": 2 }, "symbol": { "fixed": "img/icons/marker/circle.svg", "mode": "fixed" }, "symbolAlign": { "horizontal": "center", "vertical": "center" }, "textConfig": { "fontSize": 12, "offsetX": 0, "offsetY": 0, "textAlign": "center", "textBaseline": "middle" } } }, "location": { "mode": "auto" }, "name": "Layer 1", "tooltip": true, "type": "markers" } ], "tooltip": { "mode": "none" }, "view": { "allLayers": true, "id": "coords", "lastOnly": false, "lat": 31.499467, "layer": "Layer 1", "lon": 34.669663, "padding": 2, "zoom": 6.53 } }, "pluginVersion": "11.1.0", "targets": [ { "datasource": { "type": "grafana-postgresql-datasource", "uid": "PA942B37CCFAF5A81" }, "editorMode": "code", "format": "table", "rawQuery": true, "rawSql": "SELECT node_id, short_name, long_name, hardware_model, role, mqtt_status, \nlongitude * 1e-7 as longitude,\nlatitude * 1e-7 as latitude,\naltitude\nFROM node_details \nWHERE node_id = '${nodeID}' LIMIT 1", "refId": "A", "sql": { "columns": [ { "parameters": [ { "name": "*", "type": "functionParameter" } ], "type": "function" } ], "groupBy": [ { "property": { "type": "string" }, "type": "groupBy" } ], "limit": 50, "whereJsonTree": { "children1": [ { "id": "abb9a8b8-4567-489a-bcde-f190ef655acf", "properties": { "field": "node_id", "fieldSrc": "field", "operator": "equal", "value": [ "${nodeID}" ], "valueError": [ null ], "valueSrc": [ "value" ], "valueType": [ "text" ] }, "type": "rule" } ], "id": "aabba98a-0123-4456-b89a-b190ef5f79f0", "properties": { "conjunction": "AND" }, "type": "group" }, "whereString": "node_id = '${nodeID}'" }, "table": "node_details" } ], "title": "Panel Title", "type": "geomap" }, { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "fieldConfig": { "defaults": { "color": { "mode": "continuous-GrYlRd" }, "custom": { "fillOpacity": 70, "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineWidth": 0, "spanNulls": false }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green" } ] }, "unit": "pressurehpa" }, "overrides": [] }, "gridPos": { "h": 5, "w": 9, "x": 8, "y": 22 }, "id": 7, "options": { "alignValue": "center", "legend": { "displayMode": "list", "placement": "bottom", "showLegend": false }, "mergeValues": true, "rowHeight": 0.9, "showValue": "auto", "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "disableTextWrap": false, "editorMode": "builder", "exemplar": false, "expr": "topk(1, telemetry_app_barometric_pressure{node_id=\"$nodeID\"})", "fullMetaSearch": false, "includeNullMetadata": true, "instant": false, "legendFormat": "{{long_name}}", "range": true, "refId": "A", "useBackend": false } ], "title": "Barometric pressure telemetry", "transformations": [ { "id": "seriesToRows", "options": {} }, { "id": "organize", "options": { "excludeByName": { "Metric": true }, "includeByName": {}, "indexByName": {}, "renameByName": {} } } ], "type": "state-timeline" }, { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "axisSoftMax": 110, "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 5, "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": "area" } }, "mappings": [], "thresholds": { "mode": "percentage", "steps": [ { "color": "red" }, { "color": "#EAB839", "value": 20 }, { "color": "green", "value": 40 } ] }, "unit": "percent" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 27 }, "id": 2, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": false }, "tooltip": { "mode": "single", "sort": "none" } }, "pluginVersion": "11.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "disableTextWrap": false, "editorMode": "builder", "exemplar": false, "expr": "telemetry_app_battery_level{node_id=\"$nodeID\"}", "format": "time_series", "fullMetaSearch": false, "includeNullMetadata": true, "instant": false, "legendFormat": "{{long_name}} | Model: {{hardware_model}} | Role: {{role}}", "range": true, "refId": "A", "useBackend": false } ], "title": "Battery Level", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 5, "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" } ] }, "unit": "volt" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 27 }, "id": 3, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": false }, "tooltip": { "mode": "single", "sort": "none" } }, "pluginVersion": "11.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "disableTextWrap": false, "editorMode": "builder", "expr": "telemetry_app_voltage{node_id=\"$nodeID\"}", "fullMetaSearch": false, "includeNullMetadata": true, "instant": false, "legendFormat": "{{long_name}} | Model: {{hardware_model}} | Role: {{role}}", "range": true, "refId": "A", "useBackend": false } ], "title": "Device voltage", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "description": "Displays the measured current from the channels (1,2,3)", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green" }, { "color": "red", "value": 80 } ] }, "unit": "mamp" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 35 }, "id": 18, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "disableTextWrap": false, "editorMode": "builder", "expr": "telemetry_app_ch1_current{node_id=\"$nodeID\"}", "fullMetaSearch": false, "includeNullMetadata": true, "instant": false, "legendFormat": "Channel 1", "range": true, "refId": "A", "useBackend": false }, { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "disableTextWrap": false, "editorMode": "builder", "expr": "telemetry_app_ch2_current{node_id=\"$nodeID\"}", "fullMetaSearch": false, "hide": false, "includeNullMetadata": true, "instant": false, "legendFormat": "Channel 2", "range": true, "refId": "B", "useBackend": false }, { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "disableTextWrap": false, "editorMode": "builder", "expr": "telemetry_app_ch3_current{node_id=\"$nodeID\"}", "fullMetaSearch": false, "hide": false, "includeNullMetadata": true, "instant": false, "legendFormat": "Channel 3", "range": true, "refId": "C", "useBackend": false } ], "title": "Current measured from node", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "description": "Measures the volage on channels (1,2,3)", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green" }, { "color": "red", "value": 80 } ] }, "unit": "volt" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 35 }, "id": 19, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "disableTextWrap": false, "editorMode": "builder", "expr": "telemetry_app_ch1_voltage{node_id=\"$nodeID\"}", "fullMetaSearch": false, "includeNullMetadata": true, "instant": false, "legendFormat": "Channel 1", "range": true, "refId": "A", "useBackend": false }, { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "disableTextWrap": false, "editorMode": "builder", "expr": "telemetry_app_ch2_voltage{node_id=\"$nodeID\"}", "fullMetaSearch": false, "hide": false, "includeNullMetadata": true, "instant": false, "legendFormat": "Channel 2", "range": true, "refId": "B", "useBackend": false }, { "datasource": { "type": "prometheus", "uid": "P1809F7CD0C75ACF3" }, "disableTextWrap": false, "editorMode": "builder", "expr": "telemetry_app_ch3_voltage{node_id=\"$nodeID\"}", "fullMetaSearch": false, "hide": false, "includeNullMetadata": true, "instant": false, "legendFormat": "Channel 3", "range": true, "refId": "C", "useBackend": false } ], "title": "Voltage measured by the node", "type": "timeseries" } ], "refresh": "1m", "schemaVersion": 39, "tags": [], "templating": { "list": [ { "current": { "selected": false, "text": "🐦‍🔥:34GL3 (3944975137)", "value": "3944975137" }, "datasource": { "type": "postgres", "uid": "PA942B37CCFAF5A81" }, "definition": "SELECT \n concat(long_name, ' (', node_id, ')') as __text, \n node_id as __value \nFROM node_details \nORDER BY long_name", "hide": 0, "includeAll": false, "label": "Node ID", "multi": false, "name": "nodeID", "options": [], "query": "SELECT \n concat(long_name, ' (', node_id, ')') as __text, \n node_id as __value \nFROM node_details \nORDER BY long_name", "refresh": 1, "regex": "", "skipUrlSync": false, "sort": 0, "type": "query" }, { "current": { "selected": false, "text": "3944975137", "value": "3944975137" }, "datasource": { "type": "postgres", "uid": "PA942B37CCFAF5A81" }, "definition": "SELECT \n neighbor_id AS \"source\",\n node_id AS \"target\"\nFROM \n node_neighbors\nWHERE node_id = ${nodeID:singlequote} OR neighbor_id = ${nodeID:singlequote}", "description": "", "hide": 2, "includeAll": false, "label": "relatives", "multi": false, "name": "relatives", "options": [], "query": "SELECT \n neighbor_id AS \"source\",\n node_id AS \"target\"\nFROM \n node_neighbors\nWHERE node_id = ${nodeID:singlequote} OR neighbor_id = ${nodeID:singlequote}", "refresh": 2, "regex": "", "skipUrlSync": false, "sort": 0, "type": "query" } ] }, "time": { "from": "now-6h", "to": "now" }, "timepicker": {}, "timezone": "browser", "title": "Node Dashboard", "uid": "edqo1uh0eglq8g", "version": 52, "weekStart": "" }