diff --git a/contrib/DS_Starter/49_SSCam.pm b/contrib/DS_Starter/49_SSCam.pm index 5bded8e59..1566575ab 100644 --- a/contrib/DS_Starter/49_SSCam.pm +++ b/contrib/DS_Starter/49_SSCam.pm @@ -1,5 +1,5 @@ ######################################################################################################################## -# $Id: 49_SSCam.pm 20165 2019-09-15 21:04:28Z DS_Starter $ +# $Id: 49_SSCam.pm 20198 2019-09-19 17:14:20Z DS_Starter $ ######################################################################################################################### # 49_SSCam.pm # @@ -48,6 +48,8 @@ eval "use FHEM::Meta;1" or my $modMetaAbsent = 1; # Versions History intern our %SSCam_vNotesIntern = ( + "8.19.0" => "21.09.2019 support attr \"hideAudio\" SSCamSTRM-device ", + "8.18.2" => "19.09.2019 sample streams changed in comref, support of attr noLink in Streaming-Device ", "8.18.1" => "18.09.2019 fix warnings, Forum: https://forum.fhem.de/index.php/topic,45671.msg975610.html#msg975610 ", "8.18.0" => "13.09.2019 change usage of own hashes to central %data hash, release unnecessary allocated memory ", "8.17.0" => "12.09.2019 fix warnings, support hide buttons in streaming device, change handle delete SNAPHASHOLD ", @@ -164,6 +166,7 @@ our %SSCam_vNotesIntern = ( # Versions History extern our %SSCam_vNotesExtern = ( + "8.18.2" => "19.09.2019 SSCam supports the new attribute \"noLink\" in streaming devices ", "8.15.0" => "09.07.2019 support of integrating Streaming-Devices in a SSCam FTUI widget ", "8.14.0" => "01.06.2019 In detailview are buttons provided to open the camera native setup screen or Synology Surveillance Station and the Synology Surveillance Station online help. ", "8.12.0" => "25.03.2019 Delay FHEM shutdown as long as sessions are not terminated, but not longer than global attribute \"maxShutdownDelay\". ", @@ -545,8 +548,10 @@ return undef; ################################################################ sub SSCam_Undef($$) { my ($hash, $arg) = @_; + my $name = $hash->{NAME}; RemoveInternalTimer($hash); + delete $data{SSCam}{$name}; return undef; } @@ -7238,7 +7243,8 @@ sub SSCam_StreamDev($$$;$) { $ha = AttrVal($strmdev, "htmlattrFTUI", $ha); # wenn aus FTUI aufgerufen divers setzen } - my $hf = AttrVal($strmdev, "hideButtons", 0); # Drucktasten im unteren Bereich ausblenden ? + my $hb = AttrVal($strmdev, "hideButtons", 0); # Drucktasten im Footer ausblenden ? + my $hau = AttrVal($strmdev, "hideAudio", 0); # Audio Steuerblock im Footer ausblenden ? my $pws = AttrVal($strmdev, "popupWindowSize", ""); # Größe eines Popups $pws =~ s/"//g if($pws); @@ -7248,6 +7254,7 @@ sub SSCam_StreamDev($$$;$) { my $alias = AttrVal($strmdev, "alias", $strmdev); # Linktext als Aliasname oder Devicename setzen my $dlink = "$alias"; + $dlink = $alias if(AttrVal($strmdev, "noLink", 0)); # keine Links im Stream-Dev generieren my $StmKey = ReadingsVal($camname,"StmKey",undef); @@ -7327,7 +7334,7 @@ sub SSCam_StreamDev($$$;$) { $streamHash->{HELPER}{STREAM} = ""; # Stream für "get popupStream" speichern $streamHash->{HELPER}{STREAMACTIVE} = 1 if($link); # Statusbit wenn ein Stream aktiviert ist } - if(!$hf) { + if(!$hb) { if(ReadingsVal($camname, "Record", "Stop") eq "Stop") { # Aufnahmebutton endlos Start $ret .= "$imgrecendless "; @@ -7344,7 +7351,7 @@ sub SSCam_StreamDev($$$;$) { $ret .= "$ptz_ret"; } } - if($audiolink && ReadingsVal($camname, "CamAudioType", "Unknown") !~ /Unknown/) { + if($audiolink && ReadingsVal($camname, "CamAudioType", "Unknown") !~ /Unknown/ && !$hau) { $ret .= ''; $ret .= ''; $ret .= " @@ -7363,7 +7370,7 @@ sub SSCam_StreamDev($$$;$) { } else { $ret .= ""; } - if(!$hf) { + if(!$hb) { $ret .= "$imgdosnap "; } $ret .= ""; @@ -7407,7 +7414,7 @@ sub SSCam_StreamDev($$$;$) { } $ret .= ""; Log3($strmdev, 4, "$strmdev - generic Stream params:\n$htag"); - if(!$hf) { + if(!$hb) { $ret .= "$imgrefresh "; $ret .= $imgblank; if(ReadingsVal($camname, "Record", "Stop") eq "Stop") { @@ -7454,7 +7461,7 @@ sub SSCam_StreamDev($$$;$) { $streamHash->{HELPER}{STREAM} = ""; # Stream für "set popupStream" speichern $streamHash->{HELPER}{STREAMACTIVE} = 1; # Statusbit wenn ein Stream aktiviert ist - if(!$hf) { + if(!$hb) { $ret .= "$imgrefresh "; $ret .= $imgblank; if(ReadingsVal($camname, "Record", "Stop") eq "Stop") { @@ -7510,7 +7517,7 @@ sub SSCam_StreamDev($$$;$) { $ret .= "$ptz_ret"; } } - if($hash->{HELPER}{AUDIOLINK} && ReadingsVal($camname, "CamAudioType", "Unknown") !~ /Unknown/) { + if($hash->{HELPER}{AUDIOLINK} && ReadingsVal($camname, "CamAudioType", "Unknown") !~ /Unknown/ && !$hau) { $ret .= ""; $ret .= ''; $ret .= "{HELPER}{AUDIOLINK} preload='none' volume='0.5' controls> @@ -7537,7 +7544,7 @@ sub SSCam_StreamDev($$$;$) { $ret .= "$imgstop "; $ret .= "$imgrefresh "; $ret .= ""; - if($hash->{HELPER}{AUDIOLINK} && ReadingsVal($camname, "CamAudioType", "Unknown") !~ /Unknown/) { + if($hash->{HELPER}{AUDIOLINK} && ReadingsVal($camname, "CamAudioType", "Unknown") !~ /Unknown/ && !$hau) { $ret .= ''; $ret .= ''; $ret .= "{HELPER}{AUDIOLINK} preload='none' volume='0.5' controls> @@ -7563,7 +7570,7 @@ sub SSCam_StreamDev($$$;$) { $streamHash->{HELPER}{STREAMACTIVE} = 1 if($link); # Statusbit wenn ein Stream aktiviert ist $ret .= "$imgstop "; $ret .= ""; - if($hash->{HELPER}{AUDIOLINK} && ReadingsVal($camname, "CamAudioType", "Unknown") !~ /Unknown/) { + if($hash->{HELPER}{AUDIOLINK} && ReadingsVal($camname, "CamAudioType", "Unknown") !~ /Unknown/ && !$hau) { $ret .= ''; $ret .= ''; $ret .= "{HELPER}{AUDIOLINK} preload='none' volume='0.5' controls> @@ -7721,7 +7728,7 @@ sub SSCam_composegallery ($;$$$) { ? ReadingsTimestamp($name,"LastSnapTime"," ") : ReadingsTimestamp($name,"LastUpdateTime"," ")); # letzte Aktualisierung $lupt =~ s/ / \/ /; - my ($alias,$dlink,$hf) = ("","",""); + my ($alias,$dlink,$hb) = ("","",""); # Kontext des SSCamSTRM-Devices speichern für SSCam_refresh $hash->{HELPER}{STRMDEV} = $strmdev; # Name des aufrufenden SSCamSTRM-Devices @@ -7733,7 +7740,11 @@ sub SSCam_composegallery ($;$$$) { $uuid = $streamHash->{FUUID}; # eindeutige UUID des Streamingdevices delete $streamHash->{HELPER}{STREAM}; $alias = AttrVal($strmdev, "alias", $strmdev); # Linktext als Aliasname oder Devicename setzen - $dlink = "$alias"; + if(AttrVal($strmdev, "noLink", 0)) { + $dlink = $alias; # keine Links im Stream-Dev generieren + } else { + $dlink = "$alias"; + } } my $cmddosnap = "FW_cmd('$FW_ME$FW_subdir?XHR=1&cmd=set $name snap 1 2 STRM:$uuid')"; # Snapshot auslösen mit Kennzeichnung "by STRM-Device" @@ -7752,7 +7763,7 @@ sub SSCam_composegallery ($;$$$) { $pws = AttrVal($strmdev, "popupWindowSize", ""); # Größe eines Popups (umgelegt: Forum:https://forum.fhem.de/index.php/topic,45671.msg927912.html#msg927912) $pws =~ s/"//g if($pws); $ha = AttrVal($strmdev, "htmlattr", $ha); # htmlattr vom SSCamSTRM-Device übernehmen falls von SSCamSTRM-Device aufgerufen und gesetzt - $hf = AttrVal($strmdev, "hideButtons", 0); # Drucktasten im unteren Bereich ausblenden ? + $hb = AttrVal($strmdev, "hideButtons", 0); # Drucktasten im unteren Bereich ausblenden ? if($ftui) { $ha = AttrVal($strmdev, "htmlattrFTUI", $ha); # wenn aus FTUI aufgerufen divers setzen } @@ -7775,7 +7786,7 @@ sub SSCam_composegallery ($;$$$) { # Header Generierung my $header; - if($strmdev) { + if($strmdev) { # Forum: https://forum.fhem.de/index.php/topic,45671.msg975610.html#msg975610 if($ftui) { $header .= "$dlink " if(!AttrVal($strmdev,"hideDisplayNameFTUI",0)); } else { @@ -7834,7 +7845,7 @@ sub SSCam_composegallery ($;$$$) { $htmlCode .= ""; $htmlCode .= ""; $htmlCode .= ""; - if(!$hf) { + if(!$hb) { $htmlCode .= "$imgdosnap " if($strmdev); } $htmlCode .= "