From 28b5a54ccbccbac95e48a9b4eacde53e57cdf33f Mon Sep 17 00:00:00 2001 From: damian-s <> Date: Sat, 17 Jan 2015 20:51:14 +0000 Subject: [PATCH] 98_THRESHOLD.pm: new attribut desiredActivate git-svn-id: https://svn.fhem.de/fhem/trunk@7606 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/98_THRESHOLD.pm | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/fhem/FHEM/98_THRESHOLD.pm b/fhem/FHEM/98_THRESHOLD.pm index 7dd67d4f4..b7c33f15e 100644 --- a/fhem/FHEM/98_THRESHOLD.pm +++ b/fhem/FHEM/98_THRESHOLD.pm @@ -34,7 +34,7 @@ THRESHOLD_Initialize($) $hash->{SetFn} = "THRESHOLD_Set"; $hash->{AttrFn} = "THRESHOLD_Attr"; $hash->{NotifyFn} = "THRESHOLD_Notify"; - $hash->{AttrList} = "disable:0,1 loglevel:0,1,2,3,4,5,6 state_format state_cmd1_gt state_cmd2_lt target_func number_format setOnDeactivated:cmd1_gt,cmd2_lt"; + $hash->{AttrList} = "disable:0,1 loglevel:0,1,2,3,4,5,6 state_format state_cmd1_gt state_cmd2_lt target_func number_format setOnDeactivated:cmd1_gt,cmd2_lt desiredActivate:0,1"; } @@ -269,7 +269,6 @@ THRESHOLD_Set($@) my $mode; my $state_format = AttrVal($pn, "state_format", "_m _dv"); my $cmd = AttrVal($pn, "setOnDeactivated", ""); - if ($arg eq "desired" ) { return "$pn: set desired value:$value, desired value needs a numeric parameter" if(@a != 3 || $value !~ m/^[-\d\.]*$/); @@ -283,17 +282,18 @@ THRESHOLD_Set($@) $state_format =~ s/\_s1v//g; $state_format =~ s/\_s2s//g; $state_format =~ s/\_sc//g; - + $ret=CommandDeleteAttr(undef, "$pn disable") if (AttrVal($pn, "desiredActivate", "")); readingsBeginUpdate ($hash); - readingsBulkUpdate ($hash, "mode", $mode); - readingsBulkUpdate ($hash, "state", $state_format) if (!($state_format =~/^[ ]*$/)); + if (!AttrVal($pn, "disable", "")) { + readingsBulkUpdate ($hash, "mode", $mode); + readingsBulkUpdate ($hash, "state", $state_format) if (!($state_format =~/^[ ]*$/)); + } + readingsBulkUpdate ($hash, "cmd","wait for next cmd"); readingsBulkUpdate ($hash, "threshold_min",$value-$hash->{hysteresis}+$offset); readingsBulkUpdate ($hash, "threshold_max", $value+$offset); - readingsBulkUpdate ($hash, "cmd","wait for next cmd"); readingsBulkUpdate ($hash, "desired_value", $value); readingsEndUpdate ($hash, 1); - $ret=CommandDeleteAttr(undef, "$pn disable"); - return THRESHOLD_Check($hash); + return THRESHOLD_Check($hash) if (!AttrVal($pn, "disable", "")); } elsif ($arg eq "deactivated" ) { $cmd = $value if ($value ne ""); if ($cmd ne "") { @@ -315,6 +315,7 @@ THRESHOLD_Set($@) } elsif ($arg eq "active" ) { return "$pn: set active, set desired value first" if ($desired_value eq ""); $ret=CommandDeleteAttr(undef, "$pn disable"); + return THRESHOLD_Check($hash); } elsif ($arg eq "external" ) { $ret=CommandDeleteAttr(undef, "$pn disable"); if (!$ret) { @@ -405,6 +406,9 @@ THRESHOLD_Check($) { my ($hash) = @_; my $pn = $hash->{NAME}; + + return "" if (AttrVal($pn, "disable", "")); + my $sensor = $hash->{sensor}; my $reading = $hash->{sensor_reading}; my $target_sensor = $hash->{target_sensor}; @@ -920,6 +924,8 @@ THRESHOLD_setValue($$) attr TH_heating target_func -0.578*_tv+33.56
  • setOnDeactivated
  • Command to be executed before deactivating. Possible values: cmd1_gt, cmd2_lt
    +
  • desiredActivate
  • + If the attribute is set to 1, a disabled module is automatically activated by "set ... desired ". "set ... active" is not needed in this case.

    @@ -1265,8 +1271,10 @@ THRESHOLD_setValue($$) Hier kann ein Perlausdruck angegeben werden, um aus dem Vorgabewert eines externen Sensors (target_value) einen Sollwert zu berechnen.
    Der Sensorwert wird mit "_tv" im Ausdruck angegeben. Siehe dazu Beispiele oben zur Steuerung der Heizung nach einer Heizkennlinie.
  • setOnDeactivated
  • - Kommando, welches vor dem Deaktivieren ausgeführt werden soll. Mögliche Angaben: cmd1_gt, cmd2_lt
    - + Kommando, welches durch das Deaktivieren per "set ... deactivated" automatisch ausgeführt werden soll. Mögliche Angaben: cmd1_gt, cmd2_lt
    +
  • desiredActivate
  • + Wenn das Attribut auf 1 gesetzt ist, wird ein deaktiviertes Modul durch "set ... desired " automatisch aktiviert. "set ... active" ist dann nicht erforderlich.
    +
    =end html_DE