diff --git a/fhem/contrib/DS_Starter/49_SSCamSTRM.pm b/fhem/contrib/DS_Starter/49_SSCamSTRM.pm index 20efe4c67..f36129423 100644 --- a/fhem/contrib/DS_Starter/49_SSCamSTRM.pm +++ b/fhem/contrib/DS_Starter/49_SSCamSTRM.pm @@ -132,6 +132,7 @@ my %fupgrade = ( # Fun ); my %hvattr = ( # Hash zur Validierung von Attributen + adoptSubset => { master => 1, nomaster => 0 }, autoRefresh => { master => 1, nomaster => 1 }, autoRefreshFW => { master => 1, nomaster => 1 }, disable => { master => 1, nomaster => 1 }, @@ -160,11 +161,13 @@ sub Initialize { my $hash = shift; my $fwd = join(",",devspec2array("TYPE=FHEMWEB:FILTER=STATE=Initialized")); + my $sd = "--reset--,".allStreamDevs(); $hash->{DefFn} = \&Define; $hash->{SetFn} = \&Set; $hash->{GetFn} = \&Get; - $hash->{AttrList} = "autoRefresh:selectnumbers,120,0.2,1800,0,log10 ". + $hash->{AttrList} = "adoptSubset:sortable-strict,$sd ". + "autoRefresh:selectnumbers,120,0.2,1800,0,log10 ". "autoRefreshFW:$fwd ". "disable:1,0 ". "forcePageRefresh:1,0 ". @@ -218,6 +221,7 @@ sub Define { setVersionInfo($hash); my @r; + push @r, "adoptSubset:--reset--"; # Init für FTUI Subset wenn benutzt (Attr adoptSubset) push @r, "parentState:initialized"; # Init für "parentState" Forum: https://forum.fhem.de/index.php/topic,45671.msg985136.html#msg985136 push @r, "state:initialized"; # Init für "state" push @r, "parentCam:initialized"; # Init für Elternkamera @@ -285,10 +289,12 @@ sub Set { "popupStream " ; } else { - my $sd = "--reset--,".allStreamDevs(); - my $rsd = $sd; - $rsd =~ s/#/ /g; ## no critic 'regular expression' # Regular expression without "/x" flag nicht anwenden !!! + my $as = "--reset--,".allStreamDevs(); + my $sd = AttrVal($name, "adoptSubset", $as); + $sd =~ s/\s+/#/gx; + my $rsd = $as; + $rsd =~ s/#/ /g; ## no critic 'regular expression' # Regular expression without "/x" flag nicht anwenden !!! push my @ado, "adoptList:$rsd"; setReadings($hash, \@ado, 0); @@ -429,6 +435,10 @@ sub Attr { return qq{The attribute "$aName" is only valid if MODEL is "master" !}; } + if($aName eq "genericStrmHtmlTag" && $hash->{MODEL} ne "generic") { + return qq{This attribute is only valid if MODEL is "generic" !}; + } + if($aName eq "disable") { if($cmd eq "set") { $do = ($aVal) ? 1 : 0; @@ -439,8 +449,12 @@ sub Attr { readingsSingleUpdate($hash, "state", $val, 1); } - if($aName eq "genericStrmHtmlTag" && $hash->{MODEL} ne "generic") { - return "This attribute is only usable for devices of MODEL \"generic\" "; + if($aName eq "adoptSubset") { + if($cmd eq "set") { + readingsSingleUpdate($hash, "adoptSubset", $aVal, 1); + } else { + readingsSingleUpdate($hash, "adoptSubset", "--reset--", 1); + } } if ($cmd eq "set") { @@ -674,7 +688,7 @@ sub delReadings { my $rd = shift; my $name = $hash->{NAME}; - my $bl = "state|parentState"; # Blacklist + my $bl = "state|parentState|adoptSubset"; # Blacklist if($rd) { # angegebenes Reading löschen wenn nicht im providerLevel enthalten # delete($hash->{READINGS}{$rd}) if($rd !~ /$bl/x); @@ -756,9 +770,11 @@ sub sDevsWidget { my $name = shift; my $Adopts; - my $ret = ""; - my $cmdAdopt = "adopt"; - my $valAdopts = "--reset--,".allStreamDevs(); + my $ret = ""; + my $cmdAdopt = "adopt"; + my $as = "--reset--,".allStreamDevs(); + my $valAdopts = AttrVal($name, "adoptSubset", $as); + $valAdopts =~ s/\s+/#/gx; for my $fn (sort keys %{$data{webCmdFn}}) { next if($data{webCmdFn}{$fn} ne "FW_widgetFallbackFn"); @@ -778,11 +794,9 @@ sub sDevsWidget { $ret .= ""; $ret .= '
Streaming Device: | $Adopts | "; - $ret .= "
Streaming Device: | $Adopts | "; + $ret .= "