diff --git a/fhem/FHEM/10_FS20.pm b/fhem/FHEM/10_FS20.pm index d8579b5b2..b9702d7b7 100644 --- a/fhem/FHEM/10_FS20.pm +++ b/fhem/FHEM/10_FS20.pm @@ -161,12 +161,20 @@ FS20_Follow($$$$) } if($newState) { - my $to = sprintf("%02d:%02d:%02d", $val/3600, ($val%3600)/60, $val%60); - $modules{FS20}{ldata}{$name} = $to; - Log3 $name, 4, "Follow: +$to setstate $name $newState"; - CommandDefine(undef, $name."_timer at +$to ". - "{readingsSingleUpdate(\$defs{'$name'},'state','$newState', 1);". - "delete \$defs{'$name'}->{TIMED_OnOff}; undef}"); + if(int($val) == $val) { + my $to = sprintf("%02d:%02d:%02d", $val/3600, ($val%3600)/60, $val%60); + $modules{FS20}{ldata}{$name} = $to; + Log3 $name, 4, "Follow: +$to setstate $name $newState"; + CommandDefine(undef, $name."_timer at +$to ". + "{readingsSingleUpdate(\$defs{'$name'},'state','$newState', 1);". + "delete \$defs{'$name'}->{TIMED_OnOff}; undef}"); + + } else { + Log3 $name, 4, "Follow: sleep $val; setstate $name $newState"; + AnalyzeCommandChain(undef, + "sleep $val; setreading $name state $newState; ". + "{delete \$defs{'$name'}->{TIMED_OnOff};;undef}"); + } if($defs{$name}) { $defs{$name}->{TIMED_OnOff} = {