fix(optimiseur): pas de puissances de cycle sous declared pour une borne (brief 4 T1)

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 <noreply@anthropic.com>
This commit is contained in:
Patrick Schurig 2026-10-16 16:21:48 +02:00
parent 50a1f91feb
commit 7044b4cd07
2 changed files with 5 additions and 5 deletions

View File

@ -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).

View File

@ -82,9 +82,7 @@
"adapter": "evcharger",
"declared": {
"maxA": 16,
"maxPowerW": 11040,
"minA": 6,
"minPowerW": 4140,
"phases": 3
},
"domain": "ev",