diff --git a/fhem/CHANGED b/fhem/CHANGED index d2f53f5bb..b748f155f 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,6 @@ # Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Do not insert empty lines here, update check depends on it. + - feature: 11_OWDevice: new attribute disable (forum #122563) - change: 50_TelegramBot: parseMode for Photo & Video / FIX: 0_none logmode - feature: 19_Revolt: add standard attributes ignore, showtime etc. - feature: 23_LUXTRONIK2: new set parameter ventBOSUPCircPumpDeaerate diff --git a/fhem/FHEM/11_OWDevice.pm b/fhem/FHEM/11_OWDevice.pm index 494bde0d0..05eb71b31 100644 --- a/fhem/FHEM/11_OWDevice.pm +++ b/fhem/FHEM/11_OWDevice.pm @@ -383,7 +383,7 @@ OWDevice_Initialize($) $hash->{UndefFn} = "OWDevice_Undef"; $hash->{AttrFn} = "OWDevice_Attr"; - $hash->{AttrList} = "IODev uncached trimvalues polls interfaces model cstrings ". + $hash->{AttrList} = "IODev uncached trimvalues polls interfaces model cstrings disable:0,1 ". "resolution:9,10,11,12 ". $readingFnAttributes; } @@ -506,6 +506,9 @@ OWDevice_UpdateValues($) { my ($hash)= @_; + my $name= $hash->{NAME}; + return if (AttrVal($name, 'disable', 0) == 1); + my @polls= @{$hash->{fhem}{polls}}; my @getters= @{$hash->{fhem}{getters}}; my @state= @{$hash->{fhem}{state}}; @@ -577,7 +580,12 @@ OWDevice_Attr($@) delete $hash->{fhem}{interfaces} if(defined($hash->{fhem}{interfaces})); Log3 $name, 5, "$name: no interfaces"; } - } + } + elsif($attrName eq "disable" && ($cmd eq 'del' || $attrVal == 0)) { # restart after disable + RemoveInternalTimer($hash); + InternalTimer(int(gettimeofday()) + $hash->{fhem}{interval}, "OWDevice_UpdateValues", $hash, 0) + if(defined($hash->{fhem}{interval})); + } } ################################### @@ -714,7 +722,7 @@ OWDevice_Notify($$) return if($dev->{NAME} ne "global"); return if(!grep(m/^INITIALIZED|REREADCFG$/, @{$dev->{CHANGED}})); - return if($attr{$name} && $attr{$name}{disable}); + return if($attr{$name} && $attr{$name}{disable} == 1); OWDevice_InitValues($hash); RemoveInternalTimer($hash); @@ -908,6 +916,7 @@ OWDevice_InitValues($)