2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-19 12:46:03 +00:00

fixed bug desired_value=0

git-svn-id: https://svn.fhem.de/fhem/trunk@4105 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
damian-s 2013-10-24 18:08:33 +00:00
parent 84fae0d311
commit 1ca7255e24

View File

@ -266,7 +266,9 @@ THRESHOLD_Set($@)
if ($arg eq "desired" ) { if ($arg eq "desired" ) {
return "$pn: set desired value:$value, desired value needs a numeric parameter" if(@a != 3 || $value !~ m/^[-\d\.]*$/); return "$pn: set desired value:$value, desired value needs a numeric parameter" if(@a != 3 || $value !~ m/^[-\d\.]*$/);
if ($desired_value ne "") {
return $ret if ($desired_value == $value); return $ret if ($desired_value == $value);
}
Log3 $pn,2, "set $pn $arg $value"; Log3 $pn,2, "set $pn $arg $value";
$mode = "active"; $mode = "active";
$state_format =~ s/\_m/$mode/g; $state_format =~ s/\_m/$mode/g;
@ -284,7 +286,7 @@ THRESHOLD_Set($@)
readingsBulkUpdate ($hash, "desired_value", $value); readingsBulkUpdate ($hash, "desired_value", $value);
readingsEndUpdate ($hash, 1); readingsEndUpdate ($hash, 1);
} elsif ($arg eq "deactivated" ) { } elsif ($arg eq "deactivated" ) {
return "$pn: set deactivated, set desired value first" if (!$desired_value); return "$pn: set deactivated, set desired value first" if ($desired_value eq "");
$ret=CommandAttr(undef, "$pn disable 1"); $ret=CommandAttr(undef, "$pn disable 1");
if (!$ret) { if (!$ret) {
readingsBeginUpdate ($hash); readingsBeginUpdate ($hash);
@ -299,7 +301,7 @@ THRESHOLD_Set($@)
readingsEndUpdate ($hash, 1); readingsEndUpdate ($hash, 1);
} }
} elsif ($arg eq "active" ) { } elsif ($arg eq "active" ) {
return "$pn: set active, set desired value first" if (!$desired_value); return "$pn: set active, set desired value first" if ($desired_value eq "");
$ret=CommandDeleteAttr(undef, "$pn disable"); $ret=CommandDeleteAttr(undef, "$pn disable");
if (!$ret) { if (!$ret) {
$mode="active"; $mode="active";
@ -333,7 +335,7 @@ THRESHOLD_Set($@)
} elsif ($arg eq "hysteresis" ) { } elsif ($arg eq "hysteresis" ) {
return "$pn: set hysteresis value:$value, hysteresis needs a numeric parameter" if (@a != 3 || $value !~ m/^[\d\.]*$/ ); return "$pn: set hysteresis value:$value, hysteresis needs a numeric parameter" if (@a != 3 || $value !~ m/^[\d\.]*$/ );
$hash->{hysteresis} = $value; $hash->{hysteresis} = $value;
if ($desired_value) { if ($desired_value ne "") {
readingsBeginUpdate ($hash); readingsBeginUpdate ($hash);
readingsBulkUpdate ($hash, "threshold_min",$desired_value-$hash->{hysteresis}+$offset); readingsBulkUpdate ($hash, "threshold_min",$desired_value-$hash->{hysteresis}+$offset);
readingsBulkUpdate ($hash, "threshold_max", $desired_value+$offset); readingsBulkUpdate ($hash, "threshold_max", $desired_value+$offset);
@ -344,7 +346,7 @@ THRESHOLD_Set($@)
return "$pn: set offset value:$value, offset needs a numeric parameter" if (@a != 3 || $value !~ m/^[-\d\.]*$/ ); return "$pn: set offset value:$value, offset needs a numeric parameter" if (@a != 3 || $value !~ m/^[-\d\.]*$/ );
$offset = $value; $offset = $value;
$hash->{offset} = $offset; $hash->{offset} = $offset;
if ($desired_value) { if ($desired_value ne "") {
readingsBeginUpdate ($hash); readingsBeginUpdate ($hash);
readingsBulkUpdate ($hash, "threshold_min",$desired_value-$hash->{hysteresis}+$offset); readingsBulkUpdate ($hash, "threshold_min",$desired_value-$hash->{hysteresis}+$offset);
readingsBulkUpdate ($hash, "threshold_max", $desired_value+$offset); readingsBulkUpdate ($hash, "threshold_max", $desired_value+$offset);
@ -388,9 +390,9 @@ THRESHOLD_Notify($$)
my $name = $dev->{NAME}; my $name = $dev->{NAME};
SELECT:{ SELECT:{
if (($name eq $sensor) and ReadingsVal($pn,"desired_value","")) {last SELECT;} if (($name eq $sensor) and (ReadingsVal($pn,"desired_value","") ne "")) {last SELECT;}
if ($sensor2) { if ($sensor2) {
if (($name eq $sensor2) and ReadingsVal($pn,"desired_value","")) {last SELECT;} if (($name eq $sensor2) and (ReadingsVal($pn,"desired_value","") ne "")) {last SELECT;}
} }
if ($target_sensor) { if ($target_sensor) {
if (ReadingsVal($pn,"mode","") eq "external") { if (ReadingsVal($pn,"mode","") eq "external") {
@ -626,8 +628,9 @@ THRESHOLD_setValue($$)
<br> <br>
<br> <br>
<li><b>AND|OR</b> (optional)<br> <li><b>AND|OR</b> (optional)<br>
logical operator with an optional second sensor logical operator with an optional second sensor<br>
</li> </li>
<br>
<li><b>sensor2</b> (optional, nur in Verbindung mit AND oder OR)<br> <li><b>sensor2</b> (optional, nur in Verbindung mit AND oder OR)<br>
the second sensor the second sensor
</li> </li>
@ -765,7 +768,7 @@ THRESHOLD_setValue($$)
It should be heated when the room temperature drops below 21 degrees and the outside temperature is below 15 degrees:<br> It should be heated when the room temperature drops below 21 degrees and the outside temperature is below 15 degrees:<br>
<br> <br>
<code>define TH_outdoor THRESHOLD outdoor:temperature:0:15</code><br> <code>define TH_outdoor THRESHOLD outdoor:temperature:0:15</code><br>
<code>define TH_room THRESHOLD indoor AND TH_outdoor:state:on heating</code><br> <code>define TH_room THRESHOLD indoor OR TH_outdoor:state:off heating</code><br>
<code>set TH_room desired 21</code><br> <code>set TH_room desired 21</code><br>
<br> <br>
<br> <br>
@ -873,7 +876,7 @@ THRESHOLD_setValue($$)
Das Modul beginnt mit der Steuerung erst dann, wenn ein Sollwert gesetzt wird!<br> Das Modul beginnt mit der Steuerung erst dann, wenn ein Sollwert gesetzt wird!<br>
<br> <br>
Alternativ kann die Vorgabe des Sollwertes von einem weiteren Sensor kommen. Damit kann eine Steuerung durch den Vergleich zweier Sensoren stattfinden. Alternativ kann die Vorgabe des Sollwertes von einem weiteren Sensor kommen. Damit kann eine Steuerung durch den Vergleich zweier Sensoren stattfinden.
Typisches Anwendungsbeispiel ist z. B. die Steuerung von Umwelz- oder Zirkulationspumpen.<br> Typisches Anwendungsbeispiel ist z. B. die Steuerung von Umwälz- oder Zirkulationspumpen.<br>
<br> <br>
Ebenso können beliebige Wandthermostate (z. B. HM, MAX, FHT) für die Vorgabe der Solltemperatur genutzt werden.<br> Ebenso können beliebige Wandthermostate (z. B. HM, MAX, FHT) für die Vorgabe der Solltemperatur genutzt werden.<br>
<br> <br>
@ -1055,7 +1058,7 @@ THRESHOLD_setValue($$)
Es soll geheizt werden, wenn die Zimmertemperatur unter 21 Grad fällt und die Außentemperatur unter 15 Grad ist:<br> Es soll geheizt werden, wenn die Zimmertemperatur unter 21 Grad fällt und die Außentemperatur unter 15 Grad ist:<br>
<br> <br>
<code>define TH_outdoor THRESHOLD outdoor:temperature:0:15</code><br> <code>define TH_outdoor THRESHOLD outdoor:temperature:0:15</code><br>
<code>define TH_room THRESHOLD indoor AND TH_outdoor:state:on heating</code><br> <code>define TH_room THRESHOLD indoor OR TH_outdoor:state:off heating</code><br>
<code>set TH_room desired 21</code><br> <code>set TH_room desired 21</code><br>
<br> <br>
<br> <br>