From 3bfbae4b347e93ffa57241701532c47fd49dca4b Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Mon, 29 Dec 2008 13:03:27 +0000 Subject: [PATCH] at drift fixed git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@308 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- CHANGED | 1 + FHEM/11_FHT.pm | 2 +- FHEM/90_at.pm | 7 +++++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGED b/CHANGED index 8b263a493..213279195 100644 --- a/CHANGED +++ b/CHANGED @@ -469,3 +469,4 @@ - =DATE= (4.6) - bugfix: fht actuator message clarification by Klaus - feature: getstate command from Martin (25.12) + - bugfix: at drifts for relative timespecs diff --git a/FHEM/11_FHT.pm b/FHEM/11_FHT.pm index 0f56c1c42..7d1f68551 100755 --- a/FHEM/11_FHT.pm +++ b/FHEM/11_FHT.pm @@ -368,7 +368,7 @@ FHT_Parse($$) if($sval =~ m/.0/) { $val = "syncnow" } elsif($sval =~ m/.1/) { $val = "99%" } # FHT set to 30.5, FHT80B=="ON" elsif($sval =~ m/.2/) { $val = "0%" } # FHT set to 5.5 - elsef($sval =~ m/.6/) { $val = "$fv" } + elsif($sval =~ m/.6/) { $val = "$fv" } elsif($sval =~ m/.8/) { $val = "offset: $fv" } elsif($sval =~ m/.a/) { $val = "lime-protection" } elsif($sval =~ m/.c/) { $val = "synctime" } diff --git a/FHEM/90_at.pm b/FHEM/90_at.pm index c36f330a0..cbb2c6685 100755 --- a/FHEM/90_at.pm +++ b/FHEM/90_at.pm @@ -18,6 +18,8 @@ at_Initialize($) } +my $at_tdiff; + ##################################### sub at_Define($$) @@ -52,6 +54,7 @@ at_Define($$) if($rel ne "+"); $nt += ($hr*3600+$min*60+$sec); # Plus relative time $nt += 86400 if($ot >= $nt);# Do it tomorrow... + $nt += $at_tdiff if(defined($at_tdiff)); @lt = localtime($nt); my $ntm = sprintf("%02d:%02d:%02d", $lt[2], $lt[1], $lt[0]); @@ -106,6 +109,9 @@ at_Exec($) my $def = $defs{$name}{DEF}; my $oldattr = $attr{$name}; # delete removes the attributes too + + # Correct drift when the timespec is relative + $at_tdiff = $defs{$name}{TRIGGERTIME}-gettimeofday() if($def =~ m/^\+/); CommandDelete(undef, $name); # Recreate ourselves if($count) { @@ -113,6 +119,7 @@ at_Exec($) CommandDefine(undef, "$name at $def"); # Recompute the next TRIGGERTIME $attr{$name} = $oldattr; } + $at_tdiff = undef; } sub