Table des sessions de charge : etiqueter pendant, pas deviner apres

L'etiquette du vehicule n'existe QUE pendant la session.
`input_select.victron_evcs_vehicle` est un reglage manuel, il change, et rien
ne conservait sa valeur au moment ou la charge avait lieu — une session d'il y
a trois semaines etait anonyme pour toujours, et toute analyse d'usage
impossible.

Nouvelle table `session_charge` : debut, fin, vehicule tel que le selecteur
l'indiquait PENDANT la session, un drapeau disant s'il a change en cours de
route, energie accumulee, puissance et courant maximum, mode source, et
l'heure de debranchement — qui confirme apres coup, les deux vehicules partant
a des heures differentes.

Le service applique lui-meme la migration au demarrage : `schema.sql` n'est
joue qu'a la creation de la base, une table ajoutee plus tard n'y arriverait
jamais. `CREATE TABLE IF NOT EXISTS` rend l'operation rejouable.

On ne DEVINE rien, et le commentaire du schema dit pourquoi :
- electriquement, la VW accepte 3 680 W et la JEEP 3 655 W a consigne
  identique de 20 A — 0,1 A d'ecart, indiscernables ;
- horairement, la routine s'inverse le week-end (la femme du proprietaire
  travaille samedi et dimanche matin), donc « midi = JEEP, nuit = VW » serait
  faux un week-end sur deux.

Essai a blanc : la session en cours serait correctement inscrite (JEEP,
3396 W, Reseau force, profil night_hc).

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 02:54:05 +02:00
parent 0cc547e71c
commit e80dbf70fb
3 changed files with 172 additions and 6 deletions

View File

@@ -120,6 +120,37 @@ CREATE TABLE evenement (
);
CREATE INDEX evenement_ts_idx ON evenement (ts DESC);
-- ---------------------------------------------------------------------
-- 6. SESSION_CHARGE — une ligne par charge de vehicule
-- ---------------------------------------------------------------------
-- Raison d'etre : l'etiquette du vehicule n'existe QUE pendant la session.
-- `input_select.victron_evcs_vehicle` est un reglage manuel, il change, et
-- rien ne conserve sa valeur au moment ou la charge a eu lieu. Sans cet
-- enregistrement, une session d'il y a trois semaines est anonyme pour
-- toujours — et toute analyse d'usage devient impossible.
--
-- ⚠️ On ne DEVINE pas le vehicule. Mesure du 05/09/2026 : a consigne identique
-- de 20 A, la VW accepte 3 680 W et la JEEP 3 655 W, soit 0,1 A d'ecart. Ils
-- sont electriquement indiscernables. L'heure ne dit rien non plus : en semaine
-- la JEEP charge le midi et la VW la nuit, le week-end c'est l'inverse.
CREATE TABLE session_charge (
debut timestamptz PRIMARY KEY,
fin timestamptz NOT NULL,
terminee boolean NOT NULL DEFAULT false,
vehicule text, -- valeur du selecteur PENDANT la session
vehicule_sur boolean NOT NULL DEFAULT true, -- le selecteur n'a pas change
energie_kwh double precision NOT NULL DEFAULT 0,
p_max_w double precision,
courant_max_a double precision,
consigne_max_a double precision,
source_mode text,
debranche_a timestamptz, -- confirme le vehicule apres coup
brut jsonb
);
COMMENT ON COLUMN session_charge.debranche_a IS
'Heure de debranchement : les deux vehicules partent a des heures differentes, ce qui confirme l''etiquette apres coup.';
CREATE INDEX session_charge_debut_idx ON session_charge (debut DESC);
-- ---------------------------------------------------------------------
-- Index de lecture
-- ---------------------------------------------------------------------