This commit is contained in:
@@ -44,9 +44,33 @@ return static function (TestContext $test): void {
|
||||
]
|
||||
);
|
||||
|
||||
$pufferTemperaturId = $test->createVariable(2, 'Puffertemperatur', 52.0);
|
||||
$aussenTemperaturId = $test->createVariable(2, 'Aussentemperatur', 5.0);
|
||||
$pufferKontakte = [
|
||||
$test->createActionVariable('Pufferspeicher Stufe 1'),
|
||||
$test->createActionVariable('Pufferspeicher Stufe 2'),
|
||||
];
|
||||
$pufferspeicherId = $test->createInstance(
|
||||
'{C92D5EEF-9632-47A5-9659-4B02BF40FBE9}',
|
||||
'Pufferspeicher',
|
||||
[
|
||||
'PufferfuehlerVariableID' => $pufferTemperaturId,
|
||||
'AussentemperaturVariableID' => $aussenTemperaturId,
|
||||
'LeistungsStufen' => json_encode([
|
||||
['Stufe' => 1, 'Leistung' => 1000, 'Schaltkontakt_Stufe' => $pufferKontakte[0]],
|
||||
['Stufe' => 2, 'Leistung' => 2000, 'Schaltkontakt_Stufe' => $pufferKontakte[1]],
|
||||
], JSON_THROW_ON_ERROR),
|
||||
'LastwechselSperrzeit' => 0,
|
||||
'PrioritaetPV' => 2,
|
||||
'PrioritaetPeak' => 2,
|
||||
'DiagnosevariablenAnzeigen' => true,
|
||||
]
|
||||
);
|
||||
|
||||
$zuordnung = [
|
||||
['InstanzID' => $einStufigId, 'Aktiv' => true],
|
||||
['InstanzID' => $warmwasserId, 'Aktiv' => true],
|
||||
['InstanzID' => $pufferspeicherId, 'Aktiv' => true],
|
||||
];
|
||||
$lizenzcode = trim((string) getenv('ENELIX_TEST_LICENSE_CODE'));
|
||||
$managerId = $test->createInstance(
|
||||
@@ -67,8 +91,8 @@ return static function (TestContext $test): void {
|
||||
]
|
||||
);
|
||||
|
||||
$melden = static function () use ($einStufigId, $warmwasserId): void {
|
||||
foreach ([$einStufigId, $warmwasserId] as $instanzId) {
|
||||
$melden = static function () use ($einStufigId, $warmwasserId, $pufferspeicherId): void {
|
||||
foreach ([$einStufigId, $warmwasserId, $pufferspeicherId] as $instanzId) {
|
||||
IPS_RequestAction($instanzId, 'Aktiv', true);
|
||||
IPS_RequestAction($instanzId, 'Melden', true);
|
||||
}
|
||||
@@ -77,10 +101,12 @@ return static function (TestContext $test): void {
|
||||
$netzleistungId,
|
||||
$managerId,
|
||||
$einStufigId,
|
||||
$warmwasserId
|
||||
$warmwasserId,
|
||||
$pufferspeicherId
|
||||
): void {
|
||||
IPS_RequestAction($einStufigId, 'Melden', true);
|
||||
IPS_RequestAction($warmwasserId, 'Melden', true);
|
||||
IPS_RequestAction($pufferspeicherId, 'Melden', true);
|
||||
SetValue($netzleistungId, $netzleistung);
|
||||
IPS_RequestAction($managerId, 'Regeln', true);
|
||||
};
|
||||
@@ -88,6 +114,8 @@ return static function (TestContext $test): void {
|
||||
(bool) GetValue($einKontaktId),
|
||||
(bool) GetValue($warmKontakte[0]),
|
||||
(bool) GetValue($warmKontakte[1]),
|
||||
(bool) GetValue($pufferKontakte[0]),
|
||||
(bool) GetValue($pufferKontakte[1]),
|
||||
];
|
||||
$warteAufKontakte = static function (array $erwartet, string $schritt) use (
|
||||
$test,
|
||||
@@ -150,20 +178,20 @@ return static function (TestContext $test): void {
|
||||
|
||||
$test->runCase('Manager und alle vorhandenen Verbrauchertypen sind verknüpft', static function (
|
||||
TestContext $test
|
||||
) use ($managerId, $einStufigId, $warmwasserId, $melden): void {
|
||||
) use ($managerId, $einStufigId, $warmwasserId, $pufferspeicherId, $melden): void {
|
||||
IPS_RequestAction($managerId, 'Aktiv', true);
|
||||
$melden();
|
||||
IPS_RequestAction($managerId, 'Regeln', true);
|
||||
|
||||
foreach ([$managerId, $einStufigId, $warmwasserId] as $instanzId) {
|
||||
foreach ([$managerId, $einStufigId, $warmwasserId, $pufferspeicherId] as $instanzId) {
|
||||
$test->assertInstanceStatus($instanzId);
|
||||
}
|
||||
$test->assertSame(
|
||||
2,
|
||||
3,
|
||||
GetValue($test->objectByIdent('VerbraucherAnzahl', $managerId))
|
||||
);
|
||||
$test->assertSame(
|
||||
2,
|
||||
3,
|
||||
GetValue($test->objectByIdent('VerbraucherVerfuegbar', $managerId))
|
||||
);
|
||||
});
|
||||
@@ -172,22 +200,22 @@ return static function (TestContext $test): void {
|
||||
TestContext $test
|
||||
) use ($managerId, $regeln, $warteAufKontakte): void {
|
||||
$regeln(-3000.0);
|
||||
$warteAufKontakte([true, false, true], 'Netz -3000 W');
|
||||
$warteAufKontakte([true, false, true, false, false], 'Netz -3000 W');
|
||||
$test->assertSame('PV', GetValue($test->objectByIdent('Betriebsart', $managerId)));
|
||||
|
||||
$regeln(-1000.0);
|
||||
$warteAufKontakte([true, false, true], 'Netz -1000 W');
|
||||
$warteAufKontakte([true, false, true, false, false], 'Netz -1000 W');
|
||||
$regeln(0.0);
|
||||
$warteAufKontakte([true, false, true], 'Netz 0 W');
|
||||
$warteAufKontakte([true, false, true, false, false], 'Netz 0 W');
|
||||
|
||||
IPS_Sleep(1100);
|
||||
$regeln(1000.0);
|
||||
$warteAufKontakte([true, true, false], 'Netz +1000 W');
|
||||
$warteAufKontakte([false, false, false, false, false], 'Netz +1000 W');
|
||||
$test->assertSame('Peak', GetValue($test->objectByIdent('Betriebsart', $managerId)));
|
||||
|
||||
IPS_Sleep(1100);
|
||||
$regeln(3000.0);
|
||||
$warteAufKontakte([false, false, false], 'Netz +3000 W');
|
||||
$warteAufKontakte([false, false, false, false, false], 'Netz +3000 W');
|
||||
});
|
||||
|
||||
$test->runCase('Keep-alive ist aktiv und erneuert unveränderte Sollwerte', static function (
|
||||
@@ -216,7 +244,7 @@ return static function (TestContext $test): void {
|
||||
$melden();
|
||||
IPS_RequestAction($managerId, 'Regeln', false);
|
||||
$daten = $verbraucherstatus();
|
||||
$test->assertSame(2, count($daten['Verbraucher'] ?? []));
|
||||
$test->assertSame(3, count($daten['Verbraucher'] ?? []));
|
||||
|
||||
SetValue($temperaturId, 53.0);
|
||||
$test->waitUntil(static function () use (
|
||||
|
||||
Reference in New Issue
Block a user