Fix: Grafana dashboard Orion-LD + Stellio persistence investigation
- ✅ Grafana dashboard updated with proper time filters - ✅ Orion-LD pipeline validated (6 tables, 5+ rows in CrateDB) - ❌ Stellio pipeline blocked: QuantumLeap /v2/notify doesn't support NGSI-LD native format (TypeError: argument of type 'float' is not iterable) - 📝 QuantumLeap expects NGSI-v2 format ({"value": X, "type": "Number"}) but receives NGSI-LD (direct values) Next steps: - Focus on Orion-LD pipeline (working) - Consider Stellio as experimental / future work
This commit is contained in:
269
grafana-dashboard-orion-ld.json
Normal file
269
grafana-dashboard-orion-ld.json
Normal file
@@ -0,0 +1,269 @@
|
|||||||
|
{
|
||||||
|
"annotations": {
|
||||||
|
"list": []
|
||||||
|
},
|
||||||
|
"editable": true,
|
||||||
|
"fiscalYearStartMonth": 0,
|
||||||
|
"graphTooltip": 0,
|
||||||
|
"id": null,
|
||||||
|
"links": [],
|
||||||
|
"panels": [
|
||||||
|
{
|
||||||
|
"datasource": {"type": "postgres", "uid": "d43222c0-ad4e-4c49-9759-f822211e669e"},
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {"mode": "palette-classic"},
|
||||||
|
"custom": {"axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", "hideFrom": {"legend": false, "tooltip": false, "vis": false}, "lineInterpolation": "linear", "lineWidth": 2, "pointSize": 5, "scaleDistribution": {"type": "linear"}, "showPoints": "never", "spanNulls": false, "stacking": {"group": "A", "mode": "none"}, "thresholdsStyle": {"mode": "off"}},
|
||||||
|
"mappings": [],
|
||||||
|
"thresholds": {"mode": "absolute", "steps": [{"color": "green", "value": null}]}
|
||||||
|
},
|
||||||
|
"overrides": []
|
||||||
|
},
|
||||||
|
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 0},
|
||||||
|
"id": 1,
|
||||||
|
"options": {"legend": {"calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true}, "tooltip": {"mode": "single"}},
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"datasource": {"type": "postgres", "uid": "d43222c0-ad4e-4c49-9759-f822211e669e"},
|
||||||
|
"format": "time_series",
|
||||||
|
"group": [],
|
||||||
|
"metricColumn": "temperature",
|
||||||
|
"refId": "A",
|
||||||
|
"sql": {
|
||||||
|
"columns": [],
|
||||||
|
"groupBy": [],
|
||||||
|
"limit": "",
|
||||||
|
"orderBy": [],
|
||||||
|
"rawQuery": true,
|
||||||
|
"rawSql": "SELECT time_index as \"time\", AVG(temperature) as \"temperature\" FROM quantumleap.etairqualityobserved WHERE $__timeFilter(time_index) GROUP BY time_index ORDER BY time_index",
|
||||||
|
"refId": "A"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Température Moyenne (°C)",
|
||||||
|
"type": "timeseries"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": {"type": "postgres", "uid": "d43222c0-ad4e-4c49-9759-f822211e669e"},
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {"mode": "palette-classic"},
|
||||||
|
"custom": {"axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", "hideFrom": {"legend": false, "tooltip": false, "vis": false}, "lineInterpolation": "linear", "lineWidth": 2, "pointSize": 5, "scaleDistribution": {"type": "linear"}, "showPoints": "never", "spanNulls": false, "stacking": {"group": "A", "mode": "none"}, "thresholdsStyle": {"mode": "off"}},
|
||||||
|
"mappings": [],
|
||||||
|
"thresholds": {"mode": "absolute", "steps": [{"color": "green", "value": null}]}
|
||||||
|
},
|
||||||
|
"overrides": []
|
||||||
|
},
|
||||||
|
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 0},
|
||||||
|
"id": 2,
|
||||||
|
"options": {"legend": {"calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true}, "tooltip": {"mode": "single"}},
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"datasource": {"type": "postgres", "uid": "d43222c0-ad4e-4c49-9759-f822211e669e"},
|
||||||
|
"format": "time_series",
|
||||||
|
"group": [],
|
||||||
|
"metricColumn": "no2",
|
||||||
|
"refId": "A",
|
||||||
|
"sql": {
|
||||||
|
"columns": [],
|
||||||
|
"groupBy": [],
|
||||||
|
"limit": "",
|
||||||
|
"orderBy": [],
|
||||||
|
"rawQuery": true,
|
||||||
|
"rawSql": "SELECT time_index as \"time\", AVG(no2) as \"no2\" FROM quantumleap.etairqualityobserved WHERE $__timeFilter(time_index) GROUP BY time_index ORDER BY time_index",
|
||||||
|
"refId": "A"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "NO2 Moyen (µg/m³)",
|
||||||
|
"type": "timeseries"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": {"type": "postgres", "uid": "d43222c0-ad4e-4c49-9759-f822211e669e"},
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {"mode": "palette-classic"},
|
||||||
|
"custom": {"axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", "hideFrom": {"legend": false, "tooltip": false, "vis": false}, "lineInterpolation": "linear", "lineWidth": 2, "pointSize": 5, "scaleDistribution": {"type": "linear"}, "showPoints": "never", "spanNulls": false, "stacking": {"group": "A", "mode": "none"}, "thresholdsStyle": {"mode": "off"}},
|
||||||
|
"mappings": [],
|
||||||
|
"thresholds": {"mode": "absolute", "steps": [{"color": "green", "value": null}]}
|
||||||
|
},
|
||||||
|
"overrides": []
|
||||||
|
},
|
||||||
|
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 8},
|
||||||
|
"id": 3,
|
||||||
|
"options": {"legend": {"calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true}, "tooltip": {"mode": "single"}},
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"datasource": {"type": "postgres", "uid": "d43222c0-ad4e-4c49-9759-f822211e669e"},
|
||||||
|
"format": "time_series",
|
||||||
|
"group": [],
|
||||||
|
"metricColumn": "humidity",
|
||||||
|
"refId": "A",
|
||||||
|
"sql": {
|
||||||
|
"columns": [],
|
||||||
|
"groupBy": [],
|
||||||
|
"limit": "",
|
||||||
|
"orderBy": [],
|
||||||
|
"rawQuery": true,
|
||||||
|
"rawSql": "SELECT time_index as \"time\", AVG(humidity) as \"humidity\" FROM quantumleap.etairqualityobserved WHERE $__timeFilter(time_index) GROUP BY time_index ORDER BY time_index",
|
||||||
|
"refId": "A"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Humidité Moyenne (%)",
|
||||||
|
"type": "timeseries"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": {"type": "postgres", "uid": "d43222c0-ad4e-4c49-9759-f822211e669e"},
|
||||||
|
"fieldConfig": {"defaults": {"color": {"mode": "thresholds"}}, "overrides": []},
|
||||||
|
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 8},
|
||||||
|
"id": 4,
|
||||||
|
"options": {"showHeader": true, "sortBy": [{"desc": true, "displayName": "time_index"}]},
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"datasource": {"type": "postgres", "uid": "d43222c0-ad4e-4c49-9759-f822211e669e"},
|
||||||
|
"format": "table",
|
||||||
|
"group": [],
|
||||||
|
"metricColumn": "entity_id",
|
||||||
|
"refId": "A",
|
||||||
|
"sql": {
|
||||||
|
"columns": [
|
||||||
|
{"name": "entity_id", "parameters": []},
|
||||||
|
{"name": "time_index", "parameters": []},
|
||||||
|
{"name": "temperature", "parameters": []},
|
||||||
|
{"name": "no2", "parameters": []},
|
||||||
|
{"name": "humidity", "parameters": []}
|
||||||
|
],
|
||||||
|
"groupBy": [],
|
||||||
|
"limit": "10",
|
||||||
|
"orderBy": [{"name": "time_index", "desc": true}],
|
||||||
|
"rawQuery": false,
|
||||||
|
"rawSql": "SELECT entity_id, time_index, temperature, no2, humidity FROM quantumleap.etairqualityobserved ORDER BY time_index DESC LIMIT 10",
|
||||||
|
"refId": "A"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Dernières Mesures",
|
||||||
|
"type": "table"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": {"type": "postgres", "uid": "d43222c0-ad4e-4c49-9759-f822211e669e"},
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {"mode": "thresholds"},
|
||||||
|
"mappings": [],
|
||||||
|
"max": 100,
|
||||||
|
"min": 0,
|
||||||
|
"thresholds": {"mode": "absolute", "steps": [{"color": "green", "value": null}, {"color": "yellow", "value": 50}, {"color": "red", "value": 80}]},
|
||||||
|
"unit": "percent"
|
||||||
|
},
|
||||||
|
"overrides": []
|
||||||
|
},
|
||||||
|
"gridPos": {"h": 8, "w": 8, "x": 0, "y": 16},
|
||||||
|
"id": 5,
|
||||||
|
"options": {"orientation": "auto", "reduceOptions": {"calcs": [{"text": "Last", "value": "last"}], "fields": "", "values": false}, "showThresholdLabels": false, "showThresholdMarkers": true, "textMode": "auto"},
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"datasource": {"type": "postgres", "uid": "d43222c0-ad4e-4c49-9759-f822211e669e"},
|
||||||
|
"format": "time_series",
|
||||||
|
"group": [],
|
||||||
|
"metricColumn": "humidity",
|
||||||
|
"refId": "A",
|
||||||
|
"sql": {
|
||||||
|
"columns": [],
|
||||||
|
"groupBy": [],
|
||||||
|
"limit": "",
|
||||||
|
"orderBy": [],
|
||||||
|
"rawQuery": true,
|
||||||
|
"rawSql": "SELECT time_index as \"time\", AVG(humidity) as \"humidity\" FROM quantumleap.etairqualityobserved WHERE $__timeFilter(time_index) GROUP BY time_index ORDER BY time_index DESC LIMIT 1",
|
||||||
|
"refId": "A"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Humidité Actuelle",
|
||||||
|
"type": "gauge"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": {"type": "postgres", "uid": "d43222c0-ad4e-4c49-9759-f822211e669e"},
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {"mode": "thresholds"},
|
||||||
|
"mappings": [],
|
||||||
|
"max": 100,
|
||||||
|
"min": 0,
|
||||||
|
"thresholds": {"mode": "absolute", "steps": [{"color": "blue", "value": null}, {"color": "orange", "value": 50}, {"color": "red", "value": 100}]},
|
||||||
|
"unit": "density"
|
||||||
|
},
|
||||||
|
"overrides": []
|
||||||
|
},
|
||||||
|
"gridPos": {"h": 8, "w": 8, "x": 8, "y": 16},
|
||||||
|
"id": 6,
|
||||||
|
"options": {"orientation": "auto", "reduceOptions": {"calcs": [{"text": "Last", "value": "last"}], "fields": "", "values": false}, "showThresholdLabels": false, "showThresholdMarkers": true, "textMode": "auto"},
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"datasource": {"type": "postgres", "uid": "d43222c0-ad4e-4c49-9759-f822211e669e"},
|
||||||
|
"format": "time_series",
|
||||||
|
"group": [],
|
||||||
|
"metricColumn": "no2",
|
||||||
|
"refId": "A",
|
||||||
|
"sql": {
|
||||||
|
"columns": [],
|
||||||
|
"groupBy": [],
|
||||||
|
"limit": "",
|
||||||
|
"orderBy": [],
|
||||||
|
"rawQuery": true,
|
||||||
|
"rawSql": "SELECT time_index as \"time\", AVG(no2) as \"no2\" FROM quantumleap.etairqualityobserved WHERE $__timeFilter(time_index) GROUP BY time_index ORDER BY time_index DESC LIMIT 1",
|
||||||
|
"refId": "A"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "NO2 Actuel",
|
||||||
|
"type": "gauge"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": {"type": "postgres", "uid": "d43222c0-ad4e-4c49-9759-f822211e669e"},
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {"mode": "thresholds"},
|
||||||
|
"mappings": [],
|
||||||
|
"max": 50,
|
||||||
|
"min": 0,
|
||||||
|
"thresholds": {"mode": "absolute", "steps": [{"color": "blue", "value": null}, {"color": "orange", "value": 25}, {"color": "red", "value": 40}]},
|
||||||
|
"unit": "celsius"
|
||||||
|
},
|
||||||
|
"overrides": []
|
||||||
|
},
|
||||||
|
"gridPos": {"h": 8, "w": 8, "x": 16, "y": 16},
|
||||||
|
"id": 7,
|
||||||
|
"options": {"orientation": "auto", "reduceOptions": {"calcs": [{"text": "Last", "value": "last"}], "fields": "", "values": false}, "showThresholdLabels": false, "showThresholdMarkers": true, "textMode": "auto"},
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"datasource": {"type": "postgres", "uid": "d43222c0-ad4e-4c49-9759-f822211e669e"},
|
||||||
|
"format": "time_series",
|
||||||
|
"group": [],
|
||||||
|
"metricColumn": "temperature",
|
||||||
|
"refId": "A",
|
||||||
|
"sql": {
|
||||||
|
"columns": [],
|
||||||
|
"groupBy": [],
|
||||||
|
"limit": "",
|
||||||
|
"orderBy": [],
|
||||||
|
"rawQuery": true,
|
||||||
|
"rawSql": "SELECT time_index as \"time\", AVG(temperature) as \"temperature\" FROM quantumleap.etairqualityobserved WHERE $__timeFilter(time_index) GROUP BY time_index ORDER BY time_index DESC LIMIT 1",
|
||||||
|
"refId": "A"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Température Actuelle",
|
||||||
|
"type": "gauge"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"schemaVersion": 38,
|
||||||
|
"style": "dark",
|
||||||
|
"tags": ["smart-city", "orion-ld", "cratedb", "air-quality"],
|
||||||
|
"templating": {"list": []},
|
||||||
|
"time": {"from": "now-6h", "to": "now"},
|
||||||
|
"title": "Smart City - Orion-LD Pipeline (COMPLET)",
|
||||||
|
"uid": "orion-ld-pipeline-final",
|
||||||
|
"version": 1
|
||||||
|
}
|
||||||
40
grafana-fixed.json
Normal file
40
grafana-fixed.json
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
"dashboard": {
|
||||||
|
"id": 29,
|
||||||
|
"uid": "orion-ld-simple",
|
||||||
|
"title": "Smart City - Orion-LD FINAL",
|
||||||
|
"tags": ["smart-city", "orion-ld", "fixed"],
|
||||||
|
"timezone": "browser",
|
||||||
|
"panels": [
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"type": "timeseries",
|
||||||
|
"title": "Température (°C)",
|
||||||
|
"datasource": {"type": "postgres", "uid": "d43222c0-ad4e-4c49-9759-f822211e669e"},
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"refId": "A",
|
||||||
|
"datasource": {"type": "postgres", "uid": "d43222c0-ad4e-4c49-9759-f822211e669e"},
|
||||||
|
"rawQuery": true,
|
||||||
|
"rawSql": "SELECT time_index as \"time\", AVG(temperature) as \"temp\" FROM quantumleap.etairqualityobserved GROUP BY time_index ORDER BY time_index"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"type": "table",
|
||||||
|
"title": "Dernières Mesures",
|
||||||
|
"datasource": {"type": "postgres", "uid": "d43222c0-ad4e-4c49-9759-f822211e669e"},
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"refId": "A",
|
||||||
|
"datasource": {"type": "postgres", "uid": "d43222c0-ad4e-4c49-9759-f822211e669e"},
|
||||||
|
"rawQuery": true,
|
||||||
|
"rawSql": "SELECT entity_id, time_index, temperature, no2, humidity FROM quantumleap.etairqualityobserved ORDER BY time_index DESC LIMIT 10"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"overwrite": true
|
||||||
|
}
|
||||||
26
grafana-simple.json
Normal file
26
grafana-simple.json
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"dashboard": {
|
||||||
|
"id": null,
|
||||||
|
"uid": "orion-ld-simple",
|
||||||
|
"title": "Smart City - Orion-LD Simple",
|
||||||
|
"tags": ["smart-city", "orion-ld"],
|
||||||
|
"timezone": "browser",
|
||||||
|
"panels": [
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"type": "timeseries",
|
||||||
|
"title": "Température",
|
||||||
|
"datasource": {"type": "postgres", "uid": "d43222c0-ad4e-4c49-9759-f822211e669e"},
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"refId": "A",
|
||||||
|
"datasource": {"type": "postgres", "uid": "d43222c0-ad4e-4c49-9759-f822211e669e"},
|
||||||
|
"rawQuery": true,
|
||||||
|
"rawSql": "SELECT time_index as \"time\", AVG(temperature) as \"temp\" FROM quantumleap.etairqualityobserved WHERE $__timeFilter(time_index) GROUP BY time_index ORDER BY time_index"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"overwrite": false
|
||||||
|
}
|
||||||
502758
simulator.log
502758
simulator.log
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user