fix(ladestation): Regeluebergaenge stabilisieren
Tests / test (push) Successful in 50s

This commit is contained in:
dh
2026-10-01 13:01:32 +00:00
parent 8357e8dfab
commit 3ce9af4244
11 changed files with 427 additions and 119 deletions
+37 -5
View File
@@ -361,7 +361,18 @@ return static function (TestContext $test): void {
'amp=6'
), 'Solarladen: Der 6-A-Befehl fehlt. Erhalten: ' . $befehl . '; Diagnose: ' . $diagnose);
$befehlVorUmschaltung = $befehl;
IPS_RequestAction($stationId, 'Solarladen', false);
$test->assertSame(
$befehlVorUmschaltung,
(string) GetValue($test->objectByIdent('LetzterGeraetebefehl', $stationId)),
'Die Umschaltung darf vor der neuen Manager-Vorgabe keinen Zwischenwert setzen.'
);
$test->assertSame(
4104,
GetValue($test->objectByIdent('Sollleistung', $stationId)),
'Die Sollleistung muss bis zur neuen Manager-Vorgabe stabil bleiben.'
);
$angebot = (string) GetValue($test->objectByIdent('LeistungsangebotDiagnose', $stationId));
$test->assertSame('[10944]', $angebot, 'PV ohne Solarladen muss nur das Maximum anbieten.');
$abgewiesen = false;
@@ -422,7 +433,7 @@ return static function (TestContext $test): void {
));
});
$test->runCase('Neue Ladestation wird erst nach Freigabe mit Maximalstrom erkannt', static function (
$test->runCase('Neue Ladestation wird erst nach Freigabe mit Mindeststrom erkannt', static function (
TestContext $test
) use ($phasenerkennung, $anforderungSenden): void {
$stationId = $phasenerkennung;
@@ -432,8 +443,8 @@ return static function (TestContext $test): void {
);
$test->assertTrue(!str_contains(
(string) GetValue($test->objectByIdent('LetzterGeraetebefehl', $stationId)),
'amp=16'
), 'Eine inaktive Station darf keine Maximalstrom-Probe starten.');
'amp=6'
), 'Eine inaktive Station darf keine Phasenprobe starten.');
IPS_RequestAction($stationId, 'Aktiv', true);
@@ -443,8 +454,8 @@ return static function (TestContext $test): void {
);
$test->assertTrue(str_contains(
(string) GetValue($test->objectByIdent('LetzterGeraetebefehl', $stationId)),
'amp=16'
), 'Nach der Freigabe muss die Maximalstrom-Probe starten.');
'amp=6'
), 'Nach der Freigabe muss die Mindeststrom-Phasenprobe starten.');
IPS_Sleep(2100);
IPS_RequestAction($stationId, 'Statuszyklus', false);
@@ -472,4 +483,25 @@ return static function (TestContext $test): void {
(string) GetValue($test->objectByIdent('LeistungsangebotDiagnose', $stationId))
);
});
$test->runCase('Leistungswerte und Fahrzeugstatus folgen ihrer Sichtbarkeitsgruppe', static function (
TestContext $test
) use ($stationen): void {
$stationId = $stationen['go-e alt'];
IPS_SetProperty($stationId, 'EinstellungenInVisu', true);
IPS_SetProperty($stationId, 'DiagnosevariablenAnzeigen', false);
IPS_ApplyChanges($stationId);
$test->assertTrue(@IPS_GetObjectIDByIdent('Istleistung', $stationId) !== false);
$test->assertTrue(@IPS_GetObjectIDByIdent('Sollleistung', $stationId) !== false);
$test->assertSame(false, @IPS_GetObjectIDByIdent('Fahrzeugstatus', $stationId));
IPS_SetProperty($stationId, 'EinstellungenInVisu', false);
IPS_SetProperty($stationId, 'DiagnosevariablenAnzeigen', true);
IPS_ApplyChanges($stationId);
$test->assertSame(false, @IPS_GetObjectIDByIdent('Istleistung', $stationId));
$test->assertSame(false, @IPS_GetObjectIDByIdent('Sollleistung', $stationId));
$test->assertTrue(@IPS_GetObjectIDByIdent('Fahrzeugstatus', $stationId) !== false);
});
};