L energie du compteur cesse de porter treize decimales de bruit
`energie_compteur_kwh` vaut la difference de deux releves du compteur cumulatif de la borne, proches de 3 800 kWh : en double precision la soustraction rend « 0.8000000000001819 » pour une mesure dont la resolution est de 0,1 kWh. Arrondi a l ecriture, au millieme, plutot que de laisser chaque lecteur s en charger. Signale par la session OpenClaw en calibrant son module de detection sur la table. Cosmetique pour la logique, mais ce projet a deja paye le prix de la fausse precision affichee comme une mesure. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user