feat(control): connect physical feedback to bounded V4 command and fallback paths
This commit is contained in:
@@ -78,6 +78,8 @@ trait ManagerNetzfahrplanV4TestTrait
|
||||
'expiresAt' => $until, 'maxChargeW' => NetzfahrplanV4Regeltest::number($request['maxChargeW'] ?? null, 'Testladegrenze', 1, 5000),
|
||||
'maxDischargeW' => NetzfahrplanV4Regeltest::number($request['maxDischargeW'] ?? null, 'Testentladegrenze', 1, 5000),
|
||||
'actuatorWatchdogEvidenceId' => IPS_GetProperty($batteryID, 'NetzfahrplanV4GeraeteWatchdogNachweis'),
|
||||
'feedbackConfigHash' => $op['localFeedback'][$a['assetId']]['configHash'] ?? '',
|
||||
'gridLimits' => NetzfahrplanV4Planpruefung::kontext($op)['limits'],
|
||||
'sequence' => 1, 'lastWallClockAt' => $now,
|
||||
'monotonicDeadline' => hrtime(true) / 1e9 + $until - $now];
|
||||
// Validate everything BEFORE arming either module. This rejects all normal shadow replies.
|
||||
@@ -156,6 +158,7 @@ trait ManagerNetzfahrplanV4TestTrait
|
||||
}
|
||||
if (!$found) throw new RuntimeException('Testbatterie nicht mehr in aktiver Zuordnung.');
|
||||
$op['gridW'] += $otherDelta;
|
||||
$op['localPredictedOtherDeltaW']=$otherDelta;
|
||||
if (!is_array($envelope['response'] ?? null) || !is_int($envelope['receivedAt'] ?? null)) {
|
||||
throw new RuntimeException('Kein gueltiger empfangener Testkontext.');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user