This commit is contained in:
@@ -184,6 +184,58 @@ return static function (TestContext $test): void {
|
||||
$test->assertInstanceStatus($station);
|
||||
});
|
||||
|
||||
$test->runCase('Solarumschaltung wartet auf die neue Manager-Vorgabe', static function (
|
||||
TestContext $test
|
||||
) use ($station): void {
|
||||
$managerId = $test->createInstance(
|
||||
'{6F771B18-59D4-4C8A-B951-3B2FE9F6A2C4}',
|
||||
'Hilfsmanager Easee-Uebergang',
|
||||
[
|
||||
'AutomatischeSuche' => false,
|
||||
'VerbraucherZuordnung' => json_encode([
|
||||
['InstanzID' => $station, 'Aktiv' => true],
|
||||
], JSON_THROW_ON_ERROR),
|
||||
]
|
||||
);
|
||||
$sendeSollwert = static function (int $leistung) use ($managerId, $station): void {
|
||||
IPS_RequestAction($station, 'ManagerdatenEmpfangen', json_encode([
|
||||
'Kopf' => [
|
||||
'Version' => '4.0',
|
||||
'AbsenderID' => $managerId,
|
||||
'EmpfaengerID' => $station,
|
||||
'Zeitpunkt' => time(),
|
||||
],
|
||||
'Betriebsart' => 'PV',
|
||||
'Sollleistung_W' => $leistung,
|
||||
], JSON_THROW_ON_ERROR));
|
||||
};
|
||||
|
||||
$sendeSollwert(4104);
|
||||
$befehlVorUmschaltung = (string) GetValue(
|
||||
$test->objectByIdent('LetzterGeraetebefehl', $station)
|
||||
);
|
||||
IPS_RequestAction($station, 'Solarladen', false);
|
||||
|
||||
$test->assertSame(
|
||||
$befehlVorUmschaltung,
|
||||
(string) GetValue($test->objectByIdent('LetzterGeraetebefehl', $station))
|
||||
);
|
||||
$test->assertSame(
|
||||
4104,
|
||||
GetValue($test->objectByIdent('Sollleistung', $station)),
|
||||
'Die Sollleistung muss bis zur neuen Manager-Vorgabe stabil bleiben.'
|
||||
);
|
||||
|
||||
$sendeSollwert(10944);
|
||||
$test->assertTrue(str_contains(
|
||||
(string) GetValue($test->objectByIdent('LetzterGeraetebefehl', $station)),
|
||||
'"Ampere":16'
|
||||
));
|
||||
|
||||
IPS_RequestAction($station, 'Solarladen', true);
|
||||
$sendeSollwert(0);
|
||||
});
|
||||
|
||||
$test->runCase('SignalR-Abbruch erreicht die Ladestation', static function (
|
||||
TestContext $test
|
||||
) use ($gateway, $station): void {
|
||||
@@ -226,4 +278,24 @@ return static function (TestContext $test): void {
|
||||
);
|
||||
$test->assertInstanceStatus($station, 202);
|
||||
});
|
||||
|
||||
$test->runCase('Leistungswerte und Fahrzeugstatus folgen ihrer Sichtbarkeitsgruppe', static function (
|
||||
TestContext $test
|
||||
) use ($station): void {
|
||||
IPS_SetProperty($station, 'EinstellungenInVisu', true);
|
||||
IPS_SetProperty($station, 'DiagnosevariablenAnzeigen', false);
|
||||
IPS_ApplyChanges($station);
|
||||
|
||||
$test->assertTrue(@IPS_GetObjectIDByIdent('Istleistung', $station) !== false);
|
||||
$test->assertTrue(@IPS_GetObjectIDByIdent('Sollleistung', $station) !== false);
|
||||
$test->assertSame(false, @IPS_GetObjectIDByIdent('Fahrzeugstatus', $station));
|
||||
|
||||
IPS_SetProperty($station, 'EinstellungenInVisu', false);
|
||||
IPS_SetProperty($station, 'DiagnosevariablenAnzeigen', true);
|
||||
IPS_ApplyChanges($station);
|
||||
|
||||
$test->assertSame(false, @IPS_GetObjectIDByIdent('Istleistung', $station));
|
||||
$test->assertSame(false, @IPS_GetObjectIDByIdent('Sollleistung', $station));
|
||||
$test->assertTrue(@IPS_GetObjectIDByIdent('Fahrzeugstatus', $station) !== false);
|
||||
});
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user