This commit is contained in:
@@ -133,6 +133,7 @@ PHP
|
||||
'GoodWe-Entladen verwendet negativen Managerwert und Modus 12',
|
||||
static function (TestContext $test) use (
|
||||
$managerdatenSenden,
|
||||
$batterieID,
|
||||
$modusID,
|
||||
$leistungID
|
||||
): void {
|
||||
@@ -141,6 +142,10 @@ PHP
|
||||
static fn (): bool => (float) GetValue($leistungID) === 843.0
|
||||
&& (int) GetValue($modusID) === 12
|
||||
);
|
||||
$test->assertSame(-843, GetValue($test->objectByIdent('Sollleistung', $batterieID)));
|
||||
IPS_RequestAction($batterieID, 'VorgabeTimeout', 0);
|
||||
$test->assertSame(false, GetValue($test->objectByIdent('SollwertGueltig', $batterieID)));
|
||||
$test->assertSame(0, GetValue($test->objectByIdent('Sollleistung', $batterieID)));
|
||||
}
|
||||
);
|
||||
|
||||
@@ -197,6 +202,7 @@ PHP
|
||||
$leistungID
|
||||
): void {
|
||||
$test->configureInstance($batterieID, ['Batteriemanagement' => 1]);
|
||||
$test->assertSame(0, GetValue($test->objectByIdent('Sollleistung', $batterieID)));
|
||||
$test->waitUntil(
|
||||
static fn (): bool => (float) GetValue($leistungID) === 0.0
|
||||
&& (int) GetValue($managementID) === 1
|
||||
|
||||
@@ -186,7 +186,7 @@ return static function (TestContext $test): void {
|
||||
|
||||
$test->runCase('Solarumschaltung wartet auf die neue Manager-Vorgabe', static function (
|
||||
TestContext $test
|
||||
) use ($station): void {
|
||||
) use ($station, $sendeBeobachtung): void {
|
||||
$managerId = $test->createInstance(
|
||||
'{6F771B18-59D4-4C8A-B951-3B2FE9F6A2C4}',
|
||||
'Hilfsmanager Easee-Uebergang',
|
||||
@@ -221,10 +221,11 @@ return static function (TestContext $test): void {
|
||||
(string) GetValue($test->objectByIdent('LetzterGeraetebefehl', $station))
|
||||
);
|
||||
$test->assertSame(
|
||||
4104,
|
||||
0,
|
||||
GetValue($test->objectByIdent('Sollleistung', $station)),
|
||||
'Die Sollleistung muss bis zur neuen Manager-Vorgabe stabil bleiben.'
|
||||
'Die verworfene Manager-Vorgabe darf nicht als aktuelle Sollleistung stehen bleiben.'
|
||||
);
|
||||
$test->assertSame(false, GetValue($test->objectByIdent('SollwertGueltig', $station)));
|
||||
|
||||
$sendeSollwert(10944);
|
||||
$test->assertTrue(str_contains(
|
||||
@@ -234,6 +235,25 @@ return static function (TestContext $test): void {
|
||||
|
||||
IPS_RequestAction($station, 'Solarladen', true);
|
||||
$sendeSollwert(0);
|
||||
$test->assertSame(true, GetValue($test->objectByIdent('SollwertGueltig', $station)));
|
||||
$test->assertSame(0, GetValue($test->objectByIdent('Sollleistung', $station)));
|
||||
|
||||
$sendeSollwert(10944);
|
||||
$sendeBeobachtung('EH123456', 109, 1);
|
||||
$test->assertSame('[0]', GetValue($test->objectByIdent('LeistungsangebotDiagnose', $station)));
|
||||
$test->assertSame(false, GetValue($test->objectByIdent('SollwertGueltig', $station)));
|
||||
$test->assertSame(0, GetValue($test->objectByIdent('Sollleistung', $station)));
|
||||
$test->assertTrue(str_contains(
|
||||
(string) GetValue($test->objectByIdent('LetzterGeraetebefehl', $station)),
|
||||
'"Ampere":0'
|
||||
));
|
||||
|
||||
$sendeBeobachtung('EH123456', 110, 30);
|
||||
$sendeBeobachtung('EH123456', 109, 3);
|
||||
$sendeSollwert(10944);
|
||||
IPS_RequestAction($station, 'VorgabeTimeout', 0);
|
||||
$test->assertSame(false, GetValue($test->objectByIdent('SollwertGueltig', $station)));
|
||||
$test->assertSame(0, GetValue($test->objectByIdent('Sollleistung', $station)));
|
||||
});
|
||||
|
||||
$test->runCase('SignalR-Abbruch erreicht die Ladestation', static function (
|
||||
|
||||
@@ -387,10 +387,11 @@ return static function (TestContext $test): void {
|
||||
'Die Umschaltung darf vor der neuen Manager-Vorgabe keinen Zwischenwert setzen.'
|
||||
);
|
||||
$test->assertSame(
|
||||
4104,
|
||||
0,
|
||||
GetValue($test->objectByIdent('Sollleistung', $stationId)),
|
||||
'Die Sollleistung muss bis zur neuen Manager-Vorgabe stabil bleiben.'
|
||||
'Die verworfene Manager-Vorgabe darf nicht als aktuelle Sollleistung stehen bleiben.'
|
||||
);
|
||||
$test->assertSame(false, GetValue($test->objectByIdent('SollwertGueltig', $stationId)));
|
||||
$angebot = (string) GetValue($test->objectByIdent('LeistungsangebotDiagnose', $stationId));
|
||||
$test->assertSame('[10944]', $angebot, 'PV ohne Solarladen muss nur das Maximum anbieten.');
|
||||
$abgewiesen = false;
|
||||
@@ -502,6 +503,29 @@ return static function (TestContext $test): void {
|
||||
);
|
||||
});
|
||||
|
||||
$test->runCase('Abziehen und Vorgabe-Timeout hinterlassen keine alte Sollleistung', static function (
|
||||
TestContext $test
|
||||
) use ($stationen, $goEAntwort, $anforderungSenden): void {
|
||||
$stationId = $stationen['go-e alt'];
|
||||
IPS_SetProperty($stationId, 'Testantwort', $goEAntwort(2, 10944, [160, 160, 160]));
|
||||
IPS_ApplyChanges($stationId);
|
||||
IPS_RequestAction($stationId, 'Aktiv', true);
|
||||
IPS_RequestAction($stationId, 'Solarladen', true);
|
||||
$anforderungSenden($stationId, 10944);
|
||||
$test->assertSame(10944, GetValue($test->objectByIdent('Sollleistung', $stationId)));
|
||||
|
||||
IPS_RequestAction($stationId, 'VorgabeTimeout', 0);
|
||||
$test->assertSame(false, GetValue($test->objectByIdent('SollwertGueltig', $stationId)));
|
||||
$test->assertSame(0, GetValue($test->objectByIdent('Sollleistung', $stationId)));
|
||||
|
||||
$anforderungSenden($stationId, 10944);
|
||||
IPS_SetProperty($stationId, 'Testantwort', $goEAntwort(1, 0));
|
||||
IPS_ApplyChanges($stationId);
|
||||
$test->assertSame('[0]', GetValue($test->objectByIdent('LeistungsangebotDiagnose', $stationId)));
|
||||
$test->assertSame(false, GetValue($test->objectByIdent('SollwertGueltig', $stationId)));
|
||||
$test->assertSame(0, GetValue($test->objectByIdent('Sollleistung', $stationId)));
|
||||
});
|
||||
|
||||
$test->runCase('Leistungswerte und Fahrzeugstatus folgen ihrer Sichtbarkeitsgruppe', static function (
|
||||
TestContext $test
|
||||
) use ($stationen): void {
|
||||
|
||||
@@ -105,6 +105,7 @@ return static function (TestContext $test): void {
|
||||
$test->assertSame(false, GetValue($test->objectByIdent('Heizbedarf', $verbraucherId)));
|
||||
|
||||
SetValue($pufferId, 55.0);
|
||||
$test->assertSame(0, GetValue($test->objectByIdent('Sollleistung', $verbraucherId)));
|
||||
IPS_RequestAction($verbraucherId, 'Melden', true);
|
||||
$test->assertSame([false, false], $kontaktzustand());
|
||||
});
|
||||
|
||||
@@ -225,4 +225,18 @@ return static function (TestContext $test): void {
|
||||
) === false);
|
||||
$test->assertInstanceStatus($verbraucherId);
|
||||
});
|
||||
|
||||
$test->runCase('Deaktivierung verwirft eine positive Vorgabe vollstaendig', static function (
|
||||
TestContext $test
|
||||
) use ($verbraucherId, $anforderungSenden): void {
|
||||
IPS_SetProperty($verbraucherId, 'Mindestlaufzeit', 0);
|
||||
IPS_SetProperty($verbraucherId, 'Mindesteinschaltdauer', 0);
|
||||
IPS_SetProperty($verbraucherId, 'Mindestausschaltdauer', 0);
|
||||
IPS_ApplyChanges($verbraucherId);
|
||||
$anforderungSenden(1200);
|
||||
$test->assertSame(1200, GetValue($test->objectByIdent('Sollleistung', $verbraucherId)));
|
||||
IPS_RequestAction($verbraucherId, 'Aktiv', false);
|
||||
$test->assertSame(false, GetValue($test->objectByIdent('SollwertGueltig', $verbraucherId)));
|
||||
$test->assertSame(0, GetValue($test->objectByIdent('Sollleistung', $verbraucherId)));
|
||||
});
|
||||
};
|
||||
|
||||
@@ -121,6 +121,8 @@ return static function (TestContext $test): void {
|
||||
TestContext $test
|
||||
) use ($waermepumpe, $kontakt1, $kontakt2): void {
|
||||
IPS_RequestAction($waermepumpe, 'Aktiv', false);
|
||||
$test->assertSame(false, GetValue($test->objectByIdent('SollwertGueltig', $waermepumpe)));
|
||||
$test->assertSame(0, GetValue($test->objectByIdent('Sollleistung', $waermepumpe)));
|
||||
IPS_RequestAction($waermepumpe, 'Aktiv', true);
|
||||
$test->waitUntil(
|
||||
static fn (): bool => GetValue($kontakt1) === false
|
||||
|
||||
@@ -110,6 +110,33 @@ return static function (TestContext $test): void {
|
||||
$temperaturSetzen(52.0);
|
||||
});
|
||||
|
||||
$test->runCase('Abgelaufene Vorgabe wird auch in der Anzeige verworfen', static function (
|
||||
TestContext $test
|
||||
) use ($verbraucherId, $managerId, $kontakte): void {
|
||||
IPS_SetProperty($verbraucherId, 'VorgabeTimeout', 1);
|
||||
IPS_ApplyChanges($verbraucherId);
|
||||
IPS_RequestAction($verbraucherId, 'Aktiv', true);
|
||||
IPS_RequestAction($verbraucherId, 'ManagerdatenEmpfangen', json_encode([
|
||||
'Kopf' => [
|
||||
'Version' => '4.0',
|
||||
'AbsenderID' => $managerId,
|
||||
'EmpfaengerID' => $verbraucherId,
|
||||
'Zeitpunkt' => time(),
|
||||
],
|
||||
'Betriebsart' => 'PV',
|
||||
'Sollleistung_W' => 1000,
|
||||
], JSON_THROW_ON_ERROR));
|
||||
$test->assertSame(1000, GetValue($test->objectByIdent('Sollleistung', $verbraucherId)));
|
||||
IPS_Sleep(2100);
|
||||
IPS_RequestAction($verbraucherId, 'Melden', true);
|
||||
$test->assertSame(false, GetValue($test->objectByIdent('SollwertGueltig', $verbraucherId)));
|
||||
$test->assertSame(0, GetValue($test->objectByIdent('Sollleistung', $verbraucherId)));
|
||||
$test->waitUntil(static fn (): bool => GetValue($kontakte[0]) === false);
|
||||
IPS_RequestAction($verbraucherId, 'Aktiv', false);
|
||||
IPS_SetProperty($verbraucherId, 'VorgabeTimeout', 120);
|
||||
IPS_ApplyChanges($verbraucherId);
|
||||
});
|
||||
|
||||
if ($lizenzcode === '') {
|
||||
$test->runCase('Manager bleibt ohne Lizenz sicher gesperrt', static function (
|
||||
TestContext $test
|
||||
|
||||
Reference in New Issue
Block a user