29 lines
1.5 KiB
JavaScript
29 lines
1.5 KiB
JavaScript
// Energie du chauffe-eau sur 24 h (07/10/2026), pour la regle « jour faible :
|
|
// eau chaude en HC de nuit » du workflow Water Heater Advisor ECS 6 Nodes :
|
|
// moins de 1,5 kWh en 24 h -> il chauffe quand meme (securite eau chaude).
|
|
// Somme des HAUSSES du compteur cumule : une remise a zero ou une lecture
|
|
// indisponible ne cree ni energie negative ni saut.
|
|
export const COMPTEUR_CHAUFFE_EAU = 'sensor.tt_chauffe_eau_pleumeur_energie_totale';
|
|
|
|
// Energie depuis `depuisMs` (meme regle : somme des hausses ; le point juste
|
|
// avant la borne sert de reference).
|
|
export function energieDepuis(serie, depuisMs) {
|
|
const pts = (serie || []).map((e) => [Date.parse(e.last_changed), Number.parseFloat(e.state)])
|
|
.filter(([t, v]) => Number.isFinite(t) && Number.isFinite(v));
|
|
if (!pts.length) return null;
|
|
let ref = null; const apres = [];
|
|
for (const p of pts) { if (p[0] <= depuisMs) ref = p; else apres.push(p); }
|
|
const vals = (ref ? [ref, ...apres] : apres).map((p) => p[1]);
|
|
let kwh = 0;
|
|
for (let i = 1; i < vals.length; i++) if (vals[i] > vals[i - 1]) kwh += vals[i] - vals[i - 1];
|
|
return Math.round(kwh * 100) / 100;
|
|
}
|
|
|
|
export function energieSur24h(serie) {
|
|
const vals = (serie || []).map((e) => Number.parseFloat(e.state)).filter(Number.isFinite);
|
|
if (!vals.length) return null; // compteur illisible sur 24 h : on ne dit rien
|
|
let kwh = 0;
|
|
for (let i = 1; i < vals.length; i++) if (vals[i] > vals[i - 1]) kwh += vals[i] - vals[i - 1];
|
|
return Math.round(kwh * 100) / 100;
|
|
}
|