3 Commits

Author SHA1 Message Date
Patrick Schurig
3cb79f5918 feat(etm): règle d'arrondi etmvariableload dans le waterfall + infra de test
RuleBasedScheduler : buildSetpointAction (contrat rév. 2 §5) — fixed = arrondi au plus
haut powerLevels ≤ budget ; dynamic = clamp(budget, 0, maxPowerW) ; recrédit currentPowerW
de DÉBUT de cycle (invariant 8) ; résidu cascadé. Waterfall unifié : etmvariableload
(Setpoint W) + sg-ready (State) triés par priorité, un seul budget.

EnergyArbitrator : registerEtmVariableLoadAdapter, inclusion dans buildContext, dispatch
Setpoint par loadId (l'EV reste au proxy amont).

Infra de test : ThingClass mock etmVariableLoad (currentPowerW read / powerSetpoint write)
+ handler executeAction + helper addEtmVariableLoad — valide l'implémentabilité de
l'interface avant le thing réel. Les scénarios simulation migrés arrivent en T4.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 09:47:58 +02:00
Patrick Schurig
a471a23aeb [3c-7a] mock powerswitch + helpers energytestbase
ThingClass mockPowerSwitch (interface power : power bool writable + currentPower
double, params port/nominalPower) pour piloter l'EcsRelayAdapter en test.
setupThing + executeAction (power → état + currentPower dérivé du nominal, override
HTTP possible). energytestbase : mockPowerSwitchThingClassId + addPowerSwitch()
+ setPowerSwitchStates(). Cascade N paliers = N instances (matériel réel).
Build mock (-Werror) + binaire de test : 0 erreur / 0 warning.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 18:11:01 +02:00
b343650f9b initial commit 2026-01-11 11:09:23 +01:00