Etude de la frontiere de l excedent : la voiture est un delestage, pas une charge

Integration de l historique HA sur 8 jours : 64% de l energie livree au
vehicule vient d un excedent reel, 16% sort de la reserve batterie. La
frontiere se ferme entre 18h30 et 19h50 fin aout, franchement.

Cote reserve nocturne, le bilan repond deja et il repond mal a notre
avantage : sept jours sur huit, meme pleine, la batterie ne passe pas la
nuit. Le deficit est structurel, ce qui est evitable c est de l aggraver.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
This commit is contained in:
Tallagrand Thierry
2026-09-01 00:49:13 +02:00
parent fc49e6c31a
commit 92f07fe885
2 changed files with 354 additions and 0 deletions

View File

@@ -599,3 +599,129 @@ Ordre de travail qui en découle, avant tout câblage :
- [ ] **États zombies** `stop_source_lost` / `idle_wait_source` — noms
transitoires peu lisibles dans le journal et le tableau de bord (cf. HANDOFF
§24, hors périmètre à l'époque).
## 01/09/2026 — La frontière de l'excédent, mesurée sur 8 jours
Question du propriétaire : faut-il charger la voiture le soir ? Avec la règle
qu'il pose et qui gouverne désormais le sujet — **la voiture est un délestage de
l'excédent PV, pas une charge prioritaire qui vide les batteries solaires**, et
la frontière se détecte à la **puissance de décharge batterie**, pas à la
production PV ni à un seuil de SOC.
### Méthode
`tools/etude-frontiere-excedent.mjs` intègre l'historique HA (résolution native
~2 s, rétention 90 jours effective depuis le 24/08 — vérifié) et répartit
l'énergie **réellement livrée au véhicule**, instant par instant, entre trois
origines physiques :
```
batterie : min(P_evcs, décharge batterie) -> réserve entamée
réseau : min(reste, import réseau) -> énergie payante
excédent : le solde -> production qui aurait été
refusée ou simplement stockée
```
Aucune écriture, aucune décision : le script lit et intègre. Convention
d'attribution assumée : sans la voiture, la décharge batterie aurait été
réduite d'au plus `P_evcs` — l'attribution est donc une borne haute honnête de
ce que la voiture a coûté à la réserve.
### Ce que les 8 jours disent (24/08 → 31/08)
| | kWh | part |
|---|---:|---:|
| Livré au véhicule | 80,13 | 100 % |
| dont **excédent** | 51,18 | **64 %** |
| dont **batterie** | 13,22 | **16 %** |
| dont réseau (HC nuit, voulu) | 15,73 | 20 % |
Part d'excédent par heure, cumul sur la période :
| h | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | **19** | **20** |
|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|
| part excédent | 94 % | 99 % | 86 % | 80 % | 83 % | 90 % | 77 % | 92 % | 81 % | **38 %** | **4 %** |
**La frontière existe, elle est franche, et elle tombe entre 18 h 30 et 19 h 50**
(heure du dernier instant où le véhicule chargeait sans faire décharger la
batterie) :
| jour | fermeture | SOC max du jour |
|---|---|---:|
| 24/08 | 19:26 | 95 % |
| 25/08 | 19:29 | 95 % |
| 28/08 | 19:50 | 93 % |
| 29/08 | 18:47 | 94 % |
| 30/08 | 18:31 | 94 % |
| 31/08 | 20:06 (0 % d'excédent) | 95 % |
### Pourquoi la charge de journée, elle, est gratuite
La batterie **sature à 93-96 % tous les jours**. L'énergie détournée vers la
voiture entre 10 h et 18 h n'a donc coûté aucune réserve : le plateau était
atteint de toute façon, et la production au-delà était refusée (§ censure). Ce
n'est vrai que *tant que la batterie sature* — c'est le second terme de la
règle, et c'est lui qui bougera avec la saison.
### Le coût réel de la charge du soir
13,22 kWh pris à la réserve sur 8 jours, soit **1,65 kWh/jour**, rachetés au
réseau la nuit suivante — avec en plus le rendement aller-retour de la batterie
(~10 %) et un cycle de charge/décharge pour rien. Le tarif est le même (HC dans
les deux cas) : le surcoût est purement en pertes et en usure. Autrement dit,
charger le soir sur la batterie **revient à charger la voiture au réseau, en
plus cher et en abîmant le parc**.
### La deuxième question : combien garder pour la nuit ?
Elle est déjà résolue, et pas par un seuil. Le bilan publie
`evcs_balance_next_deficit_kwh` et `..._required_soc` — l'énergie de la
prochaine traversée déficitaire et le niveau à atteindre avant. Validation du
26/08 : point bas de la nuit prédit **à un point de SOC près sur douze heures**.
Mesure à 18 h, SOC requis pour franchir la nuit **sans réseau** :
| 24/08 | 25/08 | 26/08 | 27/08 | 28/08 | 29/08 | 30/08 | 31/08 |
|---:|---:|---:|---:|---:|---:|---:|---:|
| 113,7 % | 119,4 % | 22,3 % ⚠️ | 114,3 % | 112,9 % | 112,3 % | 109,5 % | 117,9 % |
**Sept jours sur huit, même pleine, la batterie ne passe pas la nuit.** Déficit
structurel de 10 à 20 points, soit 1,5 à 3 kWh — c'est `storage_shortfall_kwh`,
le chiffre du dimensionnement, et il concorde avec les 11,8 kWh/jour jetés faute
de puits. L'import de nuit n'est donc pas évitable aujourd'hui ; ce qui est
évitable, c'est de l'**aggraver** en vidant la réserve le soir.
⚠️ Le 22,3 % du 26/08 est à vérifier (statut du bilan ce jour-là) avant d'être
cité.
### La règle qui en découle — deux termes, tous deux mesurés
```
charger le véhicule <=> (a) la batterie ne se décharge pas pour le nourrir
ET (b) elle atteindra quand même le niveau exigé par la
prochaine traversée déficitaire
```
- **(a)** est instantané, physique, déjà mesuré (`battery_power`), et se pilote
en asservissement : monter le courant tant que la batterie ne décharge pas,
redescendre dès qu'elle décharge. Ce n'est pas un seuil, c'est un servo.
- **(b)** est le bilan, déjà calculé toutes les 5 minutes
(`nextDeficit.reachable`). C'est lui qui portera la saison : quand les jours
raccourciront, la batterie cessera de saturer et (b) se fermera de lui-même,
de plus en plus tôt — sans qu'aucune constante n'ait à être touchée.
Ce couple remplace `batteryAssistSolarStartOk` (SOC ≥ 90), `soc_start_min`,
`midday_soc_min` et les planchers de profil : tous sont des mandataires de « la
production est refusée », justes à midi et faux au crépuscule.
### L'étude longue : rien à instrumenter
Constat utile : **l'historique HA suffit**. 2 s de résolution sur les puissances,
90 jours de rétention, et le bilan qui publie ses helpers toutes les 5 minutes
depuis le 24/08. La grandeur à suivre semaine après semaine est l'**heure de
fermeture de la frontière** et le **SOC max du jour** ; 8 jours ne montrent
aucune dérive saisonnière exploitable — il en faut plusieurs semaines, ce qui
est précisément l'objet de l'étude.
Bénéfice second, non cherché : les mêmes relevés donnent la courbe
énergie ↔ point de SOC par bande, c'est-à-dire le point (a) de l'ordre de
travail du 26/08, qui bloque tout câblage de la cible du matin.