From 53a7655989d46ddc35ebd82acc51ca595ce5d4ee Mon Sep 17 00:00:00 2001 From: rudolfkoenig Date: Wed, 11 Mar 2015 06:29:43 +0000 Subject: [PATCH] 90_at.pm: fix dissableForIntervals bug (Forum #34864) git-svn-id: https://svn.fhem.de/fhem/trunk@8192 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/90_at.pm | 12 +++++------- fhem/fhem.pl | 4 ++-- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/fhem/FHEM/90_at.pm b/fhem/FHEM/90_at.pm index b688ebdd0..9fea6ea2b 100755 --- a/fhem/FHEM/90_at.pm +++ b/fhem/FHEM/90_at.pm @@ -110,9 +110,8 @@ at_Define($$) RemoveInternalTimer($hash); InternalTimer($nt, "at_Exec", $hash, 0); $hash->{NTM} = $ntm if($rel eq "+" || $fn); - my $val = IsDisabled($name) ? - (AttrVal($name, "disable", undef) ? "disabled" : "inactive") : - ("Next: ".FmtTime($nt)); + my $d = IsDisabled($name); # 1 + my $val = ($d==3 ? "inactive" : ($d ? "disabled":("Next: ".FmtTime($nt)))); readingsSingleUpdate($hash, "state", $val, !$hash->{READINGS}{state} || $hash->{READINGS}{state}{VAL} ne $val); } @@ -138,13 +137,12 @@ at_Exec($) my $name = $hash->{NAME}; Log3 $name, 5, "exec at command $name"; - my $skip = AttrVal($name, "skip_next", undef); - my $disable = IsDisabled($name); - + my $skip = AttrVal($name, "skip_next", undef); delete $attr{$name}{skip_next} if($skip); my $command = SemicolonEscape($hash->{COMMAND}); - my $ret = AnalyzeCommandChain(undef, $command) if(!$skip && !$disable); + my $ret = AnalyzeCommandChain(undef, $command) + if(!$skip && !IsDisabled($name)); Log3 $name, 3, "$name: $ret" if($ret); return if($hash->{DELETED}); # Deleted in the Command diff --git a/fhem/fhem.pl b/fhem/fhem.pl index 517e9ab87..bd95f64c2 100755 --- a/fhem/fhem.pl +++ b/fhem/fhem.pl @@ -695,7 +695,7 @@ IsDisabled($) return 0 if(!$devname || !defined($attr{$devname})); return 1 if($attr{$devname}{disable}); - return 1 if($defs{$devname} && $defs{$devname}{STATE} && + return 3 if($defs{$devname} && $defs{$devname}{STATE} && $defs{$devname}{STATE} eq "inactive"); my $dfi = $attr{$devname}{disabledForIntervals}; @@ -704,7 +704,7 @@ IsDisabled($) my $hms = sprintf("%02d:%02d:%02d", $hour, $min, $sec); foreach my $ft (split(" ", $dfi)) { my ($from, $to) = split("-", $ft); - return 1 if($from && $to && $from le $hms && $hms le $to); + return 2 if($from && $to && $from le $hms && $hms le $to); } }