From fd4b3356accc1cc1035ebdaa1beadecadae5193b Mon Sep 17 00:00:00 2001 From: Tallagrand Thierry Date: Sat, 3 Oct 2026 23:48:17 +0200 Subject: [PATCH] Grafana vehicules : colonnes ZERO et Invite (Megane, amis), etaient absentes --- .../grafana/dashboards/vehicules.json | 50 +++++++++++++++++-- tools/gen-grafana-dashboards.py | 15 +++++- 2 files changed, 59 insertions(+), 6 deletions(-) diff --git a/deploy/historisation/grafana/dashboards/vehicules.json b/deploy/historisation/grafana/dashboards/vehicules.json index 3c17df4..4beaa84 100644 --- a/deploy/historisation/grafana/dashboards/vehicules.json +++ b/deploy/historisation/grafana/dashboards/vehicules.json @@ -4,7 +4,7 @@ }, "uid": "evcs-vehicules", "title": "Les vehicules", - "description": "Ce que chaque voiture encaisse, session par session et sur la periode choisie. L'etiquette vient d'un selecteur manuel : elle peut etre fausse, et rien ne permet de la verifier — les deux vehicules sont electriquement indiscernables et leur routine s'inverse le week-end.", + "description": "Ce que chaque voiture encaisse, session par session et sur la periode choisie. L'etiquette vient d'un selecteur manuel : elle peut etre fausse, et rien ne permet de la verifier — les deux vehicules sont electriquement indiscernables et leur routine s'inverse le week-end. Vehicules : VW, JEEP, ZERO (moto) ; « Invite » = tout autre (Megane de service, amis).", "tags": [ "evcs" ], @@ -77,7 +77,7 @@ "format": "table", "rawQuery": true, "editorMode": "code", - "rawSql": "SELECT round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'VW'), 0)::numeric, 1) AS \"VW\",\n round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'JEEP'), 0)::numeric, 1) AS \"JEEP\",\n count(*) AS \"Sessions\",\n count(*) FILTER (WHERE NOT vehicule_sur OR vehicule IS NULL) AS \"A confirmer\"\nFROM session_charge WHERE $__timeFilter(debut)" + "rawSql": "SELECT round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'VW'), 0)::numeric, 1) AS \"VW\",\n round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'JEEP'), 0)::numeric, 1) AS \"JEEP\",\n round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'ZERO'), 0)::numeric, 1) AS \"ZERO\",\n round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule NOT IN ('VW', 'JEEP', 'ZERO')), 0)::numeric, 1) AS \"Invite\",\n count(*) AS \"Sessions\",\n count(*) FILTER (WHERE NOT vehicule_sur OR vehicule IS NULL) AS \"A confirmer\"\nFROM session_charge WHERE $__timeFilter(debut)" } ], "gridPos": { @@ -141,6 +141,44 @@ } ] }, + { + "matcher": { + "id": "byName", + "options": "ZERO" + }, + "properties": [ + { + "id": "unit", + "value": "kwatth" + }, + { + "id": "color", + "value": { + "mode": "fixed", + "fixedColor": "purple" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Invite" + }, + "properties": [ + { + "id": "unit", + "value": "kwatth" + }, + { + "id": "color", + "value": { + "mode": "fixed", + "fixedColor": "yellow" + } + } + ] + }, { "matcher": { "id": "byName", @@ -207,7 +245,7 @@ "format": "table", "rawQuery": true, "editorMode": "code", - "rawSql": "WITH bornes AS (\n SELECT $__timeFrom()::timestamptz AS d, $__timeTo()::timestamptz AS f\n),\npas AS (\n SELECT CASE WHEN f - d > interval '70 days' THEN 'month'\n WHEN f - d > interval '4 days' THEN 'day'\n ELSE 'hour' END AS unite,\n CASE WHEN f - d > interval '70 days' THEN 'MM/YYYY'\n WHEN f - d > interval '4 days' THEN 'DD/MM'\n ELSE 'DD/MM HH24' END AS forme\n FROM bornes\n)\nSELECT to_char(date_trunc(pas.unite, debut), pas.forme) AS \"Periode\",\n round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'VW'), 0)::numeric, 2) AS \"VW\",\n round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'JEEP'), 0)::numeric, 2) AS \"JEEP\",\n round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule IS NULL), 0)::numeric, 2) AS \"Non etiquete\"\nFROM session_charge, pas\nWHERE $__timeFilter(debut)\nGROUP BY date_trunc(pas.unite, debut), pas.forme\nORDER BY date_trunc(pas.unite, debut)" + "rawSql": "WITH bornes AS (\n SELECT $__timeFrom()::timestamptz AS d, $__timeTo()::timestamptz AS f\n),\npas AS (\n SELECT CASE WHEN f - d > interval '70 days' THEN 'month'\n WHEN f - d > interval '4 days' THEN 'day'\n ELSE 'hour' END AS unite,\n CASE WHEN f - d > interval '70 days' THEN 'MM/YYYY'\n WHEN f - d > interval '4 days' THEN 'DD/MM'\n ELSE 'DD/MM HH24' END AS forme\n FROM bornes\n)\nSELECT to_char(date_trunc(pas.unite, debut), pas.forme) AS \"Periode\",\n round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'VW'), 0)::numeric, 2) AS \"VW\",\n round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'JEEP'), 0)::numeric, 2) AS \"JEEP\",\n round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'ZERO'), 0)::numeric, 2) AS \"ZERO\",\n round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule NOT IN ('VW', 'JEEP', 'ZERO')), 0)::numeric, 2) AS \"Invite\",\n round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule IS NULL), 0)::numeric, 2) AS \"Non etiquete\"\nFROM session_charge, pas\nWHERE $__timeFilter(debut)\nGROUP BY date_trunc(pas.unite, debut), pas.forme\nORDER BY date_trunc(pas.unite, debut)" } ], "gridPos": { @@ -317,9 +355,13 @@ "color": "green", "index": 1 }, + "ZERO": { + "color": "purple", + "index": 2 + }, "?": { "color": "orange", - "index": 2 + "index": 3 } } } diff --git a/tools/gen-grafana-dashboards.py b/tools/gen-grafana-dashboards.py index fa2e014..f9b3ef8 100644 --- a/tools/gen-grafana-dashboards.py +++ b/tools/gen-grafana-dashboards.py @@ -1339,6 +1339,8 @@ pas AS ( SELECT to_char(date_trunc(pas.unite, debut), pas.forme) AS "Periode", round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'VW'), 0)::numeric, 2) AS "VW", round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'JEEP'), 0)::numeric, 2) AS "JEEP", + round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'ZERO'), 0)::numeric, 2) AS "ZERO", + round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule NOT IN ('VW', 'JEEP', 'ZERO')), 0)::numeric, 2) AS "Invite", round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule IS NULL), 0)::numeric, 2) AS "Non etiquete" FROM session_charge, pas WHERE $__timeFilter(debut) @@ -1349,13 +1351,17 @@ vehicules = dashboard("evcs-vehicules", "Les vehicules", ( "Ce que chaque voiture encaisse, session par session et sur la periode " "choisie. L'etiquette vient d'un selecteur manuel : elle peut etre fausse, " "et rien ne permet de la verifier — les deux vehicules sont " - "electriquement indiscernables et leur routine s'inverse le week-end."), + "electriquement indiscernables et leur routine s'inverse le week-end. " + "Vehicules : VW, JEEP, ZERO (moto) ; « Invite » = tout autre (Megane de " + "service, amis)."), frm="now-7d", refresh="5m", panels=[ stat("Sur la periode", [ sql("A", "SELECT round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'VW'), 0)::numeric, 1) AS \"VW\",\n" " round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'JEEP'), 0)::numeric, 1) AS \"JEEP\",\n" + " round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'ZERO'), 0)::numeric, 1) AS \"ZERO\",\n" + " round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule NOT IN ('VW', 'JEEP', 'ZERO')), 0)::numeric, 1) AS \"Invite\",\n" " count(*) AS \"Sessions\",\n" " count(*) FILTER (WHERE NOT vehicule_sur OR vehicule IS NULL) AS \"A confirmer\"\n" "FROM session_charge WHERE $__timeFilter(debut)", fmt="table")], @@ -1370,6 +1376,10 @@ vehicules = dashboard("evcs-vehicules", "Les vehicules", ( {"id": "color", "value": {"mode": "fixed", "fixedColor": "blue"}}]), sur("JEEP", [{"id": "unit", "value": "kwatth"}, {"id": "color", "value": {"mode": "fixed", "fixedColor": "green"}}]), + sur("ZERO", [{"id": "unit", "value": "kwatth"}, + {"id": "color", "value": {"mode": "fixed", "fixedColor": "purple"}}]), + sur("Invite", [{"id": "unit", "value": "kwatth"}, + {"id": "color", "value": {"mode": "fixed", "fixedColor": "yellow"}}]), sur("Etiquette douteuse", [{"id": "thresholds", "value": seuils( ("green", None), ("orange", 1))}])]), @@ -1410,7 +1420,8 @@ vehicules = dashboard("evcs-vehicules", "Les vehicules", ( {"id": "mappings", "value": [{"type": "value", "options": { "VW": {"color": "blue", "index": 0}, "JEEP": {"color": "green", "index": 1}, - "?": {"color": "orange", "index": 2}}}]}]), + "ZERO": {"color": "purple", "index": 2}, + "?": {"color": "orange", "index": 3}}}]}]), sur("Doute", [{"id": "custom.width", "value": 150}]), sur("kWh", [{"id": "unit", "value": "kwatth"}]), sur("kWh integres", [{"id": "unit", "value": "kwatth"},