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 @@
-
Bloquer la décharge pendant la recharge du véhiculela maison continue - d'être servie ; seule la voiture ne l'est pas
+
Geler la batterie pendant la recharge du véhiculeplus rien n'est + déchargé, maison comprise
-
Un seul interrupteur, et c'est le seul cas qu'aucun rang ne peut - exprimer. « Charger l'eau chaude avant la batterie » se règle par le rang — il n'a - pas besoin d'un second réglage qui dirait la même chose autrement. Mais la nuit, il n'y a - pas de surplus à répartir : aucune position dans une file ne dit « ne vide pas la batterie - dans la voiture ».

- Pas de tableau de permissions charge par charge. Décider en général qui mérite d'être - servi par la batterie n'est pas un réglage d'installateur : c'est un arbitrage, et il - reviendra à Héos (l'optimiseur MILP) ou à une décision par le prix, quand l'un ou - l'autre existera. Offrir la question à la main aujourd'hui figerait dans un écran ce qui doit - se calculer.
+
Le libellé dit ce que le mécanisme fait, pas ce qu'on voudrait. + 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.

+ « Servir la maison mais pas la voiture » demanderait de plafonner + dischargingRate sur la consommation hors borne, recalculé à chaque + cycle — de la modulation continue, pas un interrupteur. Posé comme question au + moteur, pas dessiné ici.
+
Pourquoi c'est le seul réglage de décharge. « Charger l'eau chaude avant + la batterie » se règle par le rang, et n'a pas besoin d'un second réglage qui dirait la + même chose autrement. Décider en général qui mérite d'être servi par la batterie n'est + pas un réglage d'installateur : c'est un arbitrage, et il reviendra à Héos (optimiseur + MILP) ou à une décision par le prix. Offrir la question à la main figerait dans un écran ce qui + doit se calculer.
- +
-
Remonter le plancher après une nuit trop bassefaçon « Battery Life »
-
+
Ne jamais descendre sousl'arbitrage s'arrête là
+
20 %
-
À reprendre pour la bonne raison, pas par mimétisme. - Victron a conçu Battery Life pour du plomb : une batterie plomb laissée - partiellement déchargée se sulfate, d'où un plancher qui remonte tant qu'une recharge complète - n'a pas eu lieu. Sur du LFP, le problème traité n'existe quasiment pas — pas de - sulfatation, et un séjour à SOC bas n'abîme rien.

- Si ce mécanisme est repris, ce sera pour un autre motif à nommer explicitement (garder une - réserve de secours, lisser l'autonomie sur plusieurs jours gris). Le copier tel quel - importerait une contrainte de chimie que cette installation n'a pas.
+
≈ 2 kWh gardés sur 10 — de quoi tenir l'essentiel quelques heures. + Ce plancher ne bloque pas la charge, il borne la décharge.
+
Une préférence de risque, pas une optimisation — et c'est pour ça qu'elle + est ici. Combien d'autonomie garder pour une coupure ne se calcule pas : cela dépend de ce + que le client craint, de son congélateur, de son télétravail, de la fiabilité de son réseau + local. Héos ne pourra jamais le décider à sa place, quelle que soit la qualité de sa + prévision.

+ Ce n'est PAS « Battery Life ». Victron a conçu le sien pour du plomb : une + batterie plomb laissée partiellement déchargée se sulfate, d'où un plancher qui remonte tant + qu'une recharge complète n'a pas eu lieu. Sur du LFP, ce problème n'existe quasiment + pas — le copier tel quel importerait une contrainte de chimie que cette installation n'a + pas. Le plancher gardé ici a un autre motif, et il est nommé.
@@ -1128,10 +1137,25 @@
Terminé àheure de fin
06:00
+
+
Ne pas soutirer plus dechargingRate — plafond de puissance
+
3 kW
+
Ni prix, ni Tempo, ni marché de gros ici. Cet écran pose le mécanisme : soutirer au réseau une quantité donnée avant une heure donnée. Ce qui décide qu'il faut le faire reste dehors — le jour où une source tarifaire existera, elle remplacera le doigt de - l'utilisateur sans que ce bloc ne change.
+ l'utilisateur sans que ce bloc ne change.

+ Le plafond de puissance est le seul emploi de 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é. + + +
+ +
La batterie n'en a pas besoin, et c'est la seule charge dans ce + cas : elle publie 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.
Annuler
Enregistrer
@@ -1154,6 +1178,9 @@ que le rang ne sait pas dire ; l'arbitrage fin — qui mérite d'être servi par la batterie, et quand — reviendra à Héos ou à une décision par le prix. Un écran ne doit pas figer ce qui doit se calculer. +
  • Trois questions au moteur, plus quatre soulevées par la recharge accélérée, sont + écrites dans docs/BRIEF_plugin_depuis_maquettes.md — pas ici : ce sont des détails + techniques, pas de l'interface.
  • La charge différée n'est pas un réglage non plus — c'est une décision d'Héos. Démarrer assez tard pour arriver à 100 % juste avant la pointe suppose de savoir ce que le soleil va faire : sans prévision, ça ne marche pas, et une heure saisie à la main serait un pari @@ -1180,38 +1207,58 @@ style="font-size:10.5px;color:var(--muted2)">6,4 / 10 kWh
    -
    ⚡Vider dans le véhicule
    +
    ⚡Recharge accélérée
    - Pleine puissance, tout de suite. C'est le seul cas où la batterie est une source et - non une charge — d'où sa place ici, sur un geste immédiat, et non dans les réglages. + Charger la voiture plus vite que l'abonnement ne le permet. Le compteur est limité à + 6 kVA ; la borne peut monter à 7,5. La batterie comble l'écart — le réseau fournit ce + qu'il a le droit de fournir, la maison prend le reste sur son stock, et le disjoncteur ne + saute pas.
    -
    S'arrête àcible sur la batterie maison
    +
    Puissance de charge viséece que la borne délivre à la voiture
    +
    7,5 kW
    +
    +
    Réseau 6,0 kW (abonnement) + + batterie 1,5 kW (complément) — la batterie ne fixe pas la cible, elle bouche le + trou.
    +
    +
    Sans descendre sousgarde-fou, pas objectif
    20 %
    Ou au bout dedurée maximale
    45 min
    -
    Il doit finir tout seul. Cible atteinte, durée écoulée, ou véhicule - débranché — jamais « jusqu'à annulation ». Un transfert sans fin vide une maison - pendant que personne ne regarde, et l'écran qui l'a lancé n'est plus là pour le dire.
    +
    Trois fins, toutes obligatoires : la voiture a atteint sa + cible — c'est la fin normale, celle qu'on vise —, la durée est écoulée, ou le véhicule + est débranché. Le plancher batterie est un garde-fou, pas un objectif : on ne cherche + pas à vider la batterie, on cherche à finir la charge plus tôt. + Jamais « jusqu'à annulation » — un transfert sans fin court pendant que personne ne + regarde.
    -
    Boost — hors Configurer
    +
    Recharge accélérée — hors Configurer
    geste immédiat, pas un réglage
    - Un réglage décrit une intention durable ; ceci est une action ponctuelle avec un effet immédiat et + Un réglage décrit une intention durable ; ceci est une action ponctuelle, avec un effet immédiat et visible. La mettre dans « Configurer » la rendrait introuvable au moment où on la veut, et persistante alors qu'elle ne doit pas l'être.