diff --git a/fhem/FHEM/98_structure.pm b/fhem/FHEM/98_structure.pm index 04ccec6f7..ef9344aa6 100644 --- a/fhem/FHEM/98_structure.pm +++ b/fhem/FHEM/98_structure.pm @@ -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: set <devN>:FILTER=<filter> <type-specific>
If the last set parameter is "reverse", then execute the set commands in - the reverse order. + the reverse order.
+ If the last set parameter is given as "random:4" only 4 structure members will + be selected randomly which will receive the given command.

@@ -899,15 +916,17 @@ structure_Attr($@)
Jedes andere set Kommando wird an alle Devices dieser Struktur weitergegeben.
- 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.
Wenn das set Kommando diese Form hat set <structure> [FILTER=<filter>] <type-specific> 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: set <devN>:FILTER=<filter> <type-specific>
Falls der letzte Parameter reverse ist, dann werden die Befehle in der - umgekehrten Reihenfolge ausgeführt. + umgekehrten Reihenfolge ausgeführt.
+ Falls der letzte Parameter dem Muster "random:4" entspricht, erhalten nur 4 + zufällig ausgewählte Devices den Befehl.