Tableau « Les vehicules » : ce que chaque voiture encaisse, par periode
Demande du proprietaire : voir ce que la JEEP ou la VW encaisse dans une session, et evaluer sur une periode (jour, semaine, mois), en assumant l'imprecision liee a l'impossibilite d'identifier le vehicule au branchement. Trois panneaux : les totaux par vehicule sur la periode, l'energie par periode et par vehicule avec le meme pas adaptatif que les autres tableaux (heure / jour / mois), et la liste des sessions. L'incertitude est AFFICHEE plutot que masquee : - un compteur « Etiquette douteuse » — sessions ou le selecteur a change en cours de route, ou n'etait pas renseigne ; - une colonne « Doute » dans le tableau ; - une serie « Non etiquete » dans le graphique ; - l'heure de debranchement, qui confirme apres coup puisque les deux vehicules partent a des heures differentes. Le commentaire du generateur consigne pourquoi aucune verification n'est possible : electriquement les deux voitures sont indiscernables (3 680 contre 3 655 W a consigne identique de 20 A), et horairement la routine s'inverse le week-end, donc une regle horaire serait fausse un week-end sur deux. Ajout a la table : `energie_reseau_kwh`, la part venue du reseau, fondee sur le `source_mode` du controleur — son intention — et non sur la puissance reseau instantanee, laquelle peut alimenter la maison pendant que le soleil alimente la voiture. 52/53 requetes verifiees. La seule en echec porte sur cette 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:
@@ -349,6 +349,12 @@ async function migrer(client) {
|
||||
debranche_a timestamptz,
|
||||
brut jsonb
|
||||
)`);
|
||||
// Part venue du reseau. On se fie au `source_mode` du controleur — son
|
||||
// INTENTION, sans ambiguite — et non a la puissance reseau instantanee, qui
|
||||
// peut alimenter la maison pendant que le soleil alimente la voiture.
|
||||
await client.query(
|
||||
'ALTER TABLE session_charge ADD COLUMN IF NOT EXISTS energie_reseau_kwh '
|
||||
+ 'double precision NOT NULL DEFAULT 0');
|
||||
await client.query(
|
||||
'CREATE INDEX IF NOT EXISTS session_charge_debut_idx ON session_charge (debut DESC)');
|
||||
// Le role de lecture doit voir la nouvelle table. S'il n'existe pas encore,
|
||||
@@ -413,6 +419,7 @@ async function ecrireSession(sql, client, st) {
|
||||
`UPDATE session_charge SET
|
||||
fin = $2,
|
||||
energie_kwh = energie_kwh + $3 * $4 / 3600000.0,
|
||||
energie_reseau_kwh = energie_reseau_kwh + $8 * $3 * $4 / 3600000.0,
|
||||
p_max_w = GREATEST(coalesce(p_max_w, 0), $3),
|
||||
courant_max_a = GREATEST(coalesce(courant_max_a, 0), coalesce($5, 0)),
|
||||
consigne_max_a = GREATEST(coalesce(consigne_max_a, 0), coalesce($6, 0)),
|
||||
@@ -421,7 +428,8 @@ async function ecrireSession(sql, client, st) {
|
||||
WHERE debut = $1`,
|
||||
[ouverte.debut, maintenant, p, dt,
|
||||
num(g('sensor.victron_evcs_current')?.state),
|
||||
num(g('sensor.victron_evcs_set_current')?.state), vehicule]);
|
||||
num(g('sensor.victron_evcs_set_current')?.state), vehicule,
|
||||
txt(g('input_text.victron_evcs_source_mode')?.state).startsWith('Réseau') ? 1 : 0]);
|
||||
n++;
|
||||
}
|
||||
} else if (ouverte) {
|
||||
|
||||
Reference in New Issue
Block a user