From e0547f32bff7afefb088063f3dc6797610fd9165 Mon Sep 17 00:00:00 2001 From: nasseeder1 Date: Wed, 31 Oct 2018 20:06:02 +0000 Subject: [PATCH] 49_SSCamSTRM: contrib 1.4.1 git-svn-id: https://svn.fhem.de/fhem/trunk@17653 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/contrib/DS_Starter/49_SSCamSTRM.pm | 90 ++++++++++++++++++------- 1 file changed, 65 insertions(+), 25 deletions(-) diff --git a/fhem/contrib/DS_Starter/49_SSCamSTRM.pm b/fhem/contrib/DS_Starter/49_SSCamSTRM.pm index 078cbbc0a..419365c9a 100644 --- a/fhem/contrib/DS_Starter/49_SSCamSTRM.pm +++ b/fhem/contrib/DS_Starter/49_SSCamSTRM.pm @@ -34,6 +34,7 @@ use warnings; # Versions History intern our %SSCamSTRM_vNotesIntern = ( + "1.4.1" => "31.10.2018 attribute \"autoLoop\" changed to \"autoRefresh\", new attribute \"autoRefreshFW\" ", "1.4.0" => "29.10.2018 readingFnAttributes added ", "1.3.0" => "28.10.2018 direct help for attributes, new attribute \"autoLoop\" ", "1.2.4" => "27.10.2018 fix undefined subroutine &main::SSCam_ptzpanel (https://forum.fhem.de/index.php/topic,45671.msg850505.html#msg850505) ", @@ -58,8 +59,11 @@ sub SSCam_StreamDev($$$); sub SSCamSTRM_Initialize($) { my ($hash) = @_; + my $fwd = join(",",devspec2array("TYPE=FHEMWEB:FILTER=STATE=Initialized")); + $hash->{DefFn} = "SSCamSTRM_Define"; - $hash->{AttrList} = "autoLoop:selectnumbers,10,0.2,1800,0,log10 ". + $hash->{AttrList} = "autoRefresh:selectnumbers,120,0.2,1800,0,log10 ". + "autoRefreshFW:$fwd ". "disable:1,0 ". "forcePageRefresh:1,0 ". "htmlattr ". @@ -121,13 +125,12 @@ return undef; ################################################################ sub SSCamSTRM_FwFn($;$$$) { my ($FW_wname, $d, $room, $pageHash) = @_; # pageHash is set for summaryFn. - my $hash; - if (ref($FW_wname) eq "HASH" ) { - $d = $FW_wname->{NAME}; - } - $hash = $defs{$d}; + my $hash = $defs{$d}; my $link = $hash->{LINK}; + RemoveInternalTimer($hash); + $hash->{HELPER}{FW} = $FW_wname; + $link = AnalyzePerlCommand(undef, $link) if($link =~ m/^{(.*)}$/s); my $show = $defs{$hash->{PARENT}}->{HELPER}{ACTSTRM} if($hash->{MODEL} =~ /switched/); $show = $show?"($show)":""; @@ -147,19 +150,36 @@ sub SSCamSTRM_FwFn($;$$$) { $ret .= $link; } - if($d) { - # Autoloop zur stabilen Anzeige in Anwendungen (z.B. Dashboard) - RemoveInternalTimer($hash); - my $al = AttrVal($d, "autoLoop", 0); - if($al) { - InternalTimer(gettimeofday()+$al, "SSCamSTRM_FwFn", $hash, 0); - Log3($d, 5, "$d - next start of autoLoop: ".FmtDateTime(gettimeofday()+$al)); - } + # Autorefresh nur des aufrufenden FHEMWEB-Devices + my $al = AttrVal($d, "autoRefresh", 0); + if($al) { + InternalTimer(gettimeofday()+$al, "SSCamSTRM_refresh", $hash, 0); + Log3($d, 5, "$d - next start of autoRefresh: ".FmtDateTime(gettimeofday()+$al)); } return $ret; } +################################################################ +sub SSCamSTRM_refresh($) { + my ($hash) = @_; + my $d = $hash->{NAME}; + + # Seitenrefresh festgelegt durch SSCamSTRM-Attribut "autoRefresh" und "autoRefreshFW" + my $rd = AttrVal($d, "autoRefreshFW", $hash->{HELPER}{FW}); + { map { FW_directNotify("#FHEMWEB:$_", "location.reload('true')", "") } $rd } + + my $al = AttrVal($d, "autoRefresh", 0); + if($al) { + InternalTimer(gettimeofday()+$al, "SSCamSTRM_refresh", $hash, 0); + Log3($d, 5, "$d - next start of autoRefresh: ".FmtDateTime(gettimeofday()+$al)); + } else { + RemoveInternalTimer($hash); + } + +return; +} + 1; =pod @@ -215,10 +235,19 @@ Dependend of the Streaming-Device state, different buttons are provided to start