Le rang du module dans sa chaine accompagne desormais chaque releve de cellules
Le proprietaire demandait si le rang dans le pack etait accessible ou si seul le code-barres l'etait. Il l'etait depuis le debut : l'outil de releve resout adresse <-> code-barres au demarrage mais ne l'ecrivait pas. Desormais : - pylontech-console.mjs --suivi ecrit une colonne 'adresse' (vide en mono-module, jamais devinee) ; - historise-evcs.mjs l'ingere par son NOM dans cellule.rang, enregistre PAR RELEVE et non dans une table figee — un recablage du LVHUB renumerote, et l'historique de chaque ligne doit garder le rang vrai a son instant ; - Grafana : colonne 'Rang' dans le tableau de sante, et la liste deroulante des modules affiche 'rang - code-barres' quand le rang est connu. 75/75 requetes valides. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj
This commit is contained in:
@@ -1182,7 +1182,10 @@ vehicules = dashboard("evcs-vehicules", "Les vehicules", (
|
||||
VARIABLE_MODULE = {
|
||||
"name": "module", "label": "Module", "type": "query", "datasource": PG,
|
||||
"refresh": 1, "includeAll": False, "multi": False,
|
||||
"query": "SELECT DISTINCT module FROM cellule ORDER BY 1",
|
||||
"query": ("SELECT DISTINCT ON (module) "
|
||||
"CASE WHEN rang IS NULL THEN module "
|
||||
"ELSE rang || ' \u00b7 ' || module END AS __text, "
|
||||
"module AS __value FROM cellule ORDER BY module, ts DESC"),
|
||||
}
|
||||
|
||||
# Echelle d'alarme du materiel, lue dans `sysinfo` du LVHUB le 05/09/2026.
|
||||
@@ -1202,21 +1205,21 @@ batteries = dashboard("evcs-batteries", "Les batteries", (
|
||||
" SELECT module FROM cellule GROUP BY module\n"
|
||||
" HAVING max(ts) > now() - interval '2 hours'),\n"
|
||||
"dernier AS (\n"
|
||||
" SELECT DISTINCT ON (module) module, ts FROM cellule\n"
|
||||
" SELECT DISTINCT ON (module) module, ts, rang FROM cellule\n"
|
||||
" WHERE module IN (SELECT module FROM vivants)\n"
|
||||
" ORDER BY module, ts DESC),\n"
|
||||
"maintenant AS (\n"
|
||||
" SELECT c.module, max(c.mv) - min(c.mv) AS ecart,\n"
|
||||
" max(c.mv) AS haute, min(c.mv) AS basse,\n"
|
||||
" max(c.courant_ma) AS ma, d.ts\n"
|
||||
" max(c.courant_ma) AS ma, d.ts, d.rang\n"
|
||||
" FROM cellule c JOIN dernier d ON d.module = c.module AND d.ts = c.ts\n"
|
||||
" GROUP BY c.module, d.ts),\n"
|
||||
" GROUP BY c.module, d.ts, d.rang),\n"
|
||||
"periode AS (\n"
|
||||
" SELECT module, max(ecart) AS ecart_max FROM (\n"
|
||||
" SELECT module, ts, max(mv) - min(mv) AS ecart\n"
|
||||
" FROM cellule WHERE $__timeFilter(ts) GROUP BY module, ts) x\n"
|
||||
" GROUP BY module)\n"
|
||||
"SELECT m.module AS \"Module\",\n"
|
||||
"SELECT m.rang AS \"Rang\", m.module AS \"Module\",\n"
|
||||
" m.ecart AS \"Ecart maintenant\",\n"
|
||||
" p.ecart_max AS \"Ecart max sur la periode\",\n"
|
||||
" m.haute AS \"Plus haute\", m.basse AS \"Plus basse\",\n"
|
||||
@@ -1231,7 +1234,9 @@ batteries = dashboard("evcs-batteries", "Les batteries", (
|
||||
"un module en un nombre : sous 20 mV il est sain, au-dela de 150 mV "
|
||||
"le BMS reduit le courant de charge de TOUT le parc. La colonne "
|
||||
"« Courant » dit si le module etait en charge au moment du releve : "
|
||||
"un ecart ne se compare qu'a courant comparable.",
|
||||
"un ecart ne se compare qu'a courant comparable. « Rang » est "
|
||||
"l'adresse du module dans SA chaine au dernier releve — chaque "
|
||||
"chaine numerote a partir de 1, l'identite reste le code-barres.",
|
||||
overrides=[
|
||||
sur("Ecart maintenant", [{"id": "unit", "value": "mvolt"},
|
||||
{"id": "custom.cellOptions",
|
||||
|
||||
Reference in New Issue
Block a user