[Majeur] Unités des buckets site non validées (risque silencieux de facteur ×1000) #85

Open
opened 2026-08-26 05:32:40 +00:00 by mat · 0 comments
Owner

Problème

La voie device infère l'unité Wh/kWh par ratio (_server_bucket_to_wh, coordinator.py:137-176) — le code lui-même documente que les unités sont mélangées par device et que l'API n'expose aucun champ unité (coordinator.py:740-746).

La voie site (coordinator.py:590-602) fold en revanche la valeur brute dans state.totals sans aucun passage par cette validation, en supposant « site = toujours Wh ».

Risque

Si une seule série site (production, injection…) est en kWh, le capteur site_X_<metric>_total_energy (ENERGY, TOTAL_INCREASING) est faux d'un facteur 1000 — silencieusement, avec le seed de 8 jours d'historique erroné dans le dashboard Énergie.

Recommandation

  1. Appliquer la même validation par ratio côté site : comparer le bucket QUANTITY à la série FLOW site de la même heure (déjà récupérée via coordinator.py:421-425).
  2. À défaut : check de cohérence croisée site vs somme des devices réconciliés, avec warning si écart > x %.
  3. En dernier recours : documenter la vérification terrain qui a confirmé « site = toujours Wh ».

Constaté lors de la review de code pré-v1.0 (v0.8.1).

## Problème La voie **device** infère l'unité Wh/kWh par ratio (`_server_bucket_to_wh`, `coordinator.py:137-176`) — le code lui-même documente que les unités sont mélangées par device et que l'API n'expose aucun champ unité (`coordinator.py:740-746`). La voie **site** (`coordinator.py:590-602`) fold en revanche la valeur **brute** dans `state.totals` sans aucun passage par cette validation, en supposant « site = toujours Wh ». ## Risque Si une seule série site (production, injection…) est en kWh, le capteur `site_X_<metric>_total_energy` (ENERGY, TOTAL_INCREASING) est faux d'un facteur 1000 — silencieusement, avec le seed de 8 jours d'historique erroné dans le dashboard Énergie. ## Recommandation 1. Appliquer la même validation par ratio côté site : comparer le bucket QUANTITY à la série FLOW site de la même heure (déjà récupérée via `coordinator.py:421-425`). 2. À défaut : check de cohérence croisée site vs somme des devices réconciliés, avec warning si écart > x %. 3. En dernier recours : documenter la vérification terrain qui a confirmé « site = toujours Wh ». --- Constaté lors de la review de code pré-v1.0 (v0.8.1).
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
mat/homeassistant-comwatt#85
No description provided.