mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-14 05:46:35 +00:00
Fixing double-trigger bug introduced with r3308
(see http://forum.fhem.de/index.php?t=rview&th=13437) git-svn-id: https://svn.fhem.de/fhem/trunk@3312 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
590768ed4e
commit
c17f885f98
12
fhem/fhem.pl
12
fhem/fhem.pl
@ -186,7 +186,6 @@ my $intAtCnt=0;
|
|||||||
my %duplicate; # Pool of received msg for multi-fhz/cul setups
|
my %duplicate; # Pool of received msg for multi-fhz/cul setups
|
||||||
my $duplidx=0; # helper for the above pool
|
my $duplidx=0; # helper for the above pool
|
||||||
my $readingsUpdateDelayTrigger; # needed internally
|
my $readingsUpdateDelayTrigger; # needed internally
|
||||||
my $readingsUpdateUsed; # needed internally
|
|
||||||
my $cvsid = '$Id$';
|
my $cvsid = '$Id$';
|
||||||
my $namedef =
|
my $namedef =
|
||||||
"where <name> is either:\n" .
|
"where <name> is either:\n" .
|
||||||
@ -1188,18 +1187,19 @@ DoSet(@)
|
|||||||
return CallFn($dev, "SetFn", $hash, @a) if($a[1] && $a[1] eq "?");
|
return CallFn($dev, "SetFn", $hash, @a) if($a[1] && $a[1] eq "?");
|
||||||
|
|
||||||
@a = ReplaceEventMap($dev, \@a, 0) if($attr{$dev}{eventMap});
|
@a = ReplaceEventMap($dev, \@a, 0) if($attr{$dev}{eventMap});
|
||||||
$readingsUpdateUsed = 0;
|
$hash->{".triggerUsed"} = 0;
|
||||||
my ($ret, $skipTrigger) = CallFn($dev, "SetFn", $hash, @a);
|
my ($ret, $skipTrigger) = CallFn($dev, "SetFn", $hash, @a);
|
||||||
return $ret if($ret);
|
return $ret if($ret);
|
||||||
return undef if($skipTrigger);
|
return undef if($skipTrigger);
|
||||||
|
|
||||||
# Backward compatibility. Use readingsUpdate in SetFn now
|
# Backward compatibility. Use readingsUpdate in SetFn now
|
||||||
if(!$readingsUpdateUsed) {
|
if(!$hash->{".triggerUsed"}) {
|
||||||
shift @a;
|
shift @a;
|
||||||
# set arg if the module did not triggered events
|
# set arg if the module did not triggered events
|
||||||
my $arg = join(" ", @a) if(!$hash->{CHANGED} || !int(@{$hash->{CHANGED}}));
|
my $arg = join(" ", @a) if(!$hash->{CHANGED} || !int(@{$hash->{CHANGED}}));
|
||||||
DoTrigger($dev, $arg, 0);
|
DoTrigger($dev, $arg, 0);
|
||||||
}
|
}
|
||||||
|
delete($hash->{".triggerUsed"});
|
||||||
|
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
@ -2337,6 +2337,7 @@ DoTrigger($$@)
|
|||||||
my $hash = $defs{$dev};
|
my $hash = $defs{$dev};
|
||||||
return "" if(!defined($hash));
|
return "" if(!defined($hash));
|
||||||
|
|
||||||
|
$hash->{".triggerUsed"} = 1 if(defined($hash->{".triggerUsed"}));
|
||||||
if(defined($newState)) {
|
if(defined($newState)) {
|
||||||
if($hash->{CHANGED}) {
|
if($hash->{CHANGED}) {
|
||||||
push @{$hash->{CHANGED}}, $newState;
|
push @{$hash->{CHANGED}}, $newState;
|
||||||
@ -2428,7 +2429,8 @@ CallFn(@)
|
|||||||
my $d = shift;
|
my $d = shift;
|
||||||
my $n = shift;
|
my $n = shift;
|
||||||
|
|
||||||
if(!$defs{$d}) {
|
if(!$d || !$defs{$d}) {
|
||||||
|
$d = "<undefined>" if(!defined($d));
|
||||||
Log 0, "Strange call for nonexistent $d: $n";
|
Log 0, "Strange call for nonexistent $d: $n";
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
@ -3135,7 +3137,7 @@ readingsEndUpdate($$)
|
|||||||
my ($hash,$dotrigger)= @_;
|
my ($hash,$dotrigger)= @_;
|
||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
|
|
||||||
$readingsUpdateUsed = 1;
|
$hash->{".triggerUsed"} = 1 if(defined($hash->{".triggerUsed"}));
|
||||||
|
|
||||||
# process user readings
|
# process user readings
|
||||||
if(defined($hash->{'.userReadings'})) {
|
if(defined($hash->{'.userReadings'})) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user