From 36cede4cf5c3ed7220600491663b6e3d093d8ba6 Mon Sep 17 00:00:00 2001 From: damian-s <> Date: Fri, 15 Mar 2013 16:57:53 +0000 Subject: [PATCH] error correction: hysteresis, init_desired_value git-svn-id: https://svn.fhem.de/fhem/trunk@2919 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/98_THRESHOLD.pm | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/fhem/FHEM/98_THRESHOLD.pm b/fhem/FHEM/98_THRESHOLD.pm index 603582c1e..eaca83590 100644 --- a/fhem/FHEM/98_THRESHOLD.pm +++ b/fhem/FHEM/98_THRESHOLD.pm @@ -48,8 +48,7 @@ THRESHOLD_Define($$$) my $cmd2; my $cmd_default; my $actor; - my $init_desired_value; - + if (@b > 4 || @a < 3 || @a > 5) { my $msg = "wrong syntax: define THRESHOLD " . "[:[:][:] [AND|OR [:][:]] [][|][|][|]"; @@ -69,23 +68,26 @@ THRESHOLD_Define($$$) $hash->{sensor} = $sensor; $reading = "temperature" if (!$reading); - if (!$hysteresis) { - if ($reading eq "temperature") { + if ($hysteresis eq "") { + if ($reading eq "temperature" or $reading eq "temp") { $hysteresis=1; - } else { - $hysteresis=20; - } + } elsif ($reading eq "humidity") { + $hysteresis=10; + } else { + $hysteresis=0; + } } elsif ($hysteresis !~ m/^[\d\.]*$/ ) { my $msg = "$pn: THRESHOLD: hysteresis needs a numeric parameter"; Log 2, $msg; return $msg; - } elsif ($init_desired_value) { - if ($init_desired_value !~ m/^[-\d\.]*$/) { - my $msg = "$pn: THRESHOLD: init_desired_value needs a numeric parameter"; - Log 2, $msg; - return $msg; - } + } + if ($init_desired_value ne "") { + if ($init_desired_value !~ m/^[-\d\.]*$/) { + my $msg = "$pn: THRESHOLD: init_desired_value needs a numeric parameter"; + Log 2, $msg; + return $msg; } + } $hash->{sensor_reading} = $reading; $hash->{hysteresis} = $hysteresis; @@ -144,7 +146,7 @@ THRESHOLD_Define($$$) $hash->{helper}{actor_cmd_default} = $cmd_default; $hash->{STATE} = 'initialized' if (!ReadingsVal($pn,"desired_value","")); - if ($init_desired_value) + if ($init_desired_value ne "") { readingsBeginUpdate ($hash); readingsBulkUpdate ($hash, "state", "active $init_desired_value");