This commit is contained in:
@@ -47,6 +47,7 @@ class VerbraucherEinStufig extends IPSModule implements VerbraucherSchnittstelle
|
||||
$this->RegisterPropertyBoolean('SchaltkontaktInvertiert', false);
|
||||
$this->RegisterPropertyInteger('RueckmeldungVariableID', 0);
|
||||
$this->RegisterPropertyInteger('Mindestlaufzeit', 0);
|
||||
$this->RegisterPropertyBoolean('PeakSperreBeiMindestlaufzeitAnbieten', true);
|
||||
$this->RegisterPropertyInteger('Mindesteinschaltdauer', 5);
|
||||
$this->RegisterPropertyInteger('Mindestausschaltdauer', 5);
|
||||
$this->RegisterPropertyBoolean('DiagnosevariablenAnzeigen', false);
|
||||
@@ -63,6 +64,7 @@ class VerbraucherEinStufig extends IPSModule implements VerbraucherSchnittstelle
|
||||
$this->RegisterAttributeInteger('LaufzeitStandZeit', 0);
|
||||
$this->RegisterAttributeString('LaufzeitTag', '');
|
||||
$this->RegisterAttributeString('Leistungsangebot', '[0]');
|
||||
$this->RegisterAttributeString('Betriebsart', Nachrichtenvertrag::BETRIEBSART_PV);
|
||||
$this->RegisterAttributeBoolean('Initialisiert', false);
|
||||
$this->RegisterAttributeBoolean('SchaltvorgangLaeuft', false);
|
||||
$this->RegisterAttributeBoolean('SchaltpruefungAusstehend', false);
|
||||
@@ -205,8 +207,18 @@ class VerbraucherEinStufig extends IPSModule implements VerbraucherSchnittstelle
|
||||
throw new InvalidArgumentException('Der Manager hat diesen Verbraucher nicht aktiv zugeordnet.');
|
||||
}
|
||||
|
||||
$this->WriteAttributeString('Betriebsart', $daten['Betriebsart']);
|
||||
$this->aktualisiere(false);
|
||||
$sollleistung = $daten['Sollleistung_W'];
|
||||
if ($sollleistung === null) {
|
||||
if ((bool) $this->leseZustand('SollwertGueltig')
|
||||
&& !in_array((int) $this->leseZustand('Sollleistung'), $this->leseLeistungsangebot(), true)
|
||||
) {
|
||||
$this->setzeZustand('SollwertGueltig', false);
|
||||
}
|
||||
$this->planeMeldung();
|
||||
return;
|
||||
}
|
||||
if (!in_array($sollleistung, $this->leseLeistungsangebot(), true)) {
|
||||
throw new InvalidArgumentException(
|
||||
'Sollleistung_W liegt nicht im aktuell gemeldeten Leistungsangebot.'
|
||||
@@ -264,9 +276,16 @@ class VerbraucherEinStufig extends IPSModule implements VerbraucherSchnittstelle
|
||||
$jetzt
|
||||
);
|
||||
|
||||
$peakbetrieb = $this->ReadAttributeString('Betriebsart')
|
||||
=== Nachrichtenvertrag::BETRIEBSART_PEAK;
|
||||
$peakSperreBeiMindestlaufzeitAnbieten = $this->ReadPropertyBoolean(
|
||||
'PeakSperreBeiMindestlaufzeitAnbieten'
|
||||
);
|
||||
$mindestlaufzeitLokalErzwingen = $mindestlaufzeitErzwungen
|
||||
&& (!$peakbetrieb || !$peakSperreBeiMindestlaufzeitAnbieten);
|
||||
$ziel = 0;
|
||||
if ($verfuegbar) {
|
||||
if ($mindestlaufzeitErzwungen) {
|
||||
if ($mindestlaufzeitLokalErzwingen) {
|
||||
$ziel = $this->ReadPropertyInteger('Nennleistung');
|
||||
} elseif ((bool) $this->leseZustand('SollwertGueltig')) {
|
||||
$ziel = (int) $this->leseZustand('Sollleistung');
|
||||
@@ -302,7 +321,8 @@ class VerbraucherEinStufig extends IPSModule implements VerbraucherSchnittstelle
|
||||
$this->setzeZustand('SchaltbefehlAusstehend', $wartetAufRueckmeldung);
|
||||
$this->setzeZustand('RestMindestzeit', $restMindestzeit);
|
||||
$aenderungMoeglich = $verfuegbar
|
||||
&& !$mindestlaufzeitErzwungen
|
||||
&& (!$mindestlaufzeitErzwungen
|
||||
|| ($peakbetrieb && $peakSperreBeiMindestlaufzeitAnbieten))
|
||||
&& $restMindestzeit === 0
|
||||
&& !$wartetAufRueckmeldung;
|
||||
$this->setzeZustand('AenderungMoeglich', $aenderungMoeglich);
|
||||
@@ -312,7 +332,9 @@ class VerbraucherEinStufig extends IPSModule implements VerbraucherSchnittstelle
|
||||
$istleistung,
|
||||
$verfuegbar,
|
||||
$aenderungMoeglich,
|
||||
$mindestlaufzeitErzwungen
|
||||
$mindestlaufzeitErzwungen,
|
||||
$peakbetrieb,
|
||||
$peakSperreBeiMindestlaufzeitAnbieten
|
||||
);
|
||||
$this->WriteAttributeString('Leistungsangebot', json_encode($angebot, JSON_THROW_ON_ERROR));
|
||||
$this->aktualisiereStoerung();
|
||||
@@ -599,6 +621,7 @@ class VerbraucherEinStufig extends IPSModule implements VerbraucherSchnittstelle
|
||||
'EmpfaengerID' => $managerID,
|
||||
'Zeitpunkt' => time(),
|
||||
],
|
||||
'Betriebsart' => $this->ReadAttributeString('Betriebsart'),
|
||||
'PrioritaetPV' => $this->ReadPropertyInteger('PrioritaetPV'),
|
||||
'PrioritaetPeak' => $this->ReadPropertyInteger('PrioritaetPeak'),
|
||||
'Leistungswerte_W' => $this->leseLeistungsangebot(),
|
||||
|
||||
Reference in New Issue
Block a user