mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-01-31 06:39:11 +00:00
98_structure.pm: add random as set "filter" (Forum #137517)
git-svn-id: https://svn.fhem.de/fhem/trunk@28671 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
9dc101bd4a
commit
1c0bf47281
@ -429,6 +429,21 @@ structure_Set($@)
|
||||
@devList = reverse @devList;
|
||||
}
|
||||
|
||||
if(@list > 1 && $list[$#list] =~ m/^random:(\d+)/) { #137517
|
||||
my $selCount = $1;
|
||||
my $devCount = $#devList + 1;
|
||||
$selCount = $devCount if ($selCount > $devCount || $selCount < 1);
|
||||
my @selDev = @devList;
|
||||
@devList = ();
|
||||
for (1..$selCount) {
|
||||
my $n = int(rand($devCount));
|
||||
redo if ($selDev[$n] eq "");
|
||||
push(@devList,$selDev[$n]);
|
||||
$selDev[$n] = "";
|
||||
}
|
||||
pop @list;
|
||||
}
|
||||
|
||||
if($list[1] =~ m/^(save|restore)StructState$/) {
|
||||
return "Usage: set $me $list[1] readingName" if(@list != 3);
|
||||
return "Bad reading name $list[2]" if(!goodReadingName($list[2]));
|
||||
@ -670,7 +685,9 @@ structure_Attr($@)
|
||||
propagated set for the attached devices like this: <code>set
|
||||
<devN>:FILTER=<filter> <type-specific></code><br>
|
||||
If the last set parameter is "reverse", then execute the set commands in
|
||||
the reverse order.
|
||||
the reverse order.<br/>
|
||||
If the last set parameter is given as "random:4" only 4 structure members will
|
||||
be selected randomly which will receive the given command.<br/>
|
||||
</ul>
|
||||
<br>
|
||||
|
||||
@ -899,15 +916,17 @@ structure_Attr($@)
|
||||
</li><br>
|
||||
Jedes andere set Kommando wird an alle Devices dieser Struktur
|
||||
weitergegeben.<br>
|
||||
Aussnahme: das Attribut structexclude ist in einem Device definiert und
|
||||
Ausnahme: das Attribut structexclude ist in einem Device definiert und
|
||||
dessen Attributwert matched als Regexp zum Namen der aktuellen
|
||||
Struktur.<br> Wenn das set Kommando diese Form hat <code>set
|
||||
<structure> [FILTER=<filter>] <type-specific></code> wird
|
||||
:FILTER=<filter> bei der Weitergebe der set an jeden Devicenamen wie
|
||||
:FILTER=<filter> bei der Weitergabe der set an jeden Devicenamen wie
|
||||
folgt angehängt: <code>set <devN>:FILTER=<filter>
|
||||
<type-specific></code><br>
|
||||
Falls der letzte Parameter reverse ist, dann werden die Befehle in der
|
||||
umgekehrten Reihenfolge ausgeführt.
|
||||
umgekehrten Reihenfolge ausgeführt.<br/>
|
||||
Falls der letzte Parameter dem Muster "random:4" entspricht, erhalten nur 4
|
||||
zufällig ausgewählte Devices den Befehl.<br/>
|
||||
</ul>
|
||||
<br>
|
||||
<a id="structure-get"></a>
|
||||
|
Loading…
Reference in New Issue
Block a user