From ce9d24fa5e52060f80dc4722320b4ca27cb08334 Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Mon, 21 Sep 2020 10:19:17 +0000 Subject: [PATCH] 91_sequence.pm: set sequence_source for partial events (Forum #71671) git-svn-id: https://svn.fhem.de/fhem/trunk@22810 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/91_sequence.pm | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/fhem/FHEM/91_sequence.pm b/fhem/FHEM/91_sequence.pm index 4a29b81a2..55a88ed93 100644 --- a/fhem/FHEM/91_sequence.pm +++ b/fhem/FHEM/91_sequence.pm @@ -17,6 +17,7 @@ sequence_Initialize($) $hash->{NotifyFn} = "sequence_Notify"; no warnings 'qw'; my @attrList = qw( + addStateEvent:1,0 disable:0,1 disabledForIntervals reportEvents:1,0 @@ -75,14 +76,17 @@ sequence_Notify($$) my $n = $dev->{NAME}; my $re = $hash->{RE}; - my $max = int(@{$dev->{CHANGED}}); + my $events = deviceEvents($dev, AttrVal($ln, "addStateEvent", 0)); + return if(!$events); + my $max = int(@{$events}); for (my $i = 0; $i < $max; $i++) { - my $s = $dev->{CHANGED}[$i]; + my $s = $events->[$i]; $s = "" if(!defined($s)); next if($n !~ m/^$re$/ && "$n:$s" !~ m/^$re$/); RemoveInternalTimer($ln); + $hash->{last_source} = $n; if($hash->{TS} > gettimeofday()) { # the delay stuff sequence_Trigger($ln, "abort"); @@ -103,7 +107,7 @@ sequence_Notify($$) Log3 $ln, 5, "sequence $ln $tt"; setReadingsVal($hash, "state", "active", TimeNow()); - $data{sequence_source} = $dev->{NAME}; + $data{sequence_source} = $n; DoTrigger($ln, $tt); delete($data{sequence_source}); $idx = 0; @@ -141,7 +145,12 @@ sequence_Trigger($$) $tt .= $hash->{EVENTS} if(AttrVal($ln, "reportEvents", undef)); delete($hash->{EVENTS}); - DoTrigger($ln, $tt) if(AttrVal($ln, "triggerPartial", undef)); + if(AttrVal($ln, "triggerPartial", undef)) { + $data{sequence_source} = $hash->{last_source}; + DoTrigger($ln, $tt); + delete($data{sequence_source}); + } + delete($hash->{last_source}); } sub @@ -219,6 +228,7 @@ sequence_Undef($$) Attributes
@@ -327,7 +339,7 @@ sequence_Undef($$)
gedrückt wurde.