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 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([ '109' => 2, '110' => 10, '47' => 25.0, '104' => 13.7, ], 32); 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)); self::assertTrue(EaseeLadestatus::solarladenErzwungen(1)); } }