This commit is contained in:
@@ -32,7 +32,7 @@ final class LadestationRegler
|
||||
* Ein Ladeende wird erst nach zuvor gemessener Ladeleistung angenommen, damit
|
||||
* die Anlaufzeit nach einer neuen Stromvorgabe nicht als volles Fahrzeug gilt.
|
||||
*
|
||||
* @param array{Rohstatus: int, Istleistung_W: float} $rohstatus
|
||||
* @param array{Rohstatus: int, Istleistung_W: float, Iststrom_A?: float} $rohstatus
|
||||
* @return array<string, int|float|bool>
|
||||
*/
|
||||
public static function normalisiereStatus(
|
||||
@@ -51,7 +51,9 @@ final class LadestationRegler
|
||||
if ($verbunden) {
|
||||
$phasen = $leistung > 7500.0 ? self::PHASEN_DREI : self::PHASEN_EIN;
|
||||
$nenner = $phasen === self::PHASEN_EIN ? 230.0 : 1.71 * 400.0;
|
||||
$ladestrom = $leistung / $nenner;
|
||||
$ladestrom = isset($rohstatus['Iststrom_A'])
|
||||
? max(0.0, (float) $rohstatus['Iststrom_A'])
|
||||
: $leistung / $nenner;
|
||||
$ermittelterMaximalstrom = 2.5 + $ladestrom;
|
||||
$geladen = $warGeladen
|
||||
|| ($warVerbunden
|
||||
@@ -80,6 +82,26 @@ final class LadestationRegler
|
||||
];
|
||||
}
|
||||
|
||||
public static function ermittleFahrzeugMaximalstrom(
|
||||
int $vorgegebenerStrom,
|
||||
float $gemessenerStrom,
|
||||
int $konfigurierterMaximalstrom
|
||||
): ?int {
|
||||
if ($konfigurierterMaximalstrom < 6 || $konfigurierterMaximalstrom > 32) {
|
||||
throw new InvalidArgumentException('MaximalerLadestrom muss zwischen 6 und 32 A liegen.');
|
||||
}
|
||||
if ($vorgegebenerStrom < 6 || $gemessenerStrom < 5.5) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$kandidat = max(6, min($konfigurierterMaximalstrom, (int) round($gemessenerStrom)));
|
||||
if ($kandidat > $vorgegebenerStrom - 2 || $kandidat >= $konfigurierterMaximalstrom) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $kandidat;
|
||||
}
|
||||
|
||||
/** @return list<int> */
|
||||
public static function leistungsangebot(
|
||||
bool $aktiv,
|
||||
|
||||
Reference in New Issue
Block a user