Le compteur de la borne fait foi, pas mon integration

Le tableau annoncait 750 Wh la ou VRM affichait 8 kWh. Ce n'etait pas une
erreur de mesure mais une erreur de SOURCE : j'integrais la puissance depuis le
moment ou mon detecteur avait commence a fonctionner — 03:16 — pour une session
ouverte a 01:25.

Or la borne tient son propre compteur de session,
`sensor.evcs_hq2239dnt7p_last_session_energy`, qui vaut exactement les 8,0 kWh
de VRM et compte depuis le vrai debut. Nouvelle colonne
`energie_station_kwh` : c'est elle qui alimente desormais les totaux et le
graphique.

Mon integration est conservee en colonne « kWh integres » : l'ecart entre les
deux signale un demarrage ou un redemarrage du service en cours de session, ce
qui est une information en soi. Et elle sert de secours si la borne ne publie
rien.

Cherche au passage, sans succes : VRM affiche « Vehicule : Guest EV » mais
AUCUNE entite ne porte ce champ cote Home Assistant. « Guest EV » signifie
d'ailleurs vehicule NON identifie — Victron ne sait pas non plus qui est
branche.

50/53 : les trois requetes en echec portent sur la nouvelle colonne, que la
migration creera au prochain demarrage du service.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
This commit is contained in:
Tallagrand Thierry
2026-09-05 03:29:09 +02:00
parent 14e04a428a
commit 9748325356
4 changed files with 53 additions and 15 deletions

View File

@@ -974,9 +974,9 @@ pas AS (
FROM bornes
)
SELECT to_char(date_trunc(pas.unite, debut), pas.forme) AS "Periode",
round(coalesce(sum(energie_kwh) FILTER (WHERE vehicule = 'VW'), 0)::numeric, 2) AS "VW",
round(coalesce(sum(energie_kwh) FILTER (WHERE vehicule = 'JEEP'), 0)::numeric, 2) AS "JEEP",
round(coalesce(sum(energie_kwh) FILTER (WHERE vehicule IS NULL), 0)::numeric, 2) AS "Non etiquete"
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 IS NULL), 0)::numeric, 2) AS "Non etiquete"
FROM session_charge, pas
WHERE $__timeFilter(debut)
GROUP BY date_trunc(pas.unite, debut), pas.forme
@@ -991,8 +991,8 @@ vehicules = dashboard("evcs-vehicules", "Les vehicules", (
stat("Sur la periode", [
sql("A",
"SELECT round(coalesce(sum(energie_kwh) FILTER (WHERE vehicule = 'VW'), 0)::numeric, 1) AS \"VW\",\n"
" round(coalesce(sum(energie_kwh) FILTER (WHERE vehicule = 'JEEP'), 0)::numeric, 1) AS \"JEEP\",\n"
"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 \"Etiquette douteuse\"\n"
"FROM session_charge WHERE $__timeFilter(debut)", fmt="table")],
@@ -1023,7 +1023,8 @@ vehicules = dashboard("evcs-vehicules", "Les vehicules", (
" coalesce(vehicule, '?') AS \"Vehicule\",\n"
" CASE WHEN vehicule_sur THEN '' ELSE 'selecteur change' END AS \"Doute\",\n"
" round((extract(epoch FROM fin - debut) / 60)::numeric) AS \"Minutes\",\n"
" round(energie_kwh::numeric, 2) AS \"kWh\",\n"
" round(coalesce(energie_station_kwh, energie_kwh)::numeric, 2) AS \"kWh\",\n"
" round(energie_kwh::numeric, 2) AS \"kWh integres\",\n"
" round(energie_reseau_kwh::numeric, 2) AS \"dont reseau\",\n"
" round(p_max_w::numeric) AS \"P max\",\n"
" consigne_max_a AS \"Consigne max\",\n"
@@ -1031,6 +1032,10 @@ vehicules = dashboard("evcs-vehicules", "Les vehicules", (
" to_char(debranche_a, 'Dy HH24:MI') AS \"Debranche\"\n"
"FROM session_charge WHERE $__timeFilter(debut) ORDER BY debut DESC", fmt="table")],
PG, 0, 14, 24, 11,
"« kWh » vient du compteur de la BORNE, qui compte depuis le vrai debut "
"de la session. « kWh integres » est mon propre calcul, qui ne couvre que "
"ce que le service a vu — un ecart entre les deux signale un demarrage ou "
"un redemarrage en cours de session, pas une erreur de mesure. "
"« Debranche » confirme le vehicule apres coup : les deux partent a des "
"heures differentes. « dont reseau » se fonde sur le mode source declare "
"par le controleur — son intention — et non sur la puissance reseau "
@@ -1045,6 +1050,8 @@ vehicules = dashboard("evcs-vehicules", "Les vehicules", (
"?": {"color": "orange", "index": 2}}}]}]),
sur("Doute", [{"id": "custom.width", "value": 150}]),
sur("kWh", [{"id": "unit", "value": "kwatth"}]),
sur("kWh integres", [{"id": "unit", "value": "kwatth"},
{"id": "custom.width", "value": 110}]),
sur("dont reseau", [{"id": "unit", "value": "kwatth"}]),
sur("P max", [{"id": "unit", "value": "watt"}])]),
])