diff --git a/docs/CHANTIER_BILAN_ENERGETIQUE.md b/docs/CHANTIER_BILAN_ENERGETIQUE.md index 9d0d79a..fef7145 100644 --- a/docs/CHANTIER_BILAN_ENERGETIQUE.md +++ b/docs/CHANTIER_BILAN_ENERGETIQUE.md @@ -315,6 +315,116 @@ a servi (`courbe_horaire_api` ou `repli_enveloppe`). Elle garde par ailleurs un rôle de repère de vraisemblance, **sans écrêtage** : étant minorée l'après-midi, elle tronquerait à tort une prévision correcte. +## 25/08/2026 — Première nuit observée, et le défaut qu'elle a révélé + +### Ce que la nuit a fait + +| Heure | Événement | +|---|---| +| 01:24 | Fenêtre HC : EDF ON, charge du véhicule (P7) | +| 02:42 | Fin de charge détectée → `night_recovery_done_idle`, EDF coupé en 3 s | +| 02:44 → 02:45 | Véhicule débranché puis rebranché (93 s) | +| 02:47 → 04:25 | Seconde charge, 98 min ; puis EDF coupé | +| 06:22 → 06:49 | **EDF rallumé**, batterie 33 → 35 %, coupé | +| 07:02 → 07:27 | **EDF rallumé**, batterie 33 → 35 %, coupé | + +Import réseau : **12,30 kWh**, dont 11,11 kWh entre 01 h et 04 h pour les +véhicules (l'EVCS en a pris 9,57) et **1,19 kWh entre 06 h et 07 h sans aucun +véhicule en charge**. + +Les mécanismes de fin de charge ont fonctionné : détection franche à 02:42, +coupure immédiate, et P11 a correctement remis à zéro la mémoire « plein » au +rebranchement de 02:45 — le second véhicule a bien été rechargé. + +### Le quatrième oscillateur + +Les deux cycles de 06:22 et 07:02 sont un oscillateur de plus, de la même +famille que les trois du 24/08. La cible du matin +(`batteryMorningTargetPct` = 35 %) libère le takeover à `SOC > cible` et le +réarme à `SOC ≤ cible − 2`. Entre 33 et 35 %, avec une maison qui tire ~0,7 kWh/h +et une production encore nulle, la batterie traverse la bande en une vingtaine +de minutes : période mesurée ~35 min, deux cycles complets. + +Ce n'est **pas** le seuil `grid_soc_off` de l'hystérésis (30 %) : à 33 % il +n'était pas en cause. C'est la cible du matin de l'EVCS. Et 35 % est une valeur +de table (règle « prévision forte → 35 »), pas un besoin calculé — le bilan, +une fois corrigé, demandait **31 %**. + +### Le défaut de mesure que cette nuit a mis au jour + +Le bilan annonçait à 06 h qu'il fallait **3,37 kWh** pour tenir jusqu'au +croisement. La consommation réelle sur cette tranche a été de 2,2 kWh, la +production de 0,85 : **1,35 kWh**. Deux fois et demie trop. + +L'erreur ne venait pas du modèle mais de l'attribution horaire. +`bucketHourly` garde la dernière valeur de chaque heure ; le delta entre H−1 et +H est donc l'énergie dépensée **pendant H**. `deltaSeries` le rangeait sous +H−1. + +Sur un compteur qui émet en continu, cela décale le profil d'une heure — gênant, +pas grave. Mais **les compteurs de cette installation sont épars** : +`ac_in_1_to_ac_out` ne peuple que **57 heures sur 267**, `evcs_total` 57 sur 264, +parce qu'ils n'émettent que lorsqu'ils avancent. Une heure vide veut dire +« valeur inchangée », donc zéro énergie : toute l'énergie d'un intervalle à trou +a été consommée pendant l'heure **finale**, celle qui a réveillé le compteur. +Rangée sous l'heure initiale, elle atterrissait n'importe où. + +Mesuré : `consumption_p50[8] = 2,90 kWh/h` pour 0,80 réellement consommé. Six +échantillons sur douze portaient un delta étalé sur **17 heures** — l'import +réseau de la nuit suivante, déposé sur la dernière heure de la nuit précédente. +Le profil du matin était ainsi gonflé de l'import qu'il servait justement à +éviter : le bilan réclamait du réseau parce qu'il avait pris du réseau la veille. + +Corrigé : le delta se range sous `hours[i]`. Profil du matin après correction — +0,7 kWh/h de 01 h à 07 h, 0,8 à 08 h — conforme aux 0,74 kWh/h mesurés ce +matin-là. Avec ce profil, le bilan aurait demandé **31 % à 06 h** contre 34 % +réels : pas de réseau. Sans les 1,19 kWh importés, la batterie serait descendue +à ~24 %, au-dessus du plancher dur de 22 % — mais de 2 points seulement. + +**Troisième correction du même chiffre.** L'enveloppe de production subissait le +même décalage : la part matinale de la production était donc surestimée une +troisième fois, après le plafond `inverter_size` et après le biais max/moyenne +de l'enveloppe. Le pic de l'enveloppe passe de 11 h à 12 h. Aucune conclusion du +chantier ne change, mais le chiffre « 39,3 % du matin » doit être considéré comme +définitivement abandonné. + +### Statut `degrade` + +La nuit précédant la mise en service de la courbe horaire, le bilan a publié un +SOC requis de **100 %** avec un statut `ok`, faute de croisement trouvé sur +l'horizon. Il publie désormais `degrade` dans ce cas et quand les heures de +déficit reposent sur une forme minorée : les chiffres restent visibles, mais +plus présentés comme fiables. Un futur câblage ne pourra pas s'y fier par +inadvertance. + +### Ce que la prévision, elle, a très bien fait + +Courbe horaire Forecast.Solar contre production mesurée, ce matin : + +| Heure | Prévu | Mesuré | +|---|---:|---:| +| 07 h | 0,08 kWh | 0,10 kWh | +| 08 h | 0,85 kWh | 0,75 kWh | +| 09 h | 3,07 kWh | 2,72 kWh | + +Les trois plans réels et l'abonnement Professional donnent une ressource +utilisable telle quelle. **Le côté production du bilan est fiable ; c'était le +côté consommation qui mentait.** + +### Suite + +Le candidat évident au prochain câblage réel n'est plus l'hystérésis mais la +**cible SOC du matin** : c'est elle qui a coûté 1,19 kWh cette nuit, et le +toggle qui permettrait de la piloter existe déjà +(`input_boolean.evcs_advisor_apply_night_target`). À décider après quelques +nuits d'observation du seuil calculé contre le seuil de table. + +⚠️ Ce toggle porte `initial: off` dans son package : **tout redémarrage de Home +Assistant le repositionne à OFF**, quelle que soit la valeur choisie par +l'utilisateur. C'est voulu pour un câblage réel en période d'essai, mais il faut +le savoir — et le retirer le jour où le câblage sera adopté. + + ## Backlog - [ ] **Doublon `unique_id: victron_vebus_dc_power`** — déclaré deux fois, avec diff --git a/docs/MANUEL_COMPLET.md b/docs/MANUEL_COMPLET.md index f9898d5..53d3d70 100644 --- a/docs/MANUEL_COMPLET.md +++ b/docs/MANUEL_COMPLET.md @@ -57,7 +57,11 @@ inclinaison 25°, 15 000 Wc, et un `inverter_size` de 8 000 W alors que l'installation a déjà produit **10 770 W** mesurés — le plafond tronque donc toute prévision. Résultat : la prévision attend une journée orientée l'après-midi (15,1 % de l'énergie entre 7 h et 11 h) là où l'installation -produit le matin (39,3 % mesurés). +produit le matin. ⚠️ Le chiffre de « 39,3 % mesurés » cité dans les premières +versions de cette section est **abandonné** : il reposait sur une enveloppe qui +surpondère structurellement le matin, et sur une attribution horaire décalée +d'une heure (corrigée le 25/08, voir `docs/CHANTIER_BILAN_ENERGETIQUE.md`). Le +défaut de configuration était réel, son ampleur a été surestimée. **Correction à appliquer** (interface HA, voir §0bis) : quatre plans.