Historisation : allers-retours brefs de la borne et du contacteur retrouves dans l'historique HA (echange VW -> JEEP de 20 s)

This commit is contained in:
Tallagrand Thierry
2026-10-06 23:28:56 +02:00
parent f189df588d
commit 28851c83e4
4 changed files with 166 additions and 7 deletions

24
tools/allers-retours.mjs Normal file
View File

@@ -0,0 +1,24 @@
// Transitions d'etat retrouvees dans l'historique HA (06/10/2026).
// Voir ALLERS_RETOURS_SUIVIS dans historise-evcs.mjs : un aller-retour plus
// bref qu'un cycle du service ne se voit que par le `last_changed` de HA.
const txt = (s) => (s ?? '').toString().trim();
export const ETATS_ABSENTS = new Set(['', 'unavailable', 'unknown']);
// Transitions reelles entre `depuisIso` (exclu) et `jusquaIso` (inclus), en
// partant de l'etat `depart`. Les lectures indisponibles ne comptent pas.
// Pure (testee) : `serie` = reponse de /api/history/period pour une entite.
export function transitionsDansSerie(serie, depart, depuisIso, jusquaIso) {
const depuis = Date.parse(depuisIso), jusqua = Date.parse(jusquaIso);
const res = [];
let courant = depart;
for (const e of serie || []) {
const t = Date.parse(e.last_changed);
if (!(t > depuis && t <= jusqua)) continue;
const etat = txt(e.state);
if (ETATS_ABSENTS.has(etat) || etat === courant) continue;
res.push({ avant: courant, apres: etat, a: e.last_changed });
courant = etat;
}
return res;
}