This commit is contained in:
@@ -130,6 +130,20 @@
|
||||
"minimum": 0.1,
|
||||
"digits": 1
|
||||
},
|
||||
{
|
||||
"type": "NumberSpinner",
|
||||
"name": "TemperaturUntergrenze",
|
||||
"caption": "Untertemperaturgrenze",
|
||||
"suffix": " °C",
|
||||
"digits": 1
|
||||
},
|
||||
{
|
||||
"type": "NumberSpinner",
|
||||
"name": "TemperaturObergrenze",
|
||||
"caption": "Übertemperaturgrenze",
|
||||
"suffix": " °C",
|
||||
"digits": 1
|
||||
},
|
||||
{
|
||||
"type": "List",
|
||||
"name": "Zeitplan",
|
||||
|
||||
@@ -56,6 +56,8 @@ class VerbraucherWarmwassererwaermer extends IPSModule implements VerbraucherSch
|
||||
$this->RegisterPropertyString('Zeitplan', '[]');
|
||||
$this->RegisterPropertyInteger('LastwechselSperrzeit', 5);
|
||||
$this->RegisterPropertyInteger('TemperaturMaxAlter', 30);
|
||||
$this->RegisterPropertyFloat('TemperaturUntergrenze', 0.0);
|
||||
$this->RegisterPropertyFloat('TemperaturObergrenze', 100.0);
|
||||
$this->RegisterPropertyFloat('Hysterese', 5.0);
|
||||
$this->RegisterPropertyBoolean('LegionellenfunktionAktiv', true);
|
||||
$this->RegisterPropertyInteger('LegionellenMinimalintervallTage', 4);
|
||||
@@ -537,6 +539,10 @@ class VerbraucherWarmwassererwaermer extends IPSModule implements VerbraucherSch
|
||||
if (!$temperaturGueltig) {
|
||||
$stoerungen[] = 'Boilertemperatur fehlt oder ist veraltet.';
|
||||
}
|
||||
$untertemperatur = $this->istUntertemperatur($temperaturGueltig);
|
||||
if ($untertemperatur) {
|
||||
$stoerungen[] = 'Untertemperatur erkannt.';
|
||||
}
|
||||
$uebertemperatur = $this->istUebertemperatur($temperaturGueltig);
|
||||
if ($uebertemperatur) {
|
||||
$stoerungen[] = 'Uebertemperatur erkannt.';
|
||||
@@ -555,19 +561,18 @@ class VerbraucherWarmwassererwaermer extends IPSModule implements VerbraucherSch
|
||||
}
|
||||
}
|
||||
|
||||
private function istUntertemperatur(bool $temperaturGueltig): bool
|
||||
{
|
||||
return $temperaturGueltig
|
||||
&& (float) $this->GetValue('Boilertemperatur')
|
||||
< $this->ReadPropertyFloat('TemperaturUntergrenze');
|
||||
}
|
||||
|
||||
private function istUebertemperatur(bool $temperaturGueltig): bool
|
||||
{
|
||||
if (!$temperaturGueltig) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$grenze = (float) $this->GetValue('Maximaltemperatur');
|
||||
if ($this->ReadPropertyBoolean('LegionellenfunktionAktiv')) {
|
||||
$grenze = max($grenze, $this->ReadAttributeFloat('ZustandLegionellentemperatur'));
|
||||
}
|
||||
|
||||
return (float) $this->GetValue('Boilertemperatur')
|
||||
> $grenze + $this->ReadPropertyFloat('Hysterese');
|
||||
return $temperaturGueltig
|
||||
&& (float) $this->GetValue('Boilertemperatur')
|
||||
> $this->ReadPropertyFloat('TemperaturObergrenze');
|
||||
}
|
||||
|
||||
private function sendeVerbraucherdaten(): void
|
||||
@@ -592,6 +597,7 @@ class VerbraucherWarmwassererwaermer extends IPSModule implements VerbraucherSch
|
||||
{
|
||||
$temperaturGueltig = (bool) $this->leseZustand('TemperaturGueltig');
|
||||
$schaltfehler = $this->ReadAttributeString('Schaltfehler');
|
||||
$untertemperatur = $this->istUntertemperatur($temperaturGueltig);
|
||||
$uebertemperatur = $this->istUebertemperatur($temperaturGueltig);
|
||||
|
||||
return [
|
||||
@@ -655,6 +661,13 @@ class VerbraucherWarmwassererwaermer extends IPSModule implements VerbraucherSch
|
||||
'Einheit' => '',
|
||||
'Text' => $temperaturGueltig ? '' : 'Boilertemperatur fehlt oder ist veraltet.',
|
||||
],
|
||||
[
|
||||
'Kennung' => 'Untertemperatur',
|
||||
'Art' => 'Stoerung',
|
||||
'Wert' => $untertemperatur,
|
||||
'Einheit' => '',
|
||||
'Text' => $untertemperatur ? 'Untertemperatur erkannt.' : '',
|
||||
],
|
||||
[
|
||||
'Kennung' => 'Uebertemperatur',
|
||||
'Art' => 'Stoerung',
|
||||
@@ -745,6 +758,13 @@ class VerbraucherWarmwassererwaermer extends IPSModule implements VerbraucherSch
|
||||
if ($this->ReadPropertyFloat('Hysterese') <= 0) {
|
||||
throw new InvalidArgumentException('Hysterese muss groesser als 0 sein.');
|
||||
}
|
||||
if ($this->ReadPropertyFloat('TemperaturUntergrenze')
|
||||
>= $this->ReadPropertyFloat('TemperaturObergrenze')
|
||||
) {
|
||||
throw new InvalidArgumentException(
|
||||
'Die Temperaturuntergrenze muss kleiner als die Temperaturobergrenze sein.'
|
||||
);
|
||||
}
|
||||
$minimum = (float) $this->GetValue('Mindesttemperatur');
|
||||
$maximum = (float) $this->GetValue('Maximaltemperatur');
|
||||
$legionellen = (float) $this->ReadAttributeFloat('ZustandLegionellentemperatur');
|
||||
|
||||
Reference in New Issue
Block a user