mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-08 13:24:56 +00:00
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
This commit is contained in:
parent
2ed74d2c00
commit
ce9d24fa5e
@ -17,6 +17,7 @@ sequence_Initialize($)
|
|||||||
$hash->{NotifyFn} = "sequence_Notify";
|
$hash->{NotifyFn} = "sequence_Notify";
|
||||||
no warnings 'qw';
|
no warnings 'qw';
|
||||||
my @attrList = qw(
|
my @attrList = qw(
|
||||||
|
addStateEvent:1,0
|
||||||
disable:0,1
|
disable:0,1
|
||||||
disabledForIntervals
|
disabledForIntervals
|
||||||
reportEvents:1,0
|
reportEvents:1,0
|
||||||
@ -75,14 +76,17 @@ sequence_Notify($$)
|
|||||||
|
|
||||||
my $n = $dev->{NAME};
|
my $n = $dev->{NAME};
|
||||||
my $re = $hash->{RE};
|
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++) {
|
for (my $i = 0; $i < $max; $i++) {
|
||||||
my $s = $dev->{CHANGED}[$i];
|
my $s = $events->[$i];
|
||||||
$s = "" if(!defined($s));
|
$s = "" if(!defined($s));
|
||||||
next if($n !~ m/^$re$/ && "$n:$s" !~ m/^$re$/);
|
next if($n !~ m/^$re$/ && "$n:$s" !~ m/^$re$/);
|
||||||
|
|
||||||
RemoveInternalTimer($ln);
|
RemoveInternalTimer($ln);
|
||||||
|
$hash->{last_source} = $n;
|
||||||
|
|
||||||
if($hash->{TS} > gettimeofday()) { # the delay stuff
|
if($hash->{TS} > gettimeofday()) { # the delay stuff
|
||||||
sequence_Trigger($ln, "abort");
|
sequence_Trigger($ln, "abort");
|
||||||
@ -103,7 +107,7 @@ sequence_Notify($$)
|
|||||||
|
|
||||||
Log3 $ln, 5, "sequence $ln $tt";
|
Log3 $ln, 5, "sequence $ln $tt";
|
||||||
setReadingsVal($hash, "state", "active", TimeNow());
|
setReadingsVal($hash, "state", "active", TimeNow());
|
||||||
$data{sequence_source} = $dev->{NAME};
|
$data{sequence_source} = $n;
|
||||||
DoTrigger($ln, $tt);
|
DoTrigger($ln, $tt);
|
||||||
delete($data{sequence_source});
|
delete($data{sequence_source});
|
||||||
$idx = 0;
|
$idx = 0;
|
||||||
@ -141,7 +145,12 @@ sequence_Trigger($$)
|
|||||||
$tt .= $hash->{EVENTS} if(AttrVal($ln, "reportEvents", undef));
|
$tt .= $hash->{EVENTS} if(AttrVal($ln, "reportEvents", undef));
|
||||||
delete($hash->{EVENTS});
|
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
|
sub
|
||||||
@ -219,6 +228,7 @@ sequence_Undef($$)
|
|||||||
<a name="sequenceattr"></a>
|
<a name="sequenceattr"></a>
|
||||||
<b>Attributes</b>
|
<b>Attributes</b>
|
||||||
<ul>
|
<ul>
|
||||||
|
<li><a href="#addStateEvent">addStateEvent</a></li>
|
||||||
<li><a href="#disable">disable</a></li>
|
<li><a href="#disable">disable</a></li>
|
||||||
<li><a href="#disabledForIntervals">disabledForIntervals</a></li>
|
<li><a href="#disabledForIntervals">disabledForIntervals</a></li>
|
||||||
<li><a href="#showtime">showtime</a></li>
|
<li><a href="#showtime">showtime</a></li>
|
||||||
@ -311,10 +321,12 @@ sequence_Undef($$)
|
|||||||
<a name="sequenceattr"></a>
|
<a name="sequenceattr"></a>
|
||||||
<b>Attributes</b>
|
<b>Attributes</b>
|
||||||
<ul>
|
<ul>
|
||||||
|
<li><a href="#addStateEvent">addStateEvent</a></li>
|
||||||
<li><a href="#disable">disable</a></li>
|
<li><a href="#disable">disable</a></li>
|
||||||
<li><a href="#disabledForIntervals">disabledForIntervals</a></li>
|
<li><a href="#disabledForIntervals">disabledForIntervals</a></li>
|
||||||
<li><a href="#showtime">showtime</a></li>
|
<li><a href="#showtime">showtime</a></li>
|
||||||
<li><a href="#triggerPartial">triggerPartial</a><br>
|
|
||||||
|
<li><a href="#sequencetriggerPartial">triggerPartial</a><br>
|
||||||
Falls gesetzt (auf 1), und nicht alle erwarteten Events eingetroffen
|
Falls gesetzt (auf 1), und nicht alle erwarteten Events eingetroffen
|
||||||
sind, dann wird ein partial_X Event generiert, wobei X durch Anzahl der
|
sind, dann wird ein partial_X Event generiert, wobei X durch Anzahl der
|
||||||
eingetroffenen Events ersetzt wird. Beispiel:<br><code><ul>
|
eingetroffenen Events ersetzt wird. Beispiel:<br><code><ul>
|
||||||
@ -327,7 +339,7 @@ sequence_Undef($$)
|
|||||||
gedrückt wurde.
|
gedrückt wurde.
|
||||||
</li><br>
|
</li><br>
|
||||||
|
|
||||||
<li><a href="#reportEvents">reportEvents</a><br>
|
<li><a href="#sequencereportEvents">reportEvents</a><br>
|
||||||
Falls gesetzt (auf 1), meldet trigger die empfangenen Events (Leerzeichen
|
Falls gesetzt (auf 1), meldet trigger die empfangenen Events (Leerzeichen
|
||||||
getrennt) nach dem "trigger" oder "partial_X" Schlüsselwort.
|
getrennt) nach dem "trigger" oder "partial_X" Schlüsselwort.
|
||||||
Das kann verwendet werden, um generische sequence Instanzen zu definieren:
|
Das kann verwendet werden, um generische sequence Instanzen zu definieren:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user