diff --git a/libs/EaseeLadestatus.php b/libs/EaseeLadestatus.php index 200fab4..f4c74ae 100644 --- a/libs/EaseeLadestatus.php +++ b/libs/EaseeLadestatus.php @@ -53,11 +53,16 @@ final class EaseeLadestatus ? self::phasenzahl((int) ($beobachtungen['110'] ?? 0)) : 0; - $leistung = max(0.0, (float) ($beobachtungen['120'] ?? 0.0) * 1000.0); + $laedt = $betriebszustand === 3; + $leistung = $laedt + ? max(0.0, (float) ($beobachtungen['120'] ?? 0.0) * 1000.0) + : 0.0; $stroeme = []; - foreach ([182, 183, 184, 185] as $id) { - if (array_key_exists((string) $id, $beobachtungen)) { - $stroeme[] = abs((float) $beobachtungen[(string) $id]); + if ($laedt) { + foreach ([182, 183, 184, 185] as $id) { + if (array_key_exists((string) $id, $beobachtungen)) { + $stroeme[] = abs((float) $beobachtungen[(string) $id]); + } } } $ladestrom = $stroeme === [] ? 0.0 : max($stroeme); diff --git a/tests/EaseeLadestatusTest.php b/tests/EaseeLadestatusTest.php index cb42878..37d9146 100644 --- a/tests/EaseeLadestatusTest.php +++ b/tests/EaseeLadestatusTest.php @@ -77,6 +77,33 @@ final class EaseeLadestatusTest extends TestCase self::assertSame(0, $status['Phasenzahl']); } + public function testStillstehendeWallboxSetztVeralteteLeistungUndStromAufNull(): void + { + $status = EaseeLadestatus::ausBeobachtungen([ + '109' => 2, + '110' => 30, + '120' => 10.294, + '182' => 14.9, + '183' => 14.8, + '184' => 14.7, + ], 32); + + self::assertEqualsWithDelta(0.0, $status['Istleistung_W'], 0.01); + self::assertEqualsWithDelta(0.0, $status['Ladestrom_A'], 0.01); + } + + public function testFertigGeladeneWallboxSetztVeralteteLeistungAufNull(): void + { + $status = EaseeLadestatus::ausBeobachtungen([ + '109' => 4, + '110' => 30, + '120' => 10.294, + ], 32); + + self::assertTrue($status['FahrzeugGeladen']); + self::assertEqualsWithDelta(0.0, $status['Istleistung_W'], 0.01); + } + public function testApiUndKabelgrenzenBegrenzenDenKonfiguriertenStrom(): void { $status = EaseeLadestatus::ausBeobachtungen([