diff --git a/tools/historise-evcs.mjs b/tools/historise-evcs.mjs index 34e7f83..fc10008 100644 --- a/tools/historise-evcs.mjs +++ b/tools/historise-evcs.mjs @@ -742,9 +742,15 @@ async function ecrireSession(sql, client, st) { const station = num(g('sensor.evcs_hq2239dnt7p_last_session_energy')?.state); const dureeBorne = num(g('sensor.evcs_hq2239dnt7p_last_session_time')?.state); const compteur = num(g('sensor.evcs_hq2239dnt7p_total_energy')?.state); + // Le compteur de la borne a une resolution de 0,1 kWh. La soustraction + // de deux nombres proches de 3 800 en double precision rend + // « 0.8000000000001819 » : treize decimales de fausse precision sur une + // mesure qui n'en a qu'une. On arrondit a l'ECRITURE plutot que de + // laisser chaque lecteur le faire — signale par la session OpenClaw le + // 13/09 en lisant la table. const parCompteur = compteur !== null && ouverte.compteur_debut_kwh !== null && compteur >= ouverte.compteur_debut_kwh - ? compteur - Number(ouverte.compteur_debut_kwh) : null; + ? Math.round((compteur - Number(ouverte.compteur_debut_kwh)) * 1000) / 1000 : null; await sql( `UPDATE session_charge SET terminee = true, energie_station_kwh = $2, energie_compteur_kwh = $3, duree_borne_min = $4