diff --git a/fhem/CHANGED b/fhem/CHANGED index cbdd56037..e72aa6a89 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,7 @@ # Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Do not insert empty lines here, update check depends on it. + - feature: 49_SSCam(STRM): hide buttons in streaming device with new attribute + hideFooter, minor code changes - feature 73_AutoShuttersControl: add roommate value for ASC_Up/Down for Roommate only shutter drive - feature: 70_KODI: Added fetching of channel names and command openchannel to diff --git a/fhem/FHEM/49_SSCam.pm b/fhem/FHEM/49_SSCam.pm index 660579d96..d784e115c 100644 --- a/fhem/FHEM/49_SSCam.pm +++ b/fhem/FHEM/49_SSCam.pm @@ -48,6 +48,7 @@ eval "use FHEM::Meta;1" or my $modMetaAbsent = 1; # Versions History intern our %SSCam_vNotesIntern = ( + "8.17.0" => "12.09.2019 fix warnings, support hide buttons in streaming device, change handle delete SNAPHASHOLD ", "8.16.3" => "13.08.2019 commandref revised ", "8.16.2" => "17.07.2019 change function SSCam_ptzpanel using css stylesheet ", "8.16.1" => "16.07.2019 fix warnings ", @@ -1950,7 +1951,7 @@ sub SSCam_FWdetailFn ($$$$) { $ret .= $hash->{".setup"}; } - $hash->{".ptzhtml"} = SSCam_ptzpanel($d) if($hash->{".ptzhtml"} eq ""); + $hash->{".ptzhtml"} = SSCam_ptzpanel($d,$d) if($hash->{".ptzhtml"} eq ""); if($hash->{".ptzhtml"} ne "" && AttrVal($d,"ptzPanel_use",1)) { $ret .= $hash->{".ptzhtml"}; @@ -5487,7 +5488,9 @@ sub SSCam_camop_parse ($) { my %sendsnaps = (); # Schnappschuss Hash zum Versand wird leer erstellt if($hash->{HELPER}{".SNAPHASH"}) { - $hash->{HELPER}{".SNAPHASHOLD"} = delete($hash->{HELPER}{".SNAPHASH"}); + foreach my $key (sort(keys%{$hash->{HELPER}{".SNAPHASH"}})) { + $hash->{HELPER}{".SNAPHASHOLD"}{$key} = delete($hash->{HELPER}{".SNAPHASH"}{$key}); + } } while ($data->{'data'}{'data'}[$i]) { @@ -5531,13 +5534,12 @@ sub SSCam_camop_parse ($) { if($hash->{HELPER}{".SNAPHASHOLD"} && $sgn > $ss) { for my $kn ($ss..($sgn-1)) { - $hash->{HELPER}{".SNAPHASH"}{$kn}{snapid} = $hash->{HELPER}{".SNAPHASHOLD"}{$sn}{snapid}; - $hash->{HELPER}{".SNAPHASH"}{$kn}{createdTm} = $hash->{HELPER}{".SNAPHASHOLD"}{$sn}{createdTm}; - $hash->{HELPER}{".SNAPHASH"}{$kn}{fileName} = $hash->{HELPER}{".SNAPHASHOLD"}{$sn}{fileName}; - $hash->{HELPER}{".SNAPHASH"}{$kn}{imageData} = $hash->{HELPER}{".SNAPHASHOLD"}{$sn}{imageData}; + $hash->{HELPER}{".SNAPHASH"}{$kn}{snapid} = delete $hash->{HELPER}{".SNAPHASHOLD"}{$sn}{snapid}; + $hash->{HELPER}{".SNAPHASH"}{$kn}{createdTm} = delete $hash->{HELPER}{".SNAPHASHOLD"}{$sn}{createdTm}; + $hash->{HELPER}{".SNAPHASH"}{$kn}{fileName} = delete $hash->{HELPER}{".SNAPHASHOLD"}{$sn}{fileName}; + $hash->{HELPER}{".SNAPHASH"}{$kn}{imageData} = delete $hash->{HELPER}{".SNAPHASHOLD"}{$sn}{imageData}; $sn += 1; } - delete $hash->{HELPER}{".SNAPHASHOLD"}; } # prüfen ob Schnappschuß versendet werden soll @@ -5552,7 +5554,9 @@ sub SSCam_camop_parse ($) { $hash->{HELPER}{TOTALCNT} = $data->{data}{total}; # total Anzahl Schnappschüsse if($hash->{HELPER}{".SNAPHASH"}) { - $hash->{HELPER}{".SNAPHASHOLD"} = delete($hash->{HELPER}{".SNAPHASH"}); + foreach my $key (sort(keys%{$hash->{HELPER}{".SNAPHASH"}})) { + $hash->{HELPER}{".SNAPHASHOLD"}{$key} = delete($hash->{HELPER}{".SNAPHASH"}{$key}); + } } while ($data->{'data'}{'data'}[$i]) { @@ -5589,13 +5593,12 @@ sub SSCam_camop_parse ($) { $sn = 0; if($hash->{HELPER}{".SNAPHASHOLD"} && $sgn > $ss) { for my $kn ($ss..($sgn-1)) { - $hash->{HELPER}{".SNAPHASH"}{$kn}{snapid} = $hash->{HELPER}{".SNAPHASHOLD"}{$sn}{snapid}; - $hash->{HELPER}{".SNAPHASH"}{$kn}{createdTm} = $hash->{HELPER}{".SNAPHASHOLD"}{$sn}{createdTm}; - $hash->{HELPER}{".SNAPHASH"}{$kn}{fileName} = $hash->{HELPER}{".SNAPHASHOLD"}{$sn}{fileName}; - $hash->{HELPER}{".SNAPHASH"}{$kn}{imageData} = $hash->{HELPER}{".SNAPHASHOLD"}{$sn}{imageData}; + $hash->{HELPER}{".SNAPHASH"}{$kn}{snapid} = delete $hash->{HELPER}{".SNAPHASHOLD"}{$sn}{snapid}; + $hash->{HELPER}{".SNAPHASH"}{$kn}{createdTm} = delete $hash->{HELPER}{".SNAPHASHOLD"}{$sn}{createdTm}; + $hash->{HELPER}{".SNAPHASH"}{$kn}{fileName} = delete $hash->{HELPER}{".SNAPHASHOLD"}{$sn}{fileName}; + $hash->{HELPER}{".SNAPHASH"}{$kn}{imageData} = delete $hash->{HELPER}{".SNAPHASHOLD"}{$sn}{imageData}; $sn += 1; } - delete $hash->{HELPER}{".SNAPHASHOLD"}; } # Direktausgabe Snaphash wenn nicht gepollt wird @@ -5618,7 +5621,8 @@ sub SSCam_camop_parse ($) { SSCam_closeTrans($hash); # Transaktion beenden delete($hash->{HELPER}{GETSNAPGALLERY}); # Steuerbit getsnapgallery statt getsnapinfo - + delete $hash->{HELPER}{".SNAPHASHOLD"}; + ######## fallabhängige Eventgenerierung ######## if ($hash->{HELPER}{INFORM} || $hash->{HELPER}{LSNAPBYSTRMDEV}) { # Snap durch SSCamSTRM-Device ausgelöst @@ -6963,8 +6967,8 @@ sub SSCam_ptzpanel(@) { return "" if(SSCam_myVersion($hash) <= 71); - $pbs = AttrVal("$ptzcdev","ptzButtonSize", 100); # Größe der Druckbuttons in % - $pbsf = AttrVal("$ptzcdev","ptzButtonSizeFTUI", 100); # Größe der Druckbuttons im FTUI in % + $pbs = AttrVal($ptzcdev,"ptzButtonSize", 100); # Größe der Druckbuttons in % + $pbsf = AttrVal($ptzcdev,"ptzButtonSizeFTUI", 100); # Größe der Druckbuttons im FTUI in % $ptz_ret = ""; $ptz_ret .= ""; @@ -7223,19 +7227,21 @@ sub SSCam_StreamDev($$$;$) { $cmdrefresh = "ftui.setFhemStatus('set $camname refresh STRM:$uuid')"; } - my $ha = AttrVal($camname, "htmlattr", 'width="500" height="325"'); # HTML Attribute der Cam - $ha = AttrVal($strmdev, "htmlattr", $ha); # htmlattr mit htmlattr Streaming-Device übersteuern + my $ha = AttrVal($camname, "htmlattr", 'width="500" height="325"'); # HTML Attribute der Cam + $ha = AttrVal($strmdev, "htmlattr", $ha); # htmlattr mit htmlattr Streaming-Device übersteuern if($ftui) { $ha = AttrVal($strmdev, "htmlattrFTUI", $ha); # wenn aus FTUI aufgerufen divers setzen } - my $pws = AttrVal($strmdev, "popupWindowSize", ""); # Größe eines Popups - $pws =~ s/"//g if($pws); + my $hf = AttrVal($strmdev, "hideButtons", 0); # Drucktasten im unteren Bereich ausblenden ? + + my $pws = AttrVal($strmdev, "popupWindowSize", ""); # Größe eines Popups + $pws =~ s/"//g if($pws); my $show = $defs{$streamHash->{PARENT}}->{HELPER}{ACTSTRM} if($streamHash->{MODEL} =~ /switched/); $show = $show?"($show)":""; - my $alias = AttrVal($strmdev, "alias", $strmdev); # Linktext als Aliasname oder Devicename setzen + my $alias = AttrVal($strmdev, "alias", $strmdev); # Linktext als Aliasname oder Devicename setzen my $dlink = "$alias"; my $StmKey = ReadingsVal($camname,"StmKey",undef); @@ -7316,15 +7322,16 @@ 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(ReadingsVal($camname, "Record", "Stop") eq "Stop") { - # Aufnahmebutton endlos Start - $ret .= "$imgrecendless "; - } else { - # Aufnahmebutton Stop - $ret .= "$imgrecstop "; - } - $ret .= "$imgdosnap "; + if(!$hf) { + if(ReadingsVal($camname, "Record", "Stop") eq "Stop") { + # Aufnahmebutton endlos Start + $ret .= "$imgrecendless "; + } else { + # Aufnahmebutton Stop + $ret .= "$imgrecstop "; + } + $ret .= "$imgdosnap "; + } $ret .= ""; if(AttrVal($camname,"ptzPanel_use",1)) { my $ptz_ret = SSCam_ptzpanel($camname,$strmdev,'',$ftui); @@ -7351,7 +7358,9 @@ sub SSCam_StreamDev($$$;$) { } else { $ret .= "
"; } - $ret .= "$imgdosnap "; + if(!$hf) { + $ret .= "$imgdosnap "; + } $ret .= ""; $streamHash->{HELPER}{STREAM} = ""; # Stream für "get popupStream" speichern $streamHash->{HELPER}{STREAMACTIVE} = 1 if($link); # Statusbit wenn ein Stream aktiviert ist @@ -7393,16 +7402,18 @@ sub SSCam_StreamDev($$$;$) { } $ret .= "
"; Log3($strmdev, 4, "$strmdev - generic Stream params:\n$htag"); - $ret .= "$imgrefresh "; - $ret .= $imgblank; - if(ReadingsVal($camname, "Record", "Stop") eq "Stop") { - # Aufnahmebutton endlos Start - $ret .= "$imgrecendless "; - } else { - # Aufnahmebutton Stop - $ret .= "$imgrecstop "; - } - $ret .= "$imgdosnap "; + if(!$hf) { + $ret .= "$imgrefresh "; + $ret .= $imgblank; + if(ReadingsVal($camname, "Record", "Stop") eq "Stop") { + # Aufnahmebutton endlos Start + $ret .= "$imgrecendless "; + } else { + # Aufnahmebutton Stop + $ret .= "$imgrecstop "; + } + $ret .= "$imgdosnap "; + } $ret .= ""; if(AttrVal($camname,"ptzPanel_use",1)) { my $ptz_ret = SSCam_ptzpanel($camname,$strmdev,'',$ftui); @@ -7438,17 +7449,18 @@ sub SSCam_StreamDev($$$;$) { $streamHash->{HELPER}{STREAM} = ""; # Stream für "set popupStream" speichern $streamHash->{HELPER}{STREAMACTIVE} = 1; # Statusbit wenn ein Stream aktiviert ist - - $ret .= "$imgrefresh "; - $ret .= $imgblank; - if(ReadingsVal($camname, "Record", "Stop") eq "Stop") { - # Aufnahmebutton endlos Start - $ret .= "$imgrecendless "; - } else { - # Aufnahmebutton Stop - $ret .= "$imgrecstop "; - } - $ret .= "$imgdosnap "; + if(!$hf) { + $ret .= "$imgrefresh "; + $ret .= $imgblank; + if(ReadingsVal($camname, "Record", "Stop") eq "Stop") { + # Aufnahmebutton endlos Start + $ret .= "$imgrecendless "; + } else { + # Aufnahmebutton Stop + $ret .= "$imgrecstop "; + } + $ret .= "$imgdosnap "; + } $ret .= ""; if(AttrVal($camname,"ptzPanel_use",1)) { my $ptz_ret = SSCam_ptzpanel($camname,$strmdev,'',$ftui); @@ -7704,7 +7716,7 @@ sub SSCam_composegallery ($;$$$) { ? ReadingsTimestamp($name,"LastSnapTime"," ") : ReadingsTimestamp($name,"LastUpdateTime"," ")); # letzte Aktualisierung $lupt =~ s/ / \/ /; - my ($alias,$dlink) = ("",""); + my ($alias,$dlink,$hf) = ("","",""); # Kontext des SSCamSTRM-Devices speichern für SSCam_refresh $hash->{HELPER}{STRMDEV} = $strmdev; # Name des aufrufenden SSCamSTRM-Devices @@ -7735,10 +7747,10 @@ 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 ? if($ftui) { $ha = AttrVal($strmdev, "htmlattrFTUI", $ha); # wenn aus FTUI aufgerufen divers setzen } - } # wenn SSCamSTRM-device genutzt wird und attr "snapGalleryBoost" nicht gesetzt ist -> Warnung in Gallerie ausgeben @@ -7814,7 +7826,9 @@ sub SSCam_composegallery ($;$$$) { $htmlCode .= ""; $htmlCode .= ""; $htmlCode .= ""; - $htmlCode .= "$imgdosnap " if($strmdev); + if(!$hf) { + $htmlCode .= "$imgdosnap " if($strmdev); + } $htmlCode .= ""; return $htmlCode; diff --git a/fhem/FHEM/49_SSCamSTRM.pm b/fhem/FHEM/49_SSCamSTRM.pm index 333d92d55..f8cf96612 100644 --- a/fhem/FHEM/49_SSCamSTRM.pm +++ b/fhem/FHEM/49_SSCamSTRM.pm @@ -35,6 +35,7 @@ eval "use FHEM::Meta;1" or my $modMetaAbsent = 1; # Versions History intern our %SSCamSTRM_vNotesIntern = ( + "2.8.0" => "09.09.2019 new attribute hideFooter ", "2.7.0" => "15.07.2019 FTUI support, new attributes htmlattrFTUI, hideDisplayNameFTUI, ptzButtonSize, ptzButtonSizeFTUI ", "2.6.0" => "21.06.2019 GetFn -> get html ", "2.5.0" => "27.03.2019 add Meta.pm support ", @@ -85,6 +86,7 @@ sub SSCamSTRM_Initialize($) { "htmlattrFTUI ". "hideDisplayName:1,0 ". "hideDisplayNameFTUI:1,0 ". + "hideButtons:1,0 ". "popupWindowSize ". "popupStreamFW:$fwd ". "popupStreamTo:OK,1,2,3,4,5,6,7,8,9,10,15,20,25,30,40,50,60 ". @@ -527,6 +529,12 @@ attr <name> genericStrmHtmlTag <img $HTMLATTR

+ +
  • hideButtons
    + Hide the buttons in the footer. It has no impact for streaming devices of type "switched". +
  • +
    +
  • hideDisplayName
    Hide the device/alias name (link to detail view). @@ -750,7 +758,13 @@ attr <name> genericStrmHtmlTag <img $HTMLATTR Devicenamen bzw. das Attribut "popupWindowSize" im Streaming-Device, welches die Größe eines Popup-Windows festlegt.

    -
  • + + + +
  • hideButtons
    + Verbirgt die Drucktasten in der Fußzeile. Dieses Attribut hat keinen Einfluß bei Streaming-Devices vom Typ "switched". +
  • +
  • hideDisplayName