From c7006a030cd3791e27ca2a5882a466bc1fc2753b Mon Sep 17 00:00:00 2001 From: Tallagrand Thierry Date: Sat, 5 Sep 2026 02:26:39 +0200 Subject: [PATCH] Deux defauts introduits avec les vues MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. « Data is missing a time field » sur Les flux. Mon filtre de vue laissait passer « time » en minuscules, or la source PostgreSQL nomme le champ temporel « Time » avec une majuscule dans le format time_series. Le filtre supprimait donc l'axe des temps. Les deux graphies sont desormais acceptees. 2. Les deux alarmes du panneau BMS n'apparaissaient pas. Un panneau stat ne reduit que les champs NUMERIQUES par defaut, et « no_alarm » est du texte : il faut "/.*/" pour l'afficher. Applique a ce seul panneau — les autres n'ont que des nombres et le reglage par defaut y est correct. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ --- .../historisation/grafana/dashboards/systeme.json | 6 +++--- tools/gen-grafana-dashboards.py | 14 +++++++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/deploy/historisation/grafana/dashboards/systeme.json b/deploy/historisation/grafana/dashboards/systeme.json index 5679f22..909f59b 100644 --- a/deploy/historisation/grafana/dashboards/systeme.json +++ b/deploy/historisation/grafana/dashboards/systeme.json @@ -1025,7 +1025,7 @@ "calcs": [ "lastNotNull" ], - "fields": "", + "fields": "/.*/", "values": false }, "orientation": "horizontal", @@ -1183,7 +1183,7 @@ "id": "filterFieldsByName", "options": { "include": { - "pattern": "^(time|Heure|$vue)$" + "pattern": "^(Time|time|Heure|$vue)$" } } } @@ -1253,7 +1253,7 @@ "id": "filterFieldsByName", "options": { "include": { - "pattern": "^(time|Heure|$vue)$" + "pattern": "^(Time|time|Heure|$vue)$" } } } diff --git a/tools/gen-grafana-dashboards.py b/tools/gen-grafana-dashboards.py index 367a158..34f09d3 100644 --- a/tools/gen-grafana-dashboards.py +++ b/tools/gen-grafana-dashboards.py @@ -74,7 +74,7 @@ def ts(title, targets, ds, x, y, w, h, unit="", desc="", extra=None, legend="bot return p def stat(title, targets, ds, x, y, w, h, desc="", overrides=None, texte="auto", - taille=None, mappings=None): + taille=None, mappings=None, champs=""): """Grands chiffres. Sur telephone, Grafana empile TOUS les panneaux en pleine largeur sous ~770 px : mettre plusieurs valeurs dans UN panneau est donc le seul moyen de les garder cote a cote et de limiter le defilement.""" @@ -87,7 +87,10 @@ def stat(title, targets, ds, x, y, w, h, desc="", overrides=None, texte="auto", "steps": [{"color": "text", "value": None}]}, "mappings": mappings or []}, "overrides": overrides or []}, "options": {"reduceOptions": {"calcs": ["lastNotNull"], - "fields": "", "values": False}, + # "" = champs numeriques seulement. + # Les etats d'alarme sont du TEXTE : + # il faut "/.*/" pour les afficher. + "fields": champs, "values": False}, "orientation": "horizontal", "textMode": texte, "colorMode": "value", "graphMode": "none", "justifyMode": "center", @@ -787,8 +790,12 @@ VARIABLE_VUE = { "current": {"selected": True, "text": _VUES[0][0], "value": _VUES[0][1]}, "multi": False, "includeAll": False, } +# « Time » avec une MAJUSCULE : c'est ainsi que la source PostgreSQL nomme le +# champ temporel dans le format time_series. Ecrit en minuscules, le filtre +# supprimait l'axe des temps et le panneau repondait « Data is missing a time +# field ». Les deux graphies sont acceptees, la casse etant significative ici. FILTRE_VUE = [{"id": "filterFieldsByName", - "options": {"include": {"pattern": "^(time|Heure|$vue)$"}}}] + "options": {"include": {"pattern": "^(Time|time|Heure|$vue)$"}}}] systeme = dashboard("evcs-systeme", "Le systeme", ( "Replique locale de la vue generale VRM. La console Victron est hebergee " @@ -902,6 +909,7 @@ systeme = dashboard("evcs-systeme", "Le systeme", ( "qui sature, c'est une cellule.", overrides=[col("Charge max", "amp"), col("Sante", "percent")], taille={"valueSize": 24, "titleSize": 11}, + champs="/.*/", mappings=[{"type": "value", "options": { "no_alarm": {"text": "OK", "color": "green", "index": 0}, "warning": {"text": "AVERTISSEMENT", "color": "orange", "index": 1},