98 lines
3.0 KiB
PHP
98 lines
3.0 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Belevo\EnelixEMS\Tests;
|
|
|
|
use Belevo\EnelixEMS\EaseeLadestatus;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
final class EaseeLadestatusTest extends TestCase
|
|
{
|
|
public function testFahrzeugUndEinphasigesLadenKommenDirektAusApiWerten(): void
|
|
{
|
|
$status = EaseeLadestatus::ausBeobachtungen([
|
|
'109' => 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));
|
|
}
|
|
}
|