3, '110' => 10, '120' => 2.3, '182' => 10.1, ], 16); self::assertTrue($status['FahrzeugVerbunden']); self::assertFalse($status['FahrzeugGeladen']); self::assertSame(3, $status['Fahrzeugstatus']); self::assertSame(1, $status['Phasenzahl']); self::assertEqualsWithDelta(2300.0, $status['Istleistung_W'], 0.01); self::assertEqualsWithDelta(10.1, $status['Ladestrom_A'], 0.01); } public function testDreiphasigesLadenWirdNichtAusLeistungGeschaetzt(): void { $status = EaseeLadestatus::ausBeobachtungen([ '109' => 3, '110' => 30, '120' => 1.0, '182' => 2.0, '183' => 2.2, '184' => 2.1, ], 32); self::assertSame(3, $status['Phasenzahl']); self::assertEqualsWithDelta(2.2, $status['Ladestrom_A'], 0.01); } public function testZweiphasigerApiWertWirdNichtAlsEinOderDreiGeschaetzt(): void { $status = EaseeLadestatus::ausBeobachtungen([ '109' => 3, '110' => 20, '120' => 4.6, ], 16); self::assertSame(0, $status['Phasenzahl']); } public function testGetrenntUndGeladenFolgenDemEaseeBetriebszustand(): void { $getrennt = EaseeLadestatus::ausBeobachtungen(['109' => 1, '110' => 30], 16); $geladen = EaseeLadestatus::ausBeobachtungen(['109' => 4, '110' => 30], 16); self::assertFalse($getrennt['FahrzeugVerbunden']); self::assertSame(0, $getrennt['Phasenzahl']); self::assertTrue($geladen['FahrzeugVerbunden']); self::assertTrue($geladen['FahrzeugGeladen']); self::assertSame(4, $geladen['Fahrzeugstatus']); } public function testUnbekannterApiBetriebszustandGibtRegelungNichtFrei(): void { $status = EaseeLadestatus::ausBeobachtungen([ '109' => 99, '110' => 30, ], 16); self::assertFalse($status['StatusGueltig']); self::assertFalse($status['FahrzeugVerbunden']); self::assertSame(0, $status['Fahrzeugstatus']); self::assertSame(0, $status['Phasenzahl']); } public function testApiUndKabelgrenzenBegrenzenDenKonfiguriertenStrom(): void { $status = EaseeLadestatus::ausBeobachtungen([ '109' => 2, '110' => 10, '47' => 25.0, '104' => 13.7, ], 32); self::assertSame(13, $status['ApiMaximalstrom_A']); } public function testNurSolarladenIstFestErzwungen(): void { self::assertFalse(EaseeLadestatus::solarladenErzwungen(0)); self::assertTrue(EaseeLadestatus::solarladenErzwungen(1)); } }