From 7044b4cd07560aea5f57169352acc2d20a1e11b6 Mon Sep 17 00:00:00 2001 From: Patrick Schurig Date: Fri, 16 Oct 2026 16:21:48 +0200 Subject: [PATCH] fix(optimiseur): pas de puissances de cycle sous declared pour une borne (brief 4 T1) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pour une borne, LoadDeclared::minPowerW/maxPowerW sont recalculés à chaque cycle par EvAdapter::toLoadContext (phases visées, limite de phase) : ce ne sont pas des valeurs de plaque, et le §5.3 réserve `declared` à ce que l'installateur a saisi. Ils ne sont plus émis ; l'exemple du protocole n'en porte pas non plus. `phases` (champ 1.0) reste émis, mais il porte lui aussi les phases VISÉES : écart E26, proposition de correction du protocole dans le rapport T1/T5. Golden site-pv-ecs-borne-sgready : seules les deux clés disparaissent. Co-Authored-By: Claude Opus 5.5 --- energyplugin/etm/scheduler/optimizerprotocol.cpp | 8 +++++--- .../data/optimizer/site-pv-ecs-borne-sgready.json | 2 -- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/energyplugin/etm/scheduler/optimizerprotocol.cpp b/energyplugin/etm/scheduler/optimizerprotocol.cpp index f3074c7..994d192 100644 --- a/energyplugin/etm/scheduler/optimizerprotocol.cpp +++ b/energyplugin/etm/scheduler/optimizerprotocol.cpp @@ -47,10 +47,12 @@ QVariantMap declared(const LoadContext &lc) if (lc.adapter == QLatin1String("evcharger")) { out.insert(QStringLiteral("minA"), d.minA); out.insert(QStringLiteral("maxA"), d.maxA); + // Champ 1.0 conservé, mais le contexte y porte les phases VISÉES ce cycle + // (EvAdapter::toLoadContext), pas les phases disponibles du §5.3 : écart E26. out.insert(QStringLiteral("phases"), d.phases); - // Le plancher et le plafond du cycle en W (phases VISÉES, limite de phase comprise). - out.insert(QStringLiteral("minPowerW"), d.minPowerW); - out.insert(QStringLiteral("maxPowerW"), d.maxPowerW); + // PAS de minPowerW/maxPowerW : pour une borne, ils sont RECALCULÉS à chaque cycle + // (phases visées, limite de phase) — ce ne sont pas des valeurs de plaque, et `declared` + // ne porte que ce que l'installateur a saisi (§5.3). Écart E26. } else if (piloteeEnWatts(lc.adapter)) { // minPowerW = 0 est une valeur (« aucun plancher », LM-1200), pas une inconnue. // `powerLevels` n'est pas émis : le protocole ne le décrit pas (écart E9). diff --git a/tests/auto/loadmodel/data/optimizer/site-pv-ecs-borne-sgready.json b/tests/auto/loadmodel/data/optimizer/site-pv-ecs-borne-sgready.json index e4615ab..1804211 100644 --- a/tests/auto/loadmodel/data/optimizer/site-pv-ecs-borne-sgready.json +++ b/tests/auto/loadmodel/data/optimizer/site-pv-ecs-borne-sgready.json @@ -82,9 +82,7 @@ "adapter": "evcharger", "declared": { "maxA": 16, - "maxPowerW": 11040, "minA": 6, - "minPowerW": 4140, "phases": 3 }, "domain": "ev",