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:
24
tools/allers-retours.mjs
Normal file
24
tools/allers-retours.mjs
Normal 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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user