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.