diff --git a/fhem/contrib/DS_Starter/49_SSCam.pm b/fhem/contrib/DS_Starter/49_SSCam.pm index 374755933..308b2d228 100644 --- a/fhem/contrib/DS_Starter/49_SSCam.pm +++ b/fhem/contrib/DS_Starter/49_SSCam.pm @@ -7477,12 +7477,12 @@ sub roomRefresh { my @spgs = devspec2array("TYPE=SSCamSTRM"); my $room = ""; - for(@spgs) { - if($defs{$_}{PARENT} eq $name) { - next if(IsDisabled($defs{$_}{NAME}) || !$hash->{HELPER}{INFORM} || $hash->{HELPER}{INFORM} ne $defs{$_}{FUUID}); - $fpr = AttrVal($defs{$_}{NAME},"forcePageRefresh",0); - $room = AttrVal($defs{$_}{NAME},"room",""); - Log3($name, 4, "$name - roomRefresh - pagerefresh: $defs{$_}{NAME}") if($fpr); + for my $sd (@spgs) { + if($defs{$sd}{LINKPARENT} eq $name) { + next if(IsDisabled($defs{$sd}{NAME}) || !$hash->{HELPER}{INFORM} || $hash->{HELPER}{INFORM} ne $defs{$sd}{FUUID}); + $fpr = AttrVal($defs{$sd}{NAME},"forcePageRefresh",0); + $room = AttrVal($defs{$sd}{NAME},"room",""); + Log3($name, 4, "$name - roomRefresh - pagerefresh: $defs{$sd}{NAME}") if($fpr); } } @@ -7491,8 +7491,7 @@ sub roomRefresh { if(!$fpr) { # nur Räume mit dem SSCamSTRM-Device reloaden my @rooms = split(",",$room); - for (@rooms) { - my $r = $_; + for my $r (@rooms) { { map { FW_directNotify("FILTER=room=$r", "#FHEMWEB:$_", "location.reload('true')", "") } devspec2array("TYPE=FHEMWEB") } } } @@ -7511,19 +7510,19 @@ sub roomRefresh { readingsSingleUpdate($hash,"state", $st, 0); } - # parentState des SSCamSTRM-Device updaten + # parentState des SSCamSTRM-Device updaten ($hash->{HELPER}{INFORM} des LINKPARENT Devices muss FUUID des Streaming Devices haben) if($lpoll_strm) { $st = ReadingsVal($name, "state", "initialized"); - for(@spgs) { - if($defs{$_}{PARENT} eq $name) { - next if(IsDisabled($defs{$_}{NAME}) || !$hash->{HELPER}{INFORM} || $hash->{HELPER}{INFORM} ne $defs{$_}{FUUID}); + for my $sp (@spgs) { + if($defs{$sp}{LINKPARENT} eq $name) { + next if(IsDisabled($defs{$sp}{NAME}) || !$hash->{HELPER}{INFORM} || $hash->{HELPER}{INFORM} ne $defs{$sp}{FUUID}); - readingsBeginUpdate($defs{$_}); - readingsBulkUpdate ($defs{$_},"parentState", $st); - readingsBulkUpdate ($defs{$_},"state", "updated"); - readingsEndUpdate ($defs{$_}, 1); + readingsBeginUpdate($defs{$sp}); + readingsBulkUpdate ($defs{$sp},"parentState", $st); + readingsBulkUpdate ($defs{$sp},"state", "updated"); + readingsEndUpdate ($defs{$sp}, 1); - Log3($name, 4, "$name - roomRefresh - caller: $_, FUUID: $hash->{HELPER}{INFORM}"); + Log3($name, 4, "$name - roomRefresh - caller: $sp, FUUID: $hash->{HELPER}{INFORM}"); delete $hash->{HELPER}{INFORM}; } } diff --git a/fhem/contrib/DS_Starter/49_SSCamSTRM.pm b/fhem/contrib/DS_Starter/49_SSCamSTRM.pm index 80c9caa3b..2222c26a2 100644 --- a/fhem/contrib/DS_Starter/49_SSCamSTRM.pm +++ b/fhem/contrib/DS_Starter/49_SSCamSTRM.pm @@ -314,7 +314,6 @@ sub Set { return qq{The command "$opt" needs a valid SSCamSTRM device as argument} if(!$valid); - # Übernahme der Readings my @r; delReadings($hash); @@ -326,14 +325,16 @@ sub Set { # Übernahme Link-Parameter my $link = "{$defs{$strmd}{LINKFN}('$defs{$strmd}{LINKPARENT}','$defs{$strmd}{LINKNAME}','$defs{$strmd}{LINKMODEL}')}"; - # readingsSingleUpdate($hash,"clientLink", $link, 0); + explodeLinkData ($hash, $link, 0); push @r, "clientLink:$link"; if(@r) { setReadings($hash, \@r, 0); } - webRefresh($hash); + my $camname = $hash->{LINKPARENT}; + $defs{$camname}{HELPER}{INFORM} = $hash->{FUUID}; + FHEM::SSCam::roomRefresh ("$camname,1,0,0"); } elsif ($opt eq "reset") { delReadings($hash); @@ -345,7 +346,9 @@ sub Set { setReadings($hash, \@r, 0); - webRefresh($hash); + my $camname = $hash->{LINKPARENT}; + $defs{$camname}{HELPER}{INFORM} = $hash->{FUUID}; + FHEM::SSCam::roomRefresh ("$camname,1,0,0"); } else { return "$setlist";