feat: Demoanlage um Batterie und Tagesprofile erweitern

This commit is contained in:
dh
2026-09-22 14:43:36 +00:00
parent 2392a9c209
commit 98ee569178
3 changed files with 424 additions and 97 deletions
+46
View File
@@ -18,8 +18,12 @@ final class DemoanlageBootstrapTest extends TestCase
'boiler1' => 2400,
'boiler2' => 1500,
'dryer' => 900,
'buffer' => 1800,
'battery' => -1200,
'temp1' => 51.2,
'temp2' => 48.7,
'bufferTemp' => 39.4,
'batterySoc' => 63.5,
'manager' => 'PV',
]);
@@ -27,6 +31,9 @@ final class DemoanlageBootstrapTest extends TestCase
self::assertStringContainsString('Boiler 1', $html);
self::assertStringContainsString('Boiler 2', $html);
self::assertStringContainsString('Entfeuchter', $html);
self::assertStringContainsString('Pufferspeicher', $html);
self::assertStringContainsString('Batterie', $html);
self::assertStringContainsString('63,5 %', $html);
self::assertStringContainsString('Einspeisung', $html);
self::assertStringContainsString('12:30', $html);
}
@@ -105,6 +112,10 @@ final class DemoanlageBootstrapTest extends TestCase
self::assertStringContainsString('ENELIX_DEMO_DUMMY_MODULE', $source);
self::assertStringContainsString("'Boiler1Liste'", $source);
self::assertStringContainsString("'Boiler2Liste'", $source);
self::assertStringContainsString("'PufferListe'", $source);
self::assertStringContainsString("'BatterieListe'", $source);
self::assertStringContainsString('ENELIX_DEMO_BUFFER_MODULE', $source);
self::assertStringContainsString('ENELIX_DEMO_BATTERY_MODULE', $source);
self::assertStringContainsString("'EnergieflussPVkW'", $source);
self::assertStringContainsString("'~Power'", $source);
self::assertStringContainsString("'~Electricity'", $source);
@@ -120,6 +131,20 @@ final class DemoanlageBootstrapTest extends TestCase
"enelixDemoEnergyNode(\$flowDryer, 'Entfeuchter', 'consumer')",
$source
);
self::assertStringContainsString(
"enelixDemoEnergyNode(\$flowBuffer, 'Pufferspeicher', 'consumer', \$bufferTemp)",
$source
);
self::assertStringContainsString(
"enelixDemoEnergyNode(\$flowBattery, 'Batteriespeicher', 'battery', \$batterySoc)",
$source
);
self::assertStringContainsString(
"\$consumerIds = [\$boiler1, \$boiler2, \$dryer, \$buffer, \$battery]",
$source
);
self::assertStringContainsString("'consumerIds' => \$consumerIds", $source);
self::assertStringContainsString("'VerbraucherZuordnung' => '[]'", $source);
self::assertStringContainsString(
"enelixDemoEnsureChart(\$history, 'LeistungsdiagrammNativ'",
$source
@@ -135,6 +160,27 @@ final class DemoanlageBootstrapTest extends TestCase
);
}
public function testDynamischeUmgebungBleibtBegrenztUndVeraendertDenLastgang(): void
{
$static = enelixDemoEnvironment(12.0, 1000.0, 30, false);
self::assertSame(['base' => 1000.0, 'cloud' => 30.0, 'outside' => 6.0], $static);
$morning = enelixDemoEnvironment(7.5, 1000.0, 30, true);
$night = enelixDemoEnvironment(2.0, 1000.0, 30, true);
self::assertGreaterThan($night['base'], $morning['base']);
self::assertGreaterThanOrEqual(0.0, $morning['cloud']);
self::assertLessThanOrEqual(100.0, $morning['cloud']);
self::assertNotSame($morning['outside'], $night['outside']);
}
public function testBatterieregisterWerdenMitKorrektemVorzeichenAbgebildet(): void
{
self::assertSame(1500.0, enelixDemoBatteryRegisterPower(2, 11, 1500.0));
self::assertSame(-1500.0, enelixDemoBatteryRegisterPower(2, 12, 1500.0));
self::assertSame(0.0, enelixDemoBatteryRegisterPower(1, 11, 1500.0));
self::assertSame(0.0, enelixDemoBatteryRegisterPower(2, 0, 1500.0));
}
public function testRollbackIstExplizitBestaetigungspflichtig(): void
{
$this->expectException(RuntimeException::class);