- flexmeasures-entsoe: ENTSO-E data plugin - flexmeasures-weather: Weather data plugin - USEF Flex Trading Protocol PDF (2.4MB) - Cariflex simulator (publishes to Redis) - Dashboard Grafana updated with correct InfluxDB queries - All tools extracted in /tools/
135 lines
5.5 KiB
JSON
135 lines
5.5 KiB
JSON
{
|
|
"dashboard": {
|
|
"id": null,
|
|
"uid": "cariflex-main",
|
|
"title": "Cariflex - Supervision Énergétique",
|
|
"tags": ["cariflex", "energy", "martinique"],
|
|
"timezone": "America/Martinique",
|
|
"refresh": "30s",
|
|
"time": {"from": "now-24h", "to": "now"},
|
|
"panels": [
|
|
{
|
|
"id": 1,
|
|
"title": "Capteurs Air Quality (10)",
|
|
"type": "timeseries",
|
|
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 0},
|
|
"datasource": {"type": "influxdb", "uid": "influxdb-v2"},
|
|
"targets": [{
|
|
"query": "from(bucket:\"smartcity\") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r[\"_measurement\"] == \"mqtt_consumer\") |> filter(fn: (r) => r[\"topic\"] =~ /airquality/) |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)",
|
|
"refId": "A"
|
|
}],
|
|
"fieldConfig": {
|
|
"defaults": {"unit": "none"},
|
|
"overrides": []
|
|
}
|
|
},
|
|
{
|
|
"id": 2,
|
|
"title": "Capteurs Weather (10)",
|
|
"type": "timeseries",
|
|
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 0},
|
|
"datasource": {"type": "influxdb", "uid": "influxdb-v2"},
|
|
"targets": [{
|
|
"query": "from(bucket:\"smartcity\") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r[\"_measurement\"] == \"mqtt_consumer\") |> filter(fn: (r) => r[\"topic\"] =~ /weather/) |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)",
|
|
"refId": "A"
|
|
}],
|
|
"fieldConfig": {
|
|
"defaults": {"unit": "celsius", "min": 15, "max": 40},
|
|
"overrides": []
|
|
}
|
|
},
|
|
{
|
|
"id": 3,
|
|
"title": "Capteurs Traffic (10)",
|
|
"type": "timeseries",
|
|
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 8},
|
|
"datasource": {"type": "influxdb", "uid": "influxdb-v2"},
|
|
"targets": [{
|
|
"query": "from(bucket:\"smartcity\") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r[\"_measurement\"] == \"mqtt_consumer\") |> filter(fn: (r) => r[\"topic\"] =~ /traffic/) |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)",
|
|
"refId": "A"
|
|
}],
|
|
"fieldConfig": {
|
|
"defaults": {"unit": "kmh", "min": 0, "max": 100},
|
|
"overrides": []
|
|
}
|
|
},
|
|
{
|
|
"id": 4,
|
|
"title": "Capteurs Parking (10)",
|
|
"type": "timeseries",
|
|
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 8},
|
|
"datasource": {"type": "influxdb", "uid": "influxdb-v2"},
|
|
"targets": [{
|
|
"query": "from(bucket:\"smartcity\") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r[\"_measurement\"] == \"mqtt_consumer\") |> filter(fn: (r) => r[\"topic\"] =~ /parking/) |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)",
|
|
"refId": "A"
|
|
}],
|
|
"fieldConfig": {
|
|
"defaults": {"unit": "percent", "min": 0, "max": 100},
|
|
"overrides": []
|
|
}
|
|
},
|
|
{
|
|
"id": 5,
|
|
"title": "Battery Level (tous capteurs)",
|
|
"type": "gauge",
|
|
"gridPos": {"h": 6, "w": 6, "x": 0, "y": 16},
|
|
"datasource": {"type": "influxdb", "uid": "influxdb-v2"},
|
|
"targets": [{
|
|
"query": "from(bucket:\"smartcity\") |> range(start: -5m) |> filter(fn: (r) => r[\"_measurement\"] == \"mqtt_consumer\") |> filter(fn: (r) => r[\"_field\"] == \"battery_level\") |> mean()",
|
|
"refId": "A"
|
|
}],
|
|
"fieldConfig": {
|
|
"defaults": {"unit": "percent", "min": 0, "max": 100, "thresholds": {"steps": [{"color": "red", "value": 0}, {"color": "yellow", "value": 20}, {"color": "green", "value": 50}]}},
|
|
"overrides": []
|
|
}
|
|
},
|
|
{
|
|
"id": 6,
|
|
"title": "Temperature (°C)",
|
|
"type": "stat",
|
|
"gridPos": {"h": 6, "w": 6, "x": 6, "y": 16},
|
|
"datasource": {"type": "influxdb", "uid": "influxdb-v2"},
|
|
"targets": [{
|
|
"query": "from(bucket:\"smartcity\") |> range(start: -5m) |> filter(fn: (r) => r[\"_measurement\"] == \"mqtt_consumer\") |> filter(fn: (r) => r[\"_field\"] == \"temperature_celsius\") |> mean()",
|
|
"refId": "A"
|
|
}],
|
|
"fieldConfig": {
|
|
"defaults": {"unit": "celsius", "min": 15, "max": 40},
|
|
"overrides": []
|
|
}
|
|
},
|
|
{
|
|
"id": 7,
|
|
"title": "Noise Level (dB)",
|
|
"type": "stat",
|
|
"gridPos": {"h": 6, "w": 6, "x": 12, "y": 16},
|
|
"datasource": {"type": "influxdb", "uid": "influxdb-v2"},
|
|
"targets": [{
|
|
"query": "from(bucket:\"smartcity\") |> range(start: -5m) |> filter(fn: (r) => r[\"_measurement\"] == \"mqtt_consumer\") |> filter(fn: (r) => r[\"_field\"] == \"noise_level_db\") |> mean()",
|
|
"refId": "A"
|
|
}],
|
|
"fieldConfig": {
|
|
"defaults": {"unit": "dB", "min": 0, "max": 120},
|
|
"overrides": []
|
|
}
|
|
},
|
|
{
|
|
"id": 8,
|
|
"title": "Rain (mm)",
|
|
"type": "stat",
|
|
"gridPos": {"h": 6, "w": 6, "x": 18, "y": 16},
|
|
"datasource": {"type": "influxdb", "uid": "influxdb-v2"},
|
|
"targets": [{
|
|
"query": "from(bucket:\"smartcity\") |> range(start: -1h) |> filter(fn: (r) => r[\"_measurement\"] == \"mqtt_consumer\") |> filter(fn: (r) => r[\"_field\"] == \"rain_mm\") |> sum()",
|
|
"refId": "A"
|
|
}],
|
|
"fieldConfig": {
|
|
"defaults": {"unit": "mm", "min": 0},
|
|
"overrides": []
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"overwrite": true
|
|
}
|