This commit is contained in:
+1
-1
@@ -17,7 +17,7 @@ Alle wesentlichen Aenderungen an Enelix EMS werden in dieser Datei dokumentiert.
|
||||
|
||||
- Stufenlose Leistungsbereiche fuer Batteriespeicher.
|
||||
- Ladefreigabe neuer Ladestationsinstanzen standardmaessig aktiviert.
|
||||
- Easee-Ladestationen laden einen fehlenden Initialstatus ueber die Observations-API nach.
|
||||
- Easee-Ladestationen laden einen fehlenden Initialstatus ueber die Observations-API nach und starten bei noch unbekannter Ausgangsphase konservativ einphasig.
|
||||
- Vollstaendige PHP-, Struktur- und Symcon-Modultests fuer alle Module.
|
||||
|
||||
### Hinweise
|
||||
|
||||
@@ -419,10 +419,12 @@ class LadestationGateway extends IPSModule implements VerbraucherSchnittstelle
|
||||
|
||||
$gatewayVerbunden = $this->ReadAttributeBoolean('GatewayVerbunden');
|
||||
$phaseGueltig = in_array($status['Phasenzahl'], [1, 3], true);
|
||||
$regelPhasenzahl = $phaseGueltig ? $status['Phasenzahl'] : 1;
|
||||
$phaseErforderlich = $status['Fahrzeugstatus'] === 3;
|
||||
$steuerbar = $gatewayVerbunden
|
||||
&& $status['StatusGueltig']
|
||||
&& !$status['Stoerung']
|
||||
&& (!$status['FahrzeugVerbunden'] || $phaseGueltig);
|
||||
&& (!$phaseErforderlich || $phaseGueltig);
|
||||
|
||||
$solarladen = $this->ReadAttributeBoolean('ZustandSolarladen');
|
||||
$peakbetrieb = $this->ReadAttributeString('Betriebsart')
|
||||
@@ -432,7 +434,7 @@ class LadestationGateway extends IPSModule implements VerbraucherSchnittstelle
|
||||
$this->ReadAttributeBoolean('ZustandLadefreigabe'),
|
||||
$steuerbar && $status['FahrzeugVerbunden'],
|
||||
$status['FahrzeugGeladen'],
|
||||
$phaseGueltig ? $status['Phasenzahl'] : 1,
|
||||
$regelPhasenzahl,
|
||||
$status['ApiMaximalstrom_A'],
|
||||
$solarladen,
|
||||
$peakbetrieb
|
||||
@@ -460,8 +462,8 @@ class LadestationGateway extends IPSModule implements VerbraucherSchnittstelle
|
||||
} elseif ($status['Stoerung']) {
|
||||
$stoertext = $status['Stoertext'];
|
||||
$this->SetStatus(self::STATUS_LADEFEHLER);
|
||||
} elseif ($status['FahrzeugVerbunden'] && !$phaseGueltig) {
|
||||
$stoertext = 'Easee meldet keine unterstuetzte aktive Ausgangsphase.';
|
||||
} elseif ($phaseErforderlich && !$phaseGueltig) {
|
||||
$stoertext = 'Easee meldet beim Laden keine unterstuetzte aktive Ausgangsphase.';
|
||||
$this->SetStatus(self::STATUS_WARTET_AUF_DATEN);
|
||||
} else {
|
||||
$this->SetStatus(self::STATUS_AKTIV);
|
||||
@@ -471,7 +473,7 @@ class LadestationGateway extends IPSModule implements VerbraucherSchnittstelle
|
||||
if ($gatewayVerbunden && $status['StatusGueltig']) {
|
||||
$this->setzeLadestrom(
|
||||
$this->bestimmeWirksameSollleistung($angebot),
|
||||
$status['Phasenzahl']
|
||||
$regelPhasenzahl
|
||||
);
|
||||
} else {
|
||||
$this->WriteAttributeInteger('LetzterGesetzterStrom', -1);
|
||||
|
||||
@@ -108,6 +108,36 @@ return static function (TestContext $test): void {
|
||||
));
|
||||
});
|
||||
|
||||
$test->runCase('Wartezustand startet konservativ ohne aktive Phase', static function (
|
||||
TestContext $test
|
||||
) use ($sendeBeobachtung, $station): void {
|
||||
$sendeBeobachtung('EH123456', 109, 2);
|
||||
$sendeBeobachtung('EH123456', 110, 0);
|
||||
IPS_RequestAction($station, 'Solarladen', false);
|
||||
|
||||
$test->assertSame(
|
||||
0,
|
||||
GetValue($test->objectByIdent('Phasenzahl', $station))
|
||||
);
|
||||
$test->assertInstanceStatus($station);
|
||||
$test->assertSame(
|
||||
'[3850]',
|
||||
(string) GetValue(
|
||||
$test->objectByIdent('LeistungsangebotDiagnose', $station)
|
||||
)
|
||||
);
|
||||
$test->assertTrue(str_contains(
|
||||
(string) GetValue(
|
||||
$test->objectByIdent('LetzterGeraetebefehl', $station)
|
||||
),
|
||||
'"Ampere":16'
|
||||
));
|
||||
|
||||
IPS_RequestAction($station, 'Solarladen', true);
|
||||
$sendeBeobachtung('EH123456', 110, 30);
|
||||
$sendeBeobachtung('EH123456', 109, 3);
|
||||
});
|
||||
|
||||
$test->runCase('Nur-Solar-Variante laesst Solarladen nicht abschalten', static function (
|
||||
TestContext $test
|
||||
) use ($nurSolar): void {
|
||||
|
||||
Reference in New Issue
Block a user