49_SSCam: refactored setter: snapGallery createSnapGallery createPTZcontrol createStreamDev, minor bugfixes
git-svn-id: https://svn.fhem.de/fhem/trunk@22705 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
@@ -164,6 +164,7 @@ BEGIN {
|
|||||||
|
|
||||||
# Versions History intern
|
# Versions History intern
|
||||||
my %vNotesIntern = (
|
my %vNotesIntern = (
|
||||||
|
"9.7.6" => "31.08.2020 refactored setter: snapGallery createSnapGallery createPTZcontrol createStreamDev, minor bugfixes ",
|
||||||
"9.7.5" => "30.08.2020 some more code review and optimisation, exitOnDis with fix check Availability instead of state ",
|
"9.7.5" => "30.08.2020 some more code review and optimisation, exitOnDis with fix check Availability instead of state ",
|
||||||
"9.7.4" => "29.08.2020 some code changes ",
|
"9.7.4" => "29.08.2020 some code changes ",
|
||||||
"9.7.3" => "29.08.2020 move login, loginReturn, logout, logoutReturn, setActiveToken, delActiveToken to SMUtils.pm ".
|
"9.7.3" => "29.08.2020 move login, loginReturn, logout, logoutReturn, setActiveToken, delActiveToken to SMUtils.pm ".
|
||||||
@@ -396,16 +397,20 @@ my %ttips_de = (
|
|||||||
helpsvs => "Die Onlinehilfe der Synology Surveillance Station wird in einer neuen Browserseite geöffnet",
|
helpsvs => "Die Onlinehilfe der Synology Surveillance Station wird in einer neuen Browserseite geöffnet",
|
||||||
);
|
);
|
||||||
|
|
||||||
my %hset = ( # Hash für Set-Funktion
|
my %hset = ( # Hash für Set-Funktion (needcred => 1: Funktion benötigt gesetzte Credentials)
|
||||||
credentials => { fn => "_setcredentials" },
|
credentials => { fn => "_setcredentials", needcred => 0 },
|
||||||
smtpcredentials => { fn => "_setsmtpcredentials" },
|
smtpcredentials => { fn => "_setsmtpcredentials", needcred => 0 },
|
||||||
on => { fn => "_seton" },
|
on => { fn => "_seton", needcred => 1 },
|
||||||
off => { fn => "_setoff" },
|
off => { fn => "_setoff", needcred => 1 },
|
||||||
snap => { fn => "_setsnap" },
|
snap => { fn => "_setsnap", needcred => 1 },
|
||||||
snapCams => { fn => "_setsnapCams" },
|
snapCams => { fn => "_setsnapCams", needcred => 1 },
|
||||||
startTracking => { fn => "_setstartTracking" },
|
startTracking => { fn => "_setstartTracking", needcred => 1 },
|
||||||
stopTracking => { fn => "_setstopTracking" },
|
stopTracking => { fn => "_setstopTracking", needcred => 1 },
|
||||||
setZoom => { fn => "_setsetZoom" },
|
setZoom => { fn => "_setsetZoom", needcred => 1 },
|
||||||
|
snapGallery => { fn => "_setsnapGallery", needcred => 1 },
|
||||||
|
createSnapGallery => { fn => "_setcreateSnapGallery", needcred => 1 },
|
||||||
|
createPTZcontrol => { fn => "_setcreatePTZcontrol", needcred => 1 },
|
||||||
|
createStreamDev => { fn => "_setcreateStreamDev", needcred => 1 },
|
||||||
);
|
);
|
||||||
|
|
||||||
my %imc = ( # disbled String modellabhängig (SVS / CAM)
|
my %imc = ( # disbled String modellabhängig (SVS / CAM)
|
||||||
@@ -1114,71 +1119,19 @@ sub Set {
|
|||||||
no strict "refs"; ## no critic 'NoStrict'
|
no strict "refs"; ## no critic 'NoStrict'
|
||||||
if($hset{$opt} && defined &{$hset{$opt}{fn}}) {
|
if($hset{$opt} && defined &{$hset{$opt}{fn}}) {
|
||||||
my $ret = q{};
|
my $ret = q{};
|
||||||
$ret = &{$hset{$opt}{fn}} ($params);
|
|
||||||
|
if (!$hash->{CREDENTIALS} && $hset{$opt}{needcred}) {
|
||||||
|
return qq{Credentials of $name are not set. Make sure they are set with "set $name credentials <username> <password>"};
|
||||||
|
}
|
||||||
|
|
||||||
|
$ret = &{$hset{$opt}{fn}} ($params);
|
||||||
|
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
use strict "refs";
|
use strict "refs";
|
||||||
|
|
||||||
|
|
||||||
if ($opt eq "snapGallery" && IsModelCam($hash)) {
|
if ($opt eq "createStreamDev") {
|
||||||
if (!$hash->{CREDENTIALS}) {return qq{Credentials of $name are not set - make sure you've set it with "set $name credentials username password"};}
|
|
||||||
my $ret = getClHash($hash);
|
|
||||||
return $ret if($ret);
|
|
||||||
|
|
||||||
if(!AttrVal($name, "snapGalleryBoost",0)) {
|
|
||||||
# Snaphash ist nicht vorhanden und wird neu abgerufen und ausgegeben
|
|
||||||
$hash->{HELPER}{GETSNAPGALLERY} = 1;
|
|
||||||
|
|
||||||
# snap-Infos für Gallerie abrufen
|
|
||||||
my ($sg,$slim,$ssize);
|
|
||||||
$slim = $prop?AttrVal($name,"snapGalleryNumber",$prop):AttrVal($name,"snapGalleryNumber",$defSlim); # Anzahl der abzurufenden Snapshots
|
|
||||||
$ssize = (AttrVal($name,"snapGallerySize","Icon") eq "Icon")?1:2; # Image Size 1-Icon, 2-Full
|
|
||||||
|
|
||||||
getSnapInfo("$name:$slim:$ssize");
|
|
||||||
|
|
||||||
} else {
|
|
||||||
# Snaphash ist vorhanden und wird zur Ausgabe aufbereitet (Polling ist aktiv)
|
|
||||||
$hash->{HELPER}{SNAPLIMIT} = AttrVal($name,"snapGalleryNumber",$defSlim);
|
|
||||||
my %pars = ( linkparent => $name,
|
|
||||||
linkname => '',
|
|
||||||
ftui => 0
|
|
||||||
);
|
|
||||||
my $htmlCode = composeGallery(\%pars);
|
|
||||||
for (my $k=1; (defined($hash->{HELPER}{CL}{$k})); $k++ ) {
|
|
||||||
if ($hash->{HELPER}{CL}{$k}->{COMP}) {
|
|
||||||
# CL zusammengestellt (Auslösung durch Notify)
|
|
||||||
asyncOutput($hash->{HELPER}{CL}{$k}, "$htmlCode");
|
|
||||||
} else {
|
|
||||||
# Output wurde über FHEMWEB ausgelöst
|
|
||||||
return $htmlCode;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
delete($hash->{HELPER}{CL});
|
|
||||||
}
|
|
||||||
|
|
||||||
} elsif ($opt eq "createSnapGallery" && IsModelCam($hash)) {
|
|
||||||
if (!$hash->{CREDENTIALS}) {return qq{Credentials of $name are not set - make sure you've set it with "set $name credentials username password"};}
|
|
||||||
my ($ret,$sgdev);
|
|
||||||
return qq{Before you can use "$opt", you must first set the "snapGalleryBoost" attribute, since automatic snapshot retrieval is required.}
|
|
||||||
if(!AttrVal($name,"snapGalleryBoost",0));
|
|
||||||
$sgdev = "SSCamSTRM.$name.snapgallery";
|
|
||||||
$ret = CommandDefine($hash->{CL},"$sgdev SSCamSTRM {FHEM::SSCam::composeGallery('$name','$sgdev','snapgallery')}");
|
|
||||||
return $ret if($ret);
|
|
||||||
my $room = "SSCam";
|
|
||||||
$attr{$sgdev}{room} = $room;
|
|
||||||
return qq{Snapgallery device "$sgdev" created and assigned to room "$room".};
|
|
||||||
|
|
||||||
} elsif ($opt eq "createPTZcontrol" && IsModelCam($hash)) {
|
|
||||||
if (!$hash->{CREDENTIALS}) {return qq{Credentials of $name are not set - make sure you've set it with "set $name credentials username password"};}
|
|
||||||
my $ptzcdev = "SSCamSTRM.$name.PTZcontrol";
|
|
||||||
my $ret = CommandDefine($hash->{CL},"$ptzcdev SSCamSTRM {FHEM::SSCam::ptzPanel('$name','$ptzcdev','ptzcontrol')}");
|
|
||||||
return $ret if($ret);
|
|
||||||
my $room = AttrVal($name,"room","SSCam");
|
|
||||||
$attr{$ptzcdev}{room} = $room;
|
|
||||||
$attr{$ptzcdev}{group} = $name."_PTZcontrol";
|
|
||||||
return qq{PTZ control device "$ptzcdev" created and assigned to room "$room".};
|
|
||||||
|
|
||||||
} elsif ($opt eq "createStreamDev") {
|
|
||||||
if (!$hash->{CREDENTIALS}) {return qq{Credentials of $name are not set - make sure you've set it with "set $name credentials username password"};}
|
if (!$hash->{CREDENTIALS}) {return qq{Credentials of $name are not set - make sure you've set it with "set $name credentials username password"};}
|
||||||
my ($livedev,$ret);
|
my ($livedev,$ret);
|
||||||
|
|
||||||
@@ -1642,10 +1595,6 @@ sub _seton { ## no critic "not used"
|
|||||||
|
|
||||||
return if(!IsModelCam($hash));
|
return if(!IsModelCam($hash));
|
||||||
|
|
||||||
if (!$hash->{CREDENTIALS}) {
|
|
||||||
return qq{Credentials of $name are not set. Make sure they are set with "set $name credentials <username> <password>"."};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (defined($prop) && $prop =~ /^\d+$/x) {
|
if (defined($prop) && $prop =~ /^\d+$/x) {
|
||||||
$hash->{HELPER}{RECTIME_TEMP} = $prop;
|
$hash->{HELPER}{RECTIME_TEMP} = $prop;
|
||||||
}
|
}
|
||||||
@@ -1699,10 +1648,6 @@ sub _setoff { ## no critic "not used"
|
|||||||
|
|
||||||
return if(!IsModelCam($hash));
|
return if(!IsModelCam($hash));
|
||||||
|
|
||||||
if (!$hash->{CREDENTIALS}) {
|
|
||||||
return qq{Credentials of $name are not set. Make sure they are set with "set $name credentials <username> <password>"."};
|
|
||||||
}
|
|
||||||
|
|
||||||
my $spec = join(" ",@$aref);
|
my $spec = join(" ",@$aref);
|
||||||
|
|
||||||
my ($inf) = $spec =~ m/STRM:(.*)/ix; # Aufnahmestop durch SSCamSTRM-Device
|
my ($inf) = $spec =~ m/STRM:(.*)/ix; # Aufnahmestop durch SSCamSTRM-Device
|
||||||
@@ -1725,10 +1670,6 @@ sub _setsnap { ## no critic "not used"
|
|||||||
my $aref = $paref->{aref};
|
my $aref = $paref->{aref};
|
||||||
|
|
||||||
return if(!IsModelCam($hash));
|
return if(!IsModelCam($hash));
|
||||||
|
|
||||||
if (!$hash->{CREDENTIALS}) {
|
|
||||||
return qq{Credentials of $name are not set. Make sure they are set with "set $name credentials <username> <password>"."};
|
|
||||||
}
|
|
||||||
|
|
||||||
my ($num,$lag,$ncount) = (1,2,1);
|
my ($num,$lag,$ncount) = (1,2,1);
|
||||||
|
|
||||||
@@ -1795,10 +1736,6 @@ sub _setsnapCams { ## no critic "not used"
|
|||||||
my $aref = $paref->{aref};
|
my $aref = $paref->{aref};
|
||||||
|
|
||||||
return if(IsModelCam($hash));
|
return if(IsModelCam($hash));
|
||||||
|
|
||||||
if (!$hash->{CREDENTIALS}) {
|
|
||||||
return qq{Credentials of $name are not set. Make sure they are set with "set $name credentials <username> <password>"."};
|
|
||||||
}
|
|
||||||
|
|
||||||
my ($num,$lag,$ncount) = (1,2,1);
|
my ($num,$lag,$ncount) = (1,2,1);
|
||||||
my $cams = "all";
|
my $cams = "all";
|
||||||
@@ -1882,10 +1819,6 @@ sub _setstartTracking { ## no critic "not used"
|
|||||||
|
|
||||||
return if(!IsModelCam($hash));
|
return if(!IsModelCam($hash));
|
||||||
|
|
||||||
if (!$hash->{CREDENTIALS}) {
|
|
||||||
return qq{Credentials of $name are not set. Make sure they are set with "set $name credentials <username> <password>"."};
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($hash->{HELPER}{API}{PTZ}{VER} < 5) {
|
if ($hash->{HELPER}{API}{PTZ}{VER} < 5) {
|
||||||
return qq{Function "$opt" needs a higher version of Surveillance Station};
|
return qq{Function "$opt" needs a higher version of Surveillance Station};
|
||||||
}
|
}
|
||||||
@@ -1906,10 +1839,6 @@ sub _setstopTracking { ## no critic "not used"
|
|||||||
|
|
||||||
return if(!IsModelCam($hash));
|
return if(!IsModelCam($hash));
|
||||||
|
|
||||||
if (!$hash->{CREDENTIALS}) {
|
|
||||||
return qq{Credentials of $name are not set. Make sure they are set with "set $name credentials <username> <password>"."};
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($hash->{HELPER}{API}{PTZ}{VER} < 5) {
|
if ($hash->{HELPER}{API}{PTZ}{VER} < 5) {
|
||||||
return qq{Function "$opt" needs a higher version of Surveillance Station};
|
return qq{Function "$opt" needs a higher version of Surveillance Station};
|
||||||
}
|
}
|
||||||
@@ -1930,10 +1859,6 @@ sub _setsetZoom { ## no critic "not used"
|
|||||||
|
|
||||||
return if(!IsModelCam($hash));
|
return if(!IsModelCam($hash));
|
||||||
|
|
||||||
if (!$hash->{CREDENTIALS}) {
|
|
||||||
return qq{Credentials of $name are not set. Make sure they are set with "set $name credentials <username> <password>"."};
|
|
||||||
}
|
|
||||||
|
|
||||||
$prop = $prop // "+"; # Korrektur -> "+" in Taste wird als undef geliefert
|
$prop = $prop // "+"; # Korrektur -> "+" in Taste wird als undef geliefert
|
||||||
$prop = ".++" if($prop eq "."); # Korrektur -> ".++" in Taste wird als "." geliefert
|
$prop = ".++" if($prop eq "."); # Korrektur -> ".++" in Taste wird als "." geliefert
|
||||||
setZoom ("$name!_!$prop");
|
setZoom ("$name!_!$prop");
|
||||||
@@ -1941,6 +1866,168 @@ sub _setsetZoom { ## no critic "not used"
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
################################################################
|
||||||
|
# Setter snapGallery
|
||||||
|
################################################################
|
||||||
|
sub _setsnapGallery { ## no critic "not used"
|
||||||
|
my $paref = shift;
|
||||||
|
my $hash = $paref->{hash};
|
||||||
|
my $name = $paref->{name};
|
||||||
|
my $prop = $paref->{prop};
|
||||||
|
|
||||||
|
return if(!IsModelCam($hash));
|
||||||
|
|
||||||
|
my $ret = getClHash($hash);
|
||||||
|
return $ret if($ret);
|
||||||
|
|
||||||
|
if(!AttrVal($name, "snapGalleryBoost",0)) { # Snaphash ist nicht vorhanden und wird neu abgerufen und ausgegeben
|
||||||
|
$hash->{HELPER}{GETSNAPGALLERY} = 1;
|
||||||
|
|
||||||
|
my ($squant,$slim,$ssize); # snap-Infos für Gallerie abrufen
|
||||||
|
$squant = $prop // $defSlim ; # Anzahl der abzurufenden Snapshots
|
||||||
|
$slim = AttrVal($name,"snapGalleryNumber",$squant);
|
||||||
|
$ssize = AttrVal($name,"snapGallerySize","Icon") eq "Icon" ? 1 : 2; # Image Size 1-Icon, 2-Full
|
||||||
|
|
||||||
|
getSnapInfo("$name:$slim:$ssize");
|
||||||
|
|
||||||
|
} else { # Snaphash ist vorhanden und wird zur Ausgabe aufbereitet (Polling ist aktiv)
|
||||||
|
$hash->{HELPER}{SNAPLIMIT} = AttrVal($name,"snapGalleryNumber",$defSlim);
|
||||||
|
|
||||||
|
my %pars = ( linkparent => $name,
|
||||||
|
linkname => '',
|
||||||
|
ftui => 0
|
||||||
|
);
|
||||||
|
|
||||||
|
my $htmlCode = composeGallery(\%pars);
|
||||||
|
|
||||||
|
for (my $k=1; (defined($hash->{HELPER}{CL}{$k})); $k++ ) {
|
||||||
|
if ($hash->{HELPER}{CL}{$k}->{COMP}) { # CL zusammengestellt (Auslösung durch Notify)
|
||||||
|
asyncOutput($hash->{HELPER}{CL}{$k}, "$htmlCode");
|
||||||
|
|
||||||
|
} else { # Output wurde über FHEMWEB ausgelöst
|
||||||
|
return $htmlCode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
delete($hash->{HELPER}{CL});
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################
|
||||||
|
# Setter createSnapGallery
|
||||||
|
################################################################
|
||||||
|
sub _setcreateSnapGallery { ## no critic "not used"
|
||||||
|
my $paref = shift;
|
||||||
|
my $hash = $paref->{hash};
|
||||||
|
my $name = $paref->{name};
|
||||||
|
my $opt = $paref->{opt};
|
||||||
|
|
||||||
|
return if(!IsModelCam($hash));
|
||||||
|
|
||||||
|
if(!AttrVal($name,"snapGalleryBoost",0)) {
|
||||||
|
return qq{Before you can use "$opt", you must first set the "snapGalleryBoost" attribute, since automatic snapshot retrieval is required.};
|
||||||
|
}
|
||||||
|
|
||||||
|
my $sgdev = "SSCamSTRM.$name.snapgallery";
|
||||||
|
my $ret = CommandDefine($hash->{CL},"$sgdev SSCamSTRM {FHEM::SSCam::composeGallery('$name','$sgdev','snapgallery')}");
|
||||||
|
|
||||||
|
return $ret if($ret);
|
||||||
|
|
||||||
|
my $room = "SSCam";
|
||||||
|
$attr{$sgdev}{room} = $room;
|
||||||
|
|
||||||
|
return qq{Snapgallery device "$sgdev" created and assigned to room "$room".};
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################
|
||||||
|
# Setter createPTZcontrol
|
||||||
|
################################################################
|
||||||
|
sub _setcreatePTZcontrol { ## no critic "not used"
|
||||||
|
my $paref = shift;
|
||||||
|
my $hash = $paref->{hash};
|
||||||
|
my $name = $paref->{name};
|
||||||
|
|
||||||
|
return if(!IsModelCam($hash));
|
||||||
|
|
||||||
|
my $ptzcdev = "SSCamSTRM.$name.PTZcontrol";
|
||||||
|
my $ret = CommandDefine($hash->{CL},"$ptzcdev SSCamSTRM {FHEM::SSCam::ptzPanel('$name','$ptzcdev','ptzcontrol')}");
|
||||||
|
|
||||||
|
return $ret if($ret);
|
||||||
|
|
||||||
|
my $room = AttrVal($name,"room","SSCam");
|
||||||
|
$attr{$ptzcdev}{room} = $room;
|
||||||
|
$attr{$ptzcdev}{group} = $name."_PTZcontrol";
|
||||||
|
|
||||||
|
return qq{PTZ control device "$ptzcdev" created and assigned to room "$room".};
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################
|
||||||
|
# Setter createStreamDev
|
||||||
|
################################################################
|
||||||
|
sub _setcreateStreamDev { ## no critic "not used"
|
||||||
|
my $paref = shift;
|
||||||
|
my $hash = $paref->{hash};
|
||||||
|
my $name = $paref->{name};
|
||||||
|
my $prop = $paref->{prop};
|
||||||
|
|
||||||
|
return if(!IsModelCam($hash));
|
||||||
|
|
||||||
|
my ($livedev,$ret);
|
||||||
|
|
||||||
|
if($prop =~ /mjpeg/x) {
|
||||||
|
$livedev = "SSCamSTRM.$name.mjpeg";
|
||||||
|
$ret = CommandDefine($hash->{CL},"$livedev SSCamSTRM {FHEM::SSCam::streamDev('$name','$livedev','mjpeg')}");
|
||||||
|
return $ret if($ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
if($prop =~ /generic/x) {
|
||||||
|
$livedev = "SSCamSTRM.$name.generic";
|
||||||
|
$ret = CommandDefine($hash->{CL},"$livedev SSCamSTRM {FHEM::SSCam::streamDev('$name','$livedev','generic')}");
|
||||||
|
return $ret if($ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
if($prop =~ /hls/x) {
|
||||||
|
$livedev = "SSCamSTRM.$name.hls";
|
||||||
|
$ret = CommandDefine($hash->{CL},"$livedev SSCamSTRM {FHEM::SSCam::streamDev('$name','$livedev','hls')}");
|
||||||
|
return $ret if($ret);
|
||||||
|
|
||||||
|
my $c = "The device needs to set attribute \"hlsStrmObject\" in camera device \"$name\" to a valid HLS videostream";
|
||||||
|
CommandAttr($hash->{CL},"$livedev comment $c");
|
||||||
|
}
|
||||||
|
|
||||||
|
if($prop =~ /lastsnap/x) {
|
||||||
|
$livedev = "SSCamSTRM.$name.lastsnap";
|
||||||
|
$ret = CommandDefine($hash->{CL},"$livedev SSCamSTRM {FHEM::SSCam::streamDev('$name','$livedev','lastsnap')}");
|
||||||
|
return $ret if($ret);
|
||||||
|
|
||||||
|
my $c = "The device shows the last snapshot of camera device \"$name\". \n".
|
||||||
|
"If you always want to see the newest snapshot, please set attribute \"pollcaminfoall\" in camera device \"$name\".\n".
|
||||||
|
"Set also attribute \"snapGallerySize = Full\" in camera device \"$name\" to retrieve snapshots in original resolution.";
|
||||||
|
CommandAttr($hash->{CL},"$livedev comment $c");
|
||||||
|
}
|
||||||
|
|
||||||
|
if($prop =~ /switched/x) {
|
||||||
|
$livedev = "SSCamSTRM.$name.switched";
|
||||||
|
$ret = CommandDefine($hash->{CL},"$livedev SSCamSTRM {FHEM::SSCam::streamDev('$name','$livedev','switched')}");
|
||||||
|
return $ret if($ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
if($prop =~ /master/x) {
|
||||||
|
$livedev = "SSCamSTRM.$name.master";
|
||||||
|
$ret = CommandDefine($hash->{CL},"$livedev SSCamSTRM {FHEM::SSCam::streamDev('$name','$livedev','master')}");
|
||||||
|
return $ret if($ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
my $room = AttrVal($name,"room","SSCam");
|
||||||
|
$attr{$livedev}{room} = $room;
|
||||||
|
|
||||||
|
return qq{Livestream device "$livedev" created and assigned to room "$room".};
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################
|
||||||
|
# Get
|
||||||
################################################################
|
################################################################
|
||||||
sub Get {
|
sub Get {
|
||||||
my ($hash, @a) = @_;
|
my ($hash, @a) = @_;
|
||||||
@@ -3942,14 +4029,16 @@ sub exitOnDis {
|
|||||||
$exit = 1;
|
$exit = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $error = expErrors($hash,$errorcode); # Fehlertext zum Errorcode ermitteln
|
if($exit) {
|
||||||
|
my $error = expErrors($hash,$errorcode); # Fehlertext zum Errorcode ermitteln
|
||||||
|
|
||||||
readingsBeginUpdate ($hash);
|
readingsBeginUpdate ($hash);
|
||||||
readingsBulkUpdate ($hash, "Errorcode", $errorcode);
|
readingsBulkUpdate ($hash, "Errorcode", $errorcode);
|
||||||
readingsBulkUpdate ($hash, "Error", $error );
|
readingsBulkUpdate ($hash, "Error", $error );
|
||||||
readingsEndUpdate ($hash, 1);
|
readingsEndUpdate ($hash, 1);
|
||||||
|
|
||||||
Log3($name, 2, "$name - ERROR - $log - $error") if($exit);
|
Log3($name, 2, "$name - ERROR - $log - $error");
|
||||||
|
}
|
||||||
|
|
||||||
return $exit;
|
return $exit;
|
||||||
}
|
}
|
||||||
@@ -7431,7 +7520,7 @@ sub _streamDevMJPEG { ## no critic 'complexity not
|
|||||||
my ($link,$audiolink);
|
my ($link,$audiolink);
|
||||||
my $ret = "";
|
my $ret = "";
|
||||||
|
|
||||||
if(ReadingsVal($camname, "SVSversion", "8.2.3-5828") eq "8.2.3-5828" && ReadingsVal($camname, "CamVideoType", "") !~ /MJPEG/x) {
|
if(ReadingsVal($camname, "SVSversion", "") eq "8.2.3-5828" && ReadingsVal($camname, "CamVideoType", "") !~ /MJPEG/x) {
|
||||||
$ret .= "<td> <br> <b> Because SVS version 8.2.3-5828 is running you cannot play back MJPEG-Stream. Please upgrade to a higher SVS version ! </b> <br><br>";
|
$ret .= "<td> <br> <b> Because SVS version 8.2.3-5828 is running you cannot play back MJPEG-Stream. Please upgrade to a higher SVS version ! </b> <br><br>";
|
||||||
return $ret;
|
return $ret;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user