From 70446b02b75b7ee3544d6ef4d31dda929c0a6163 Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Mon, 10 Jul 2023 09:32:40 +0000 Subject: [PATCH] sequence.pm: add strictSequence Attribute (Forum #121953) git-svn-id: https://svn.fhem.de/fhem/trunk@27742 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/91_sequence.pm | 73 ++++++++++++++++++++++++++++------------ 1 file changed, 52 insertions(+), 21 deletions(-) diff --git a/fhem/FHEM/91_sequence.pm b/fhem/FHEM/91_sequence.pm index 55a88ed93..a14af53e7 100644 --- a/fhem/FHEM/91_sequence.pm +++ b/fhem/FHEM/91_sequence.pm @@ -23,6 +23,7 @@ sequence_Initialize($) reportEvents:1,0 triggerPartial:1,0 showtime:1,0 + strictSequence:1,0 ); use warnings 'qw'; $hash->{AttrList} = join(" ", @attrList); @@ -79,11 +80,17 @@ sequence_Notify($$) my $events = deviceEvents($dev, AttrVal($ln, "addStateEvent", 0)); return if(!$events); my $max = int(@{$events}); + my $strictSequence = AttrVal($ln, "strictSequence", 0); for (my $i = 0; $i < $max; $i++) { my $s = $events->[$i]; $s = "" if(!defined($s)); - next if($n !~ m/^$re$/ && "$n:$s" !~ m/^$re$/); + if($n !~ m/^$re$/ && "$n:$s" !~ m/^$re$/) { + next if(!$strictSequence && $hash->{IDX}); + RemoveInternalTimer($ln); + sequence_Trigger($ln, "abort-strict"); + return ""; + } RemoveInternalTimer($ln); $hash->{last_source} = $n; @@ -169,12 +176,12 @@ sequence_Undef($$) =item summary_DE generiert Event nach Empfang einer definierten Event-Sequenz =begin html - +
define <name> sequence <re1> <timeout1>
@@ -219,20 +226,21 @@ sequence_Undef($$)
fhem> define seq sequence d1:on 1 d1:on 1 d1:on
@@ -243,17 +251,28 @@ sequence_Undef($$)
tasks for a single button, depending on the number of times it is
pressed.
- define seq sequence remote:btn.* remote:btn.*
+ define seq sequence remote:btn.* 1 remote:btn.*
attr seq reportEvents
define n_b1b2 notify seq:trigger.remote:btn1.remote:btn2 set lamp1 on
define n_b2b1 notify seq:trigger.remote:btn2.remote:btn1 set lamp1 off
define <name> sequence <re1> <timeout1>
@@ -312,21 +331,21 @@ sequence_Undef($$)
@@ -339,18 +358,30 @@ sequence_Undef($$)
gedrückt wurde.
- define seq sequence remote:btn.* remote:btn.*
+ define seq sequence remote:btn.* 1 remote:btn.*
attr seq reportEvents
define n_b1b2 notify seq:trigger.remote:btn1.remote:btn2 set lamp1 on
define n_b2b1 notify seq:trigger.remote:btn2.remote:btn1 set lamp1 off