diff --git a/contrib/DS_Starter/49_SSCam.pm b/contrib/DS_Starter/49_SSCam.pm
index 9756d1518..b86f4728a 100644
--- a/contrib/DS_Starter/49_SSCam.pm
+++ b/contrib/DS_Starter/49_SSCam.pm
@@ -1,5 +1,5 @@
########################################################################################################################
-# $Id: 49_SSCam.pm 19750 2019-06-30 20:34:25Z DS_Starter $
+# $Id: 49_SSCam.pm 19996 2019-08-13 21:21:54Z DS_Starter $
#########################################################################################################################
# 49_SSCam.pm
#
@@ -48,6 +48,10 @@ eval "use FHEM::Meta;1" or my $modMetaAbsent = 1;
# Versions History intern
our %SSCam_vNotesIntern = (
+ "8.17.0" => "09.09.2019 fix warnings, suport hide buttons in streaming device ",
+ "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 ",
"8.16.0" => "14.07.2019 change detail link generation from SSCamSTRM to SSCam ",
"8.15.2" => "14.07.2019 fix order of snaps in snapgallery when adding new snaps, fix english date formating in composegallery, ".
"align center of FTUI table, set compatibility to 8.2.5 ",
@@ -953,7 +957,6 @@ sub SSCam_Set($@) {
if($spec =~ /STRM:/) {
$spec =~ m/.*STRM:(.*).*/i; # Snap by SSCamSTRM-Device
$hash->{HELPER}{INFORM} = $1;
- $hash->{HELPER}{SNAPBYSTRMDEV} = 1;
}
my $emtxt = AttrVal($name, "snapEmailTxt", "");
@@ -1948,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"};
@@ -6950,19 +6953,24 @@ return ($ret);
###############################################################################
sub SSCam_ptzpanel(@) {
my ($name,$ptzcdev,$ptzcontrol,$ftui) = @_;
- my $hash = $defs{$name};
- my $iconpath = AttrVal("$name","ptzPanel_iconPath","www/images/sscam");
- my $iconprefix = AttrVal("$name","ptzPanel_iconPrefix","black_btn_");
- my $valPresets = ReadingsVal("$name","Presets","");
- my $valPatrols = ReadingsVal("$name","Patrols","");
- my $rowisset = 0;
- my $ptz_ret;
- my $row;
+ my $hash = $defs{$name};
+ my $iconpath = AttrVal("$name","ptzPanel_iconPath","www/images/sscam");
+ my $iconprefix = AttrVal("$name","ptzPanel_iconPrefix","black_btn_");
+ my $valPresets = ReadingsVal("$name","Presets","");
+ my $valPatrols = ReadingsVal("$name","Patrols","");
+ my $rowisset = 0;
+ my ($pbs,$pbsf) = ("","");
+ my ($row,$ptz_ret);
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 %
- $ptz_ret = "
";
- $ptz_ret.= '
';
+ $ptz_ret = "";
+ $ptz_ret .= "";
+ $ptz_ret .= "";
+ $ptz_ret .= '';
foreach my $rownr (0..9) {
$rownr = sprintf("%2.2d",$rownr);
@@ -6970,27 +6978,31 @@ sub SSCam_ptzpanel(@) {
next if (!$row);
$rowisset = 1;
$ptz_ret .= "";
- my @btn = split (",",$row); # die Anzahl Buttons in einer Reihe
+ my @btn = split (",",$row); # die Anzahl Buttons in einer Reihe
foreach my $btnnr (0..$#btn) {
- $ptz_ret .= '';
+ $ptz_ret .= ' | ';
if ($btn[$btnnr] ne "") {
my $cmd;
my $img;
- if ($btn[$btnnr] =~ /(.*?):(.*)/) { # enthält Komando -> :
+ if ($btn[$btnnr] =~ /(.*?):(.*)/) { # enthält Komando -> :
$cmd = $1;
$img = $2;
- } else { # button has format or is empty
+ } else { # button has format or is empty
$cmd = $btn[$btnnr];
$img = $btn[$btnnr];
}
- if ($img =~ m/\.svg/) { # Verwendung für SVG's
+ if ($img =~ m/\.svg/) { # Verwendung für SVG's
$img = FW_makeImage($img, $cmd, "rc-button");
- } else {
- $img = " "; # $FW_ME = URL-Pfad unter dem der FHEMWEB-Server via HTTP erreichbar ist, z.B. /fhem
- }
+ } else { # $FW_ME = URL-Pfad unter dem der FHEMWEB-Server via HTTP erreichbar ist, z.B. /fhem
+ if($ftui) {
+ $img = " ";
+ } else {
+ $img = " ";
+ }
+ }
if ($cmd || $cmd eq "0") {
- my $cmd1 = "FW_cmd('$FW_ME$FW_subdir?XHR=1&cmd=set $name $cmd')"; # $FW_subdir = Sub-path in URL, used by FLOORPLAN/weblink
+ my $cmd1 = "FW_cmd('$FW_ME$FW_subdir?XHR=1&cmd=set $name $cmd')"; # $FW_subdir = Sub-path in URL, used by FLOORPLAN/weblink
$cmd1 = "ftui.setFhemStatus('set $name $cmd')" if($ftui);
$ptz_ret .= "$img";
} else {
@@ -7002,9 +7014,7 @@ sub SSCam_ptzpanel(@) {
}
$ptz_ret .= " |
\n";
}
-
$ptz_ret .= "
";
- $ptz_ret .= "";
########################
# add Preset & Patrols
@@ -7021,7 +7031,6 @@ sub SSCam_ptzpanel(@) {
}
if($Presets) {
$Presets =~ s,^]*>(.*) | $,$1,;
- # Log3($name, 1, "$name - commandArgs: $Presets");
} else {
$Presets = FW_pH "cmd.$name=set $name $cmdPreset", $cmdPreset, 0, "", 1, 1;
}
@@ -7033,33 +7042,24 @@ sub SSCam_ptzpanel(@) {
last if(defined($Patrols));
}
- # Rahmenklasse
- $ptz_ret .= "";
- $ptz_ret .= "
";
+ if($Patrols) {
+ $Patrols =~ s,^]*>(.*) | $,$1,;
+ } else {
+ $Patrols = FW_pH "cmd.$name=set $name $cmdPatrol", $cmdPatrol, 0, "", 1, 1;
+ }
+
+ $ptz_ret .= '';
+
$ptz_ret .= "";
- $ptz_ret .= '';
+ $ptz_ret .= " | Preset: | $Presets | ";
+ $ptz_ret .= "
";
- # Dropdown Klasse
- $ptz_ret .= "";
$ptz_ret .= "";
- $ptz_ret .= "Preset: | $Presets | ";
+ $ptz_ret .= "Patrol: | $Patrols | ";
$ptz_ret .= "
";
+
$ptz_ret .= "
";
-
- $ptz_ret .= "";
- $ptz_ret .= "";
- $ptz_ret .= "Patrol: | $Patrols | ";
- $ptz_ret .= "
";
- $ptz_ret .= "
";
-
- # Rahmenklasse end
- $ptz_ret .= "";
- $ptz_ret .= "";
- $ptz_ret .= "
";
- $ptz_ret .= "";
-
- #####################
- }
+ }
if ($rowisset) {
return $ptz_ret;
@@ -7224,19 +7224,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);
@@ -7317,19 +7319,20 @@ 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,'','',$ftui);
- if($ptz_ret) {
+ my $ptz_ret = SSCam_ptzpanel($camname,$strmdev,'',$ftui);
+ if($ptz_ret) {
$ret .= "$ptz_ret | ";
}
}
@@ -7352,7 +7355,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
@@ -7394,19 +7399,21 @@ 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,'','',$ftui);
+ my $ptz_ret = SSCam_ptzpanel($camname,$strmdev,'',$ftui);
if($ptz_ret) {
$ret .= "$ptz_ret | ";
}
@@ -7439,20 +7446,21 @@ 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,'','',$ftui);
+ my $ptz_ret = SSCam_ptzpanel($camname,$strmdev,'',$ftui);
if($ptz_ret) {
$ret .= "$ptz_ret | ";
}
@@ -7489,7 +7497,7 @@ sub SSCam_StreamDev($$$;$) {
}
$ret .= "";
if(AttrVal($camname,"ptzPanel_use",1) && $hash->{HELPER}{RUNVIEW} =~ /live_fw/) {
- my $ptz_ret = SSCam_ptzpanel($camname,'','',$ftui);
+ my $ptz_ret = SSCam_ptzpanel($camname,$strmdev,'',$ftui);
if($ptz_ret) {
$ret .= "$ptz_ret | ";
}
@@ -7604,7 +7612,7 @@ sub SSCam_StreamDev($$$;$) {
$ret .= "$imgdosnap ";
$ret .= "";
if(AttrVal($camname,"ptzPanel_use",1)) {
- my $ptz_ret = SSCam_ptzpanel($camname,'','',$ftui);
+ my $ptz_ret = SSCam_ptzpanel($camname,$strmdev,'',$ftui);
if($ptz_ret) {
$ret .= "$ptz_ret | ";
}
@@ -7705,6 +7713,7 @@ sub SSCam_composegallery ($;$$$) {
? ReadingsTimestamp($name,"LastSnapTime"," ")
: ReadingsTimestamp($name,"LastUpdateTime"," ")); # letzte Aktualisierung
$lupt =~ s/ / \/ /;
+ my ($alias,$dlink,$hf) = ("","","");
# Kontext des SSCamSTRM-Devices speichern für SSCam_refresh
$hash->{HELPER}{STRMDEV} = $strmdev; # Name des aufrufenden SSCamSTRM-Devices
@@ -7715,6 +7724,8 @@ sub SSCam_composegallery ($;$$$) {
my $streamHash = $defs{$strmdev}; # Hash des SSCamSTRM-Devices
$uuid = $streamHash->{FUUID}; # eindeutige UUID des Streamingdevices
delete $streamHash->{HELPER}{STREAM};
+ $alias = AttrVal($strmdev, "alias", $strmdev); # Linktext als Aliasname oder Devicename setzen
+ $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"
@@ -7726,16 +7737,14 @@ sub SSCam_composegallery ($;$$$) {
}
my $ha = AttrVal($name, "snapGalleryHtmlAttr", AttrVal($name, "htmlattr", 'width="500" height="325"'));
-
- my $alias = AttrVal($strmdev, "alias", $strmdev); # Linktext als Aliasname oder Devicename setzen
- my $dlink = "$alias";
-
+
# falls "SSCam_composegallery" durch ein SSCamSTRM-Device aufgerufen wird
my $pws = "";
if ($strmdev) {
$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
}
@@ -7814,7 +7823,9 @@ sub SSCam_composegallery ($;$$$) {
$htmlCode .= "";
$htmlCode .= "
";
$htmlCode .= "
";
- $htmlCode .= "$imgdosnap " if($strmdev);
+ if(!$hf) {
+ $htmlCode .= "$imgdosnap " if($strmdev);
+ }
$htmlCode .= "