feat(manager): Energieaufzeichnung und Visualisierungen integrieren
Tests / test (push) Successful in 47s
Tests / test (push) Successful in 47s
This commit is contained in:
@@ -5,7 +5,10 @@ declare(strict_types=1);
|
||||
use Belevo\EnelixEMS\SymconTest\TestContext;
|
||||
|
||||
return static function (TestContext $test): void {
|
||||
$netzleistungId = $test->createVariable(2, 'Netzleistung', 0.0);
|
||||
$netzleistungId = $test->createVariable(2, 'Netzleistung', -800.0);
|
||||
$pvLeistungId = $test->createVariable(2, 'PV-Leistung', 4200.0);
|
||||
$batterieLeistungId = $test->createVariable(2, 'Batterieleistung', 700.0);
|
||||
$batterieSocId = $test->createVariable(2, 'Batterie-Ladezustand', 62.0);
|
||||
$einKontaktId = $test->createActionVariable('Kontakt Verbraucher 1-Stufig');
|
||||
$einStufigId = $test->createInstance(
|
||||
'{15879A4E-D0C2-4495-83DE-46E1E462591E}',
|
||||
@@ -79,6 +82,8 @@ return static function (TestContext $test): void {
|
||||
'ACNennleistung_kW' => 10.0,
|
||||
'ACEinspeisegrenze_kW' => 8.0,
|
||||
'ACBezugsgrenze_kW' => 0.0,
|
||||
'IstleistungVariableID' => $pvLeistungId,
|
||||
'Istleistungsfaktor' => 1.0,
|
||||
]];
|
||||
$pvKonfiguration = [[
|
||||
'ID' => 'pv-1',
|
||||
@@ -100,6 +105,9 @@ return static function (TestContext $test): void {
|
||||
'MaxEntladeleistung_kW' => 5.0,
|
||||
'WechselrichterID' => 'hybrid-1',
|
||||
'Kopplung' => 'hybrid',
|
||||
'LeistungVariableID' => $batterieLeistungId,
|
||||
'Leistungsfaktor' => 1.0,
|
||||
'SOCVariableID' => $batterieSocId,
|
||||
]];
|
||||
$lizenzcode = trim((string) getenv('ENELIX_TEST_LICENSE_CODE'));
|
||||
$managerId = $test->createInstance(
|
||||
@@ -107,6 +115,10 @@ return static function (TestContext $test): void {
|
||||
'Manager',
|
||||
[
|
||||
'NetzleistungVariableID' => $netzleistungId,
|
||||
'EnergyPieAnzeigen' => true,
|
||||
'EnergiediagrammeAnzeigen' => true,
|
||||
'FunFactsAnzeigen' => true,
|
||||
'EnergieflussAnzeigen' => true,
|
||||
'Lizenzcode' => $lizenzcode,
|
||||
'AutomatischeSuche' => false,
|
||||
'VerbraucherZuordnung' => json_encode($zuordnung, JSON_THROW_ON_ERROR),
|
||||
@@ -214,6 +226,80 @@ return static function (TestContext $test): void {
|
||||
$test->assertSame(['pv-1'], $topologie['sharedAcLimits'][0]['pvArrayIds'] ?? null);
|
||||
$test->assertSame(['bat-1'], $topologie['sharedAcLimits'][0]['batteryIds'] ?? null);
|
||||
});
|
||||
$test->runCase('Energiewerte, Archivregeln und Unterobjekte werden erzeugt', static function (
|
||||
TestContext $test
|
||||
) use ($managerId): void {
|
||||
IPS_RequestAction($managerId, 'MesswerteAufzeichnen', true);
|
||||
$test->assertSame(
|
||||
4200.0,
|
||||
GetValue($test->objectByIdent('PVLeistungArchiv', $managerId))
|
||||
);
|
||||
$test->assertSame(
|
||||
2700.0,
|
||||
GetValue($test->objectByIdent('HausverbrauchLeistungArchiv', $managerId))
|
||||
);
|
||||
$test->assertSame(
|
||||
-800.0,
|
||||
GetValue($test->objectByIdent('NetzleistungArchiv', $managerId))
|
||||
);
|
||||
$test->assertSame(
|
||||
700.0,
|
||||
GetValue($test->objectByIdent('BatterieleistungArchiv', $managerId))
|
||||
);
|
||||
|
||||
$archive = IPS_GetInstanceListByModuleID(
|
||||
'{43192F0B-135B-4CE7-A0A7-1475603F3060}'
|
||||
);
|
||||
$test->assertTrue($archive !== []);
|
||||
$archivID = (int) $archive[0];
|
||||
$leistungID = $test->objectByIdent('PVLeistungArchiv', $managerId);
|
||||
$energieID = $test->objectByIdent('PVEnergie', $managerId);
|
||||
$test->assertSame(true, AC_GetLoggingStatus($archivID, $leistungID));
|
||||
$test->assertSame(0, AC_GetAggregationType($archivID, $leistungID));
|
||||
$test->assertSame(1, AC_GetAggregationType($archivID, $energieID));
|
||||
|
||||
foreach (['Leistungsdiagramm', 'Energiediagramm'] as $ident) {
|
||||
$medienID = $test->objectByIdent($ident, $managerId);
|
||||
$test->assertSame(4, (int) IPS_GetMedia($medienID)['MediaType']);
|
||||
}
|
||||
$html = (string) GetValue($test->objectByIdent('EnergieFunFacts', $managerId));
|
||||
$test->assertTrue(str_contains($html, 'Solar'));
|
||||
$test->assertTrue(str_contains($html, 'Netz & Haus'));
|
||||
$energieflussID = $test->objectByIdent('Energiefluss', $managerId);
|
||||
$test->assertSame(
|
||||
'{BA90FDB3-C203-8F26-B4D6-F3DB99905724}',
|
||||
IPS_GetInstance($energieflussID)['ModuleInfo']['ModuleID']
|
||||
);
|
||||
|
||||
IPS_RequestAction($managerId, 'FormEnergieflussAnzeigen', false);
|
||||
$test->assertSame(true, (bool) IPS_GetObject($energieflussID)['ObjectIsHidden']);
|
||||
IPS_RequestAction($managerId, 'FormEnergieflussAnzeigen', true);
|
||||
$test->assertSame(false, (bool) IPS_GetObject($energieflussID)['ObjectIsHidden']);
|
||||
|
||||
foreach ([
|
||||
'EnergyPieAnzeigen',
|
||||
'EnergiediagrammeAnzeigen',
|
||||
'FunFactsAnzeigen',
|
||||
'EnergieflussAnzeigen',
|
||||
] as $property) {
|
||||
IPS_SetProperty($managerId, $property, false);
|
||||
}
|
||||
IPS_ApplyChanges($managerId);
|
||||
foreach ([
|
||||
'EnergyPie',
|
||||
'Leistungsdiagramm',
|
||||
'Energiediagramm',
|
||||
'EnergieFunFacts',
|
||||
] as $ident) {
|
||||
$test->assertSame(
|
||||
false,
|
||||
@IPS_GetObjectIDByIdent($ident, $managerId),
|
||||
$ident . ' wurde beim Ausschalten nicht entfernt.'
|
||||
);
|
||||
}
|
||||
$test->assertSame(true, (bool) IPS_GetObject($energieflussID)['ObjectIsHidden']);
|
||||
});
|
||||
|
||||
$zustandswert = static function (array $daten, int $instanzId, string $kennung) {
|
||||
foreach ($daten['Verbraucher'] ?? [] as $verbraucher) {
|
||||
if (($verbraucher['InstanzID'] ?? 0) !== $instanzId) {
|
||||
|
||||
Reference in New Issue
Block a user