diff --git a/docs/BRIEF_plugin_depuis_maquettes.md b/docs/BRIEF_plugin_depuis_maquettes.md index 60ed1db..3708aa3 100644 --- a/docs/BRIEF_plugin_depuis_maquettes.md +++ b/docs/BRIEF_plugin_depuis_maquettes.md @@ -2,6 +2,111 @@ --- +## 2026-08-27 (soir) — la batterie comme charge : sept questions + +**Origine** : la maquette « Configurer · Batterie », septième colonne de +`docs/mockups/configurer_mecanismes_mockup.html`. Elle a été écrite en supposant la réponse +« oui » à la question du billet précédent — *le stockage est-il une charge arbitrable ?* — +puis rétrécie quatre fois. Ce qui reste à l'écran est ce qu'aucun calcul ne peut décider à la +place de l'installateur ; **tout le reste est ci-dessous, et c'est chez vous.** + +Rien de ce qui suit n'est dessiné dans l'interface. Ce sont des détails techniques. + +--- + +### A. Les trois questions de mécanisme + +**A1 — Bloquer demande un INTERDIT ACTIF, pas une allocation à zéro.** La batterie agit +d'elle-même : l'onduleur charge sans qu'on le lui demande. Ne rien lui allouer ne l'empêche +donc de rien — il faut lui dire `enableCharging = false`. C'est une différence de nature avec +toutes les autres charges du waterfall, où « 0 W alloué » suffit à ce qu'il ne se passe rien. + +**A2 — Cet interdit doit EXPIRER.** Un HEMS qui tombe après avoir posé +`enableCharging = false` laisse une batterie inerte, sans que rien ne le signale et sans que +personne ne sache pourquoi. Il faut un **bail à durée limitée**, renouvelé tant que l'arbitre +vit. **L'état sûr d'un stockage, c'est « il fait ce qu'il ferait sans nous », pas « il reste +sur le dernier ordre reçu ».** + +**A3 — `controlHealthy == false` doit SORTIR la batterie de l'arbitrage**, comme +`available == false` sort une charge en défaut. L'état existe déjà sur la classe. Une +batterie qu'on croit piloter et qui ne répond plus fausse le budget en silence — exactement +ce que faisait le double commandeur des bornes avant 3g-2. + +--- + +### B. Ce que la recharge accélérée soulève, et qui est entièrement de votre ressort + +Le « boost » a changé de nature en cours de maquette, et c'est ce changement qui rend ces +questions nécessaires. **Ce n'est pas « vider la batterie dans la voiture »** : c'est +*charger la voiture plus vite que l'abonnement ne le permet*. Un client en 6 kVA veut charger +à 7,5 ; le réseau fournit 6, la batterie comble l'écart, le disjoncteur ne saute pas. + +> **C'est le délestage de LM-1006-1 vu par l'autre bout.** Le délestage applique un plafond +> de soutirage en **réduisant les charges** pour tenir dessous ; ici on tient sous le même +> plafond en **complétant par la batterie**. Même objet, même plafond, même arbitre — à +> écrire comme un cas du mécanisme existant, **pas comme un mécanisme parallèle**. + +**B1 — La boucle est trop lente pour le transitoire, et il faut l'assumer.** L'arbitre tourne +à la minute ; un disjoncteur saute en secondes. Raser le plafond est donc exclu : il faut une +**marge assumée**, et elle doit se dimensionner **contre le pire démarrage de charge non +pilotée entre deux cycles** — un four ou une plaque, soit 2 à 3 kW qui apparaissent sans +prévenir. + +**Conséquence honnête, à écrire quelque part plutôt qu'à découvrir sur le terrain** : avec un +abonnement 6 kVA, le gain réel de la recharge accélérée est de **un à deux kilowatts, pas de +1,5 garanti**. L'écran affiche « 6,0 + 1,5 » comme une illustration ; le moteur devra dire ce +qu'il peut vraiment tenir. + +**B2 — Le filet de sécurité n'est pas la batterie, c'est la BORNE.** Elle est pilotable et +rapide. Si la consommation grimpe, on **descend le courant de charge** ; la batterie ne fait +que le complément stable. C'est plus sûr que de compter sur l'onduleur pour rattraper, et +**le HEMS sait déjà le faire** — c'est le même geste que l'arbitrage EV ordinaire. + +**B3 — À MESURER sur le banc, et ça conditionne tout le reste :** avec quelle latence le +Fronius applique une consigne de décharge ? Si c'est **plusieurs secondes**, la batterie ne +tient qu'un **régime établi** et ne rattrape aucun transitoire — auquel cas la marge de B1 +doit couvrir la totalité du pire démarrage, et B2 n'est plus une précaution mais la seule +protection réelle. + +**B4 — Corollaire de la même famille : `chargingRate` a le même emploi à l'envers.** Une +charge de batterie depuis le réseau à pleine puissance sur un abonnement 6 kVA fait sauter le +disjoncteur au premier four allumé. Le plafond de soutirage vaut donc dans les deux sens, et +c'est un argument de plus pour que ce soit **un seul mécanisme**. + +--- + +### C. Une question d'interface, et elle vient d'un défaut que nous avons failli livrer + +**`enableDischarging` est binaire, et l'onduleur ne sait pas qui tire** — il voit une +consommation nette. Notre maquette portait le libellé *« la maison continue d'être servie ; +seule la voiture ne l'est pas »*. **C'est faux** : coupé, le réfrigérateur passe au réseau +comme la voiture. Le libellé est corrigé en « geler la batterie », qui décrit ce qui se passe. + +**La question qui reste** : « servir la maison mais pas la voiture » demanderait de plafonner +`dischargingRate` sur la consommation **hors borne**, recalculée à chaque cycle — de la +modulation continue, pas un interrupteur. **Est-ce que ça a un sens de l'écrire, ou est-ce +que le mécanisme ne le permet pas proprement ?** Nous ne dessinerons pas le réglage tant que +la réponse n'est pas connue : c'est exactement la classe de défaut que nous traquons depuis +trois jours — un écran qui promet ce que la box ne sait pas faire. + +--- + +### Ce que l'écran garde, pour que vous sachiez ce qui vous revient + +Après quatre passes de retrait, `Configurer · Batterie` ne porte plus que : le **nom**, le +**rang** (en lecture seule — il se règle par glisser-déposer dans la liste, comme toutes les +autres charges), l'**état réel**, l'**interrupteur de décharge** ci-dessus, un **plancher de +secours** (combien d'autonomie garder pour une coupure — une préférence de risque, pas une +optimisation), et la **charge depuis le réseau** en manuel. + +Sont sortis de l'écran, et vous reviennent : le **tableau de permissions par charge** +(arbitrage → Héos ou décision par le prix) et la **charge différée sur prévision** (sans +prévision, elle ne se règle pas — elle se calcule). + +--- + +--- + ## 2026-08-27 — QUESTION : le stockage est-il une charge arbitrable ? **Origine** : une demande de Patrick, formulée simplement — *« si je veux que l'énergie aille diff --git a/docs/mockups/configurer_mecanismes_mockup.html b/docs/mockups/configurer_mecanismes_mockup.html index 9f51b2e..552c516 100644 --- a/docs/mockups/configurer_mecanismes_mockup.html +++ b/docs/mockups/configurer_mecanismes_mockup.html @@ -1082,37 +1082,46 @@
enableDischarging est binaire, et l'onduleur ne sait pas qui tire — il voit
+ une consommation nette. Coupé, la maison n'est plus servie non plus : le réfrigérateur passe au
+ réseau comme la voiture.dischargingRate sur la consommation hors borne, recalculé à chaque
+ cycle — de la modulation continue, pas un interrupteur. Posé comme question au
+ moteur, pas dessiné ici.chargingRate dans cet écran, et il
+ a le même motif que le boost, à l'envers : ne pas dépasser ce qu'on a le droit de
+ soutirer. Charger 6 kWh en pleine nuit à pleine puissance sur un abonnement 6 kVA ferait
+ sauter le disjoncteur au premier four allumé.
+
+
+ currentPower elle-même. Le bloc est dit ici plutôt qu'omis en
+ silence comme dans les cinq autres écrans — une absence expliquée n'est pas un oubli.docs/BRIEF_plugin_depuis_maquettes.md — pas ici : ce sont des détails
+ techniques, pas de l'interface.enableDischarging + dischargingRate — déjà
- déclarés par la classe.enableDischarging + dischargingRate — déjà déclarés par la
+ classe. Le dimensionnement de la marge, la latence de l'onduleur et le rôle de filet de la borne
+ sont des questions moteur, écrites dans le brief, pas dessinées ici.