mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-21 14:04:15 +00:00
90_at.pm: fix modify with active alignTime (Forum #27970)
git-svn-id: https://svn.fhem.de/fhem/trunk@6785 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
8671dda84a
commit
606411832d
@ -90,12 +90,21 @@ at_Define($$)
|
||||
} else {
|
||||
$hash->{VOLATILE} = 1; # Write these entries to the statefile
|
||||
}
|
||||
$hash->{NTM} = $ntm if($rel eq "+" || $fn);
|
||||
|
||||
my $alTime = AttrVal($name, "alignTime", undef);
|
||||
|
||||
if(!$data{AT_RECOMPUTE} && $alTime) {
|
||||
my $ret = at_adjustAlign($hash, $alTime);
|
||||
return $ret if($ret);
|
||||
|
||||
} else {
|
||||
$hash->{TRIGGERTIME} = $nt;
|
||||
$hash->{TRIGGERTIME_FMT} = FmtDateTime($nt);
|
||||
RemoveInternalTimer($hash);
|
||||
InternalTimer($nt, "at_Exec", $hash, 0);
|
||||
}
|
||||
|
||||
$hash->{NTM} = $ntm if($rel eq "+" || $fn);
|
||||
$hash->{STATE} = AttrVal($name, "disable", undef) ?
|
||||
"disabled" : ("Next: ".FmtTime($nt));
|
||||
return undef;
|
||||
@ -152,22 +161,16 @@ at_Exec($)
|
||||
}
|
||||
|
||||
sub
|
||||
at_Attr(@)
|
||||
at_adjustAlign($$)
|
||||
{
|
||||
my ($cmd, $name, $attrName, $attrVal) = @_;
|
||||
my $do = 0;
|
||||
my($hash, $attrVal) = @_;
|
||||
|
||||
my $hash = $defs{$name};
|
||||
|
||||
if($cmd eq "set" && $attrName eq "alignTime") {
|
||||
return "alignTime needs a list of timespec parameters" if(!$attrVal);
|
||||
my ($alErr, $alHr, $alMin, $alSec, undef) = GetTimeSpec($attrVal);
|
||||
return "$name alignTime: $alErr" if($alErr);
|
||||
|
||||
return "$hash->{NAME} alignTime: $alErr" if($alErr);
|
||||
my ($tm, $command) = split("[ \t]+", $hash->{DEF}, 2);
|
||||
$tm =~ m/^(\+)?(\*({\d+})?)?(.*)$/;
|
||||
my ($rel, $rep, $cnt, $tspec) = ($1, $2, $3, $4);
|
||||
return "startTimes: $name is not relative" if(!$rel);
|
||||
return "startTimes: $hash->{NAME} is not relative" if(!$rel);
|
||||
my (undef, $hr, $min, $sec, undef) = GetTimeSpec($tspec);
|
||||
|
||||
my $now = time();
|
||||
@ -186,6 +189,21 @@ at_Attr(@)
|
||||
$hash->{TRIGGERTIME} = $ttime;
|
||||
$hash->{TRIGGERTIME_FMT} = FmtDateTime($ttime);
|
||||
$hash->{STATE} = "Next: " . FmtTime($ttime);
|
||||
return undef;
|
||||
}
|
||||
|
||||
sub
|
||||
at_Attr(@)
|
||||
{
|
||||
my ($cmd, $name, $attrName, $attrVal) = @_;
|
||||
my $do = 0;
|
||||
|
||||
my $hash = $defs{$name};
|
||||
|
||||
if($cmd eq "set" && $attrName eq "alignTime") {
|
||||
return "alignTime needs a list of timespec parameters" if(!$attrVal);
|
||||
my $ret = at_adjustAlign($hash, $attrVal);
|
||||
return $ret if($ret);
|
||||
}
|
||||
|
||||
if($cmd eq "set" && $attrName eq "disable") {
|
||||
|
Loading…
x
Reference in New Issue
Block a user