fix(easee): wartende Ladevorgaenge starten
Tests / test (push) Successful in 45s

This commit is contained in:
dh
2026-09-29 09:34:37 +00:00
parent 156591a91e
commit ccecc437e9
11 changed files with 283 additions and 21 deletions
+18
View File
@@ -58,6 +58,24 @@ final class EaseeGatewayProtokollTest extends TestCase
], $beobachtungen);
}
public function testFreigabediagnoseWirdAusBeobachtungenExtrahiert(): void
{
$beobachtungen = EaseeGatewayProtokoll::extrahiereBeobachtungen([
'serialNumber' => 'EH123456',
'observations' => [
['id' => 42, 'value' => true],
['id' => 43, 'value' => true],
['id' => 96, 'value' => 55],
],
], ['EH123456']);
self::assertSame([
['Seriennummer' => 'EH123456', 'ID' => 42, 'Wert' => true],
['Seriennummer' => 'EH123456', 'ID' => 43, 'Wert' => true],
['Seriennummer' => 'EH123456', 'ID' => 96, 'Wert' => 55],
], $beobachtungen);
}
public function testSeriennummerWirdNormalisiert(): void
{
self::assertSame(
+18
View File
@@ -89,6 +89,24 @@ final class EaseeLadestatusTest extends TestCase
self::assertSame(13, $status['ApiMaximalstrom_A']);
}
public function testFreigabeUndGrundOhneLadestromKommenAusEaseeBeobachtungen(): void
{
$status = EaseeLadestatus::ausBeobachtungen([
'31' => true,
'42' => true,
'43' => true,
'96' => 55,
'102' => true,
'109' => 2,
], 16);
self::assertTrue($status['EaseeAktiviert']);
self::assertTrue($status['AutorisierungErforderlich']);
self::assertTrue($status['RemoteStartErforderlich']);
self::assertTrue($status['SmartCharging']);
self::assertSame(55, $status['GrundKeinLadestrom']);
}
public function testNurSolarladenIstFestErzwungen(): void
{
self::assertFalse(EaseeLadestatus::solarladenErzwungen(0));
+6
View File
@@ -70,6 +70,12 @@ final class EaseeModuleStrukturTest extends TestCase
self::assertStringContainsString("'Phasenzahl'", $modul);
self::assertStringNotContainsString('7500', $modul);
self::assertStringNotContainsString('Abfrageintervall', $modul);
self::assertStringContainsString("'action' => 'StartCharging'", $modul);
$gateway = (string) file_get_contents(
__DIR__ . '/../EaseeGateway/module.php'
);
self::assertStringContainsString('/commands/start_charging', $gateway);
}
/** @return array<string, mixed> */
+15
View File
@@ -72,6 +72,21 @@ return static function (TestContext $test): void {
$test->assertSame(200, $antwort['httpCode']);
});
$test->runCase('Ladestart wird ueber Gateway angenommen', static function (
TestContext $test
) use ($gateway): void {
$antwort = json_decode(ENELIXEASEE_ProcessStationRequest(
$gateway,
json_encode([
'action' => 'StartCharging',
'serialNumber' => 'EH123456',
], JSON_THROW_ON_ERROR)
), true, 512, JSON_THROW_ON_ERROR);
$test->assertSame(true, $antwort['success']);
$test->assertSame(200, $antwort['httpCode']);
});
$test->runCase('Gebrochene Stromvorgabe wird abgelehnt', static function (
TestContext $test
) use ($gateway): void {
@@ -111,6 +111,10 @@ return static function (TestContext $test): void {
$test->runCase('Wartezustand startet konservativ ohne aktive Phase', static function (
TestContext $test
) use ($sendeBeobachtung, $station): void {
$sendeBeobachtung('EH123456', 42, true);
$sendeBeobachtung('EH123456', 43, true);
$sendeBeobachtung('EH123456', 96, 55);
$sendeBeobachtung('EH123456', 102, true);
$sendeBeobachtung('EH123456', 109, 2);
$sendeBeobachtung('EH123456', 110, 0);
IPS_RequestAction($station, 'Solarladen', false);
@@ -132,6 +136,20 @@ return static function (TestContext $test): void {
),
'"Ampere":16'
));
$test->assertTrue(str_contains(
(string) GetValue(
$test->objectByIdent('LetzterStartbefehl', $station)
),
'"Aktion":"StartCharging"'
));
$test->assertSame(
55,
GetValue($test->objectByIdent('GrundKeinLadestrom', $station))
);
$test->assertSame(
true,
GetValue($test->objectByIdent('AutorisierungErforderlich', $station))
);
IPS_RequestAction($station, 'Solarladen', true);
$sendeBeobachtung('EH123456', 110, 30);