2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-10 09:16:53 +00:00

49_SSCam: contrib 9.4.0

git-svn-id: https://svn.fhem.de/fhem/trunk@22320 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2020-07-01 19:24:20 +00:00
parent 7cbdab900c
commit 9cdbe3305f

View File

@ -156,7 +156,7 @@ BEGIN {
# Versions History intern
my %vNotesIntern = (
"9.4.0" => "26.06.2020 change to packages, changes for PBP ",
"9.4.0" => "01.07.2020 switch to packages, much more changes according PBP ",
"9.3.0" => "21.06.2020 SVS device 'inctive' if disabled, add zoom capability, much more internal code changes ",
"9.2.3" => "30.05.2020 change SSChatBot_formText to SSChatBot_formString ",
"9.2.2" => "14.04.2020 increase read timeout of Redis server cache, fix autocreate bug with https ",
@ -2551,7 +2551,7 @@ sub camStartRec {
return;
}
if (ReadingsVal("$name", "Record", undef) eq "Start" and !AttrVal($name, "recextend", undef)) {
if (ReadingsVal("$name", "Record", "") eq "Start" && !AttrVal($name, "recextend", "")) {
Log3($name, 3, "$name - another recording is already running - new start-command will be ignored");
return;
}
@ -2576,6 +2576,8 @@ sub camStartRec {
} else {
InternalTimer(gettimeofday()+0.3, "FHEM::SSCam::camStartRec", "$name!_!$emtxt!_!$teletxt!_!$chattxt", 0);
}
return;
}
###############################################################################
@ -2626,6 +2628,8 @@ sub camStopRec {
} else {
InternalTimer(gettimeofday()+0.3, "FHEM::SSCam::camStopRec", $hash, 0);
}
return;
}
###############################################################################
@ -2671,6 +2675,8 @@ sub camExpmode {
} else {
InternalTimer(gettimeofday()+0.5, "FHEM::SSCam::camExpmode", $hash, 0);
}
return;
}
###############################################################################
@ -2716,6 +2722,8 @@ sub amMotDetSc {
} else {
InternalTimer(gettimeofday()+0.5, "FHEM::SSCam::amMotDetSc", $hash, 0);
}
return;
}
###############################################################################
@ -2778,6 +2786,8 @@ sub camSnap {
$tac = (defined $tac)?$tac:"";
InternalTimer(gettimeofday()+0.3, "FHEM::SSCam::camSnap", "$name!_!$num!_!$lag!_!$ncount!_!$emtxt!_!$teletxt!_!$chattxt!_!$tac", 0);
}
return;
}
###############################################################################
@ -2824,6 +2834,8 @@ sub getRec {
} else {
InternalTimer(gettimeofday()+0.3, "FHEM::SSCam::getRec", $hash, 0);
}
return;
}
###############################################################################
@ -2870,6 +2882,8 @@ sub getRecAndSave {
} else {
InternalTimer(gettimeofday()+0.3, "FHEM::SSCam::getRecAndSave", $hash, 0);
}
return;
}
###############################################################################
@ -2915,6 +2929,8 @@ sub startTrack {
} else {
InternalTimer(gettimeofday()+0.9, "FHEM::SSCam::startTrack", $hash, 0);
}
return;
}
###############################################################################
@ -2960,6 +2976,8 @@ sub stopTrack {
} else {
InternalTimer(gettimeofday()+0.9, "FHEM::SSCam::stopTrack", $hash, 0);
}
return;
}
###############################################################################
@ -3014,6 +3032,8 @@ sub setZoom {
} else {
InternalTimer(gettimeofday()+0.8, "FHEM::SSCam::setZoom", $str, 0);
}
return;
}
###############################################################################
@ -3060,6 +3080,8 @@ sub getPresets {
} else {
InternalTimer(gettimeofday()+1.2, "FHEM::SSCam::getPresets", $hash, 0);
}
return;
}
###############################################################################
@ -3105,6 +3127,8 @@ sub setPreset {
} else {
InternalTimer(gettimeofday()+1.2, "FHEM::SSCam::setPreset", $hash, 0);
}
return;
}
###############################################################################
@ -3151,6 +3175,8 @@ sub delPreset {
} else {
InternalTimer(gettimeofday()+1.4, "FHEM::SSCam::delPreset", $hash, 0);
}
return;
}
###############################################################################
@ -3197,6 +3223,8 @@ sub setHome {
} else {
InternalTimer(gettimeofday()+1.2, "FHEM::SSCam::setHome", $hash, 0);
}
return;
}
###############################################################################
@ -3243,6 +3271,8 @@ sub managePir {
} else {
InternalTimer(gettimeofday()+1.2, "FHEM::SSCam::managePir", $hash, 0);
}
return;
}
###############################################################################
@ -3291,6 +3321,8 @@ sub runLiveview {
} else {
InternalTimer(gettimeofday()+0.5, "FHEM::SSCam::runLiveview", $hash, 0);
}
return;
}
###############################################################################
@ -3336,6 +3368,8 @@ sub activateHls {
} else {
InternalTimer(gettimeofday()+0.3, "FHEM::SSCam::activateHls", $hash, 0);
}
return;
}
###############################################################################
@ -3380,6 +3414,8 @@ sub camAutocreate {
} else {
InternalTimer(gettimeofday()+2.1, "FHEM::SSCam::camAutocreate", $hash, 0);
}
return;
}
###############################################################################
@ -3424,6 +3460,8 @@ sub reactivateHls {
} else {
InternalTimer(gettimeofday()+0.4, "FHEM::SSCam::reactivateHls", $hash, 0);
}
return;
}
###############################################################################
@ -3470,6 +3508,8 @@ sub stopLiveview {
} else {
InternalTimer(gettimeofday()+0.5, "FHEM::SSCam::stopLiveview", $hash, 0);
}
return;
}
###############################################################################
@ -3492,17 +3532,18 @@ sub extEvent {
} else {
InternalTimer(gettimeofday()+0.5, "FHEM::SSCam::extEvent", $hash, 0);
}
return;
}
###############################################################################
# PTZ-Kamera auf Position fahren
###############################################################################
sub doPtzAaction {
my ($hash) = @_;
my $hash = shift;
my $camname = $hash->{CAMNAME};
my $name = $hash->{NAME};
my $errorcode;
my $error;
my ($errorcode,$error);
RemoveInternalTimer($hash, "FHEM::SSCam::doPtzAaction");
return if(IsDisabled($name));
@ -3596,6 +3637,8 @@ sub doPtzAaction {
} else {
InternalTimer(gettimeofday()+0.5, "FHEM::SSCam::doPtzAaction", $hash, 0);
}
return;
}
###############################################################################
@ -3619,6 +3662,8 @@ sub moveStop {
} else {
InternalTimer(gettimeofday()+0.3, "FHEM::SSCam::moveStop", $hash, 0);
}
return;
}
###############################################################################
@ -3645,6 +3690,8 @@ sub camEnable {
} else {
InternalTimer(gettimeofday()+0.5, "FHEM::SSCam::camEnable", $hash, 0);
}
return;
}
###############################################################################
@ -3671,6 +3718,8 @@ sub camDisable {
} else {
InternalTimer(gettimeofday()+0.5, "FHEM::SSCam::camDisable", $hash, 0);
}
return;
}
###############################################################################
@ -3745,6 +3794,7 @@ sub getCaminfoAll {
readingsSingleUpdate($hash, "state", "initialized",1) if(!IsModelCam($hash)); # state für SVS-Device setzen
Log3($name, 3, "$name - Polling of $camname is deactivated");
}
return;
}
@ -3782,6 +3832,8 @@ sub getSnapInfo {
$tac = (defined $tac)?$tac:"";
InternalTimer(gettimeofday()+1.7, "FHEM::SSCam::getSnapInfo", "$name:$slim:$ssize", 0);
}
return;
}
###############################################################################
@ -3804,6 +3856,8 @@ sub getSnapFilename {
} else {
InternalTimer(gettimeofday()+0.5, "FHEM::SSCam::getSnapFilename", $hash, 0);
}
return;
}
###########################################################################
@ -3827,6 +3881,8 @@ sub getSvsInfo {
} else {
InternalTimer(gettimeofday()+1, "FHEM::SSCam::getSvsInfo", $hash, 0);
}
return;
}
###########################################################################
@ -3850,6 +3906,8 @@ sub setHomeMode {
} else {
InternalTimer(gettimeofday()+0.6, "FHEM::SSCam::setHomeMode", $hash, 0);
}
return;
}
###########################################################################
@ -3873,6 +3931,8 @@ sub setOptParams {
} else {
InternalTimer(gettimeofday()+0.6, "FHEM::SSCam::setOptParams", $hash, 0);
}
return;
}
###########################################################################
@ -3896,6 +3956,8 @@ sub getHomeModeState {
} else {
InternalTimer(gettimeofday()+0.7, "FHEM::SSCam::getHomeModeState", $hash, 0);
}
return;
}
###########################################################################
@ -3919,6 +3981,8 @@ sub getSvsLog {
} else {
InternalTimer(gettimeofday()+0.9, "FHEM::SSCam::getSvsLog", $hash, 0);
}
return;
}
###########################################################################
@ -3941,6 +4005,8 @@ sub sessionOff {
} else {
InternalTimer(gettimeofday()+1.1, "FHEM::SSCam::sessionOff", $hash, 0);
}
return;
}
###########################################################################
@ -3964,6 +4030,8 @@ sub getCamInfo {
} else {
InternalTimer(gettimeofday()+2, "FHEM::SSCam::getCamInfo", $hash, 0);
}
return;
}
###########################################################################
@ -3994,6 +4062,8 @@ sub getStreamFormat {
} else {
InternalTimer(gettimeofday()+1.4, "FHEM::SSCam::getStreamFormat", $hash, 0);
}
return;
}
################################################################################
@ -4018,6 +4088,8 @@ sub getStmUrlPath {
} else {
InternalTimer(gettimeofday()+2, "FHEM::SSCam::getStmUrlPath", $hash, 0);
}
return;
}
###########################################################################
@ -4041,6 +4113,8 @@ sub getEventList {
} else {
InternalTimer(gettimeofday()+2, "FHEM::SSCam::getEventList", $hash, 0);
}
return;
}
###########################################################################
@ -4065,6 +4139,7 @@ sub getMotionEnum {
InternalTimer(gettimeofday()+2, "FHEM::SSCam::getMotionEnum", $hash, 0);
}
return;
}
##########################################################################
@ -4088,6 +4163,8 @@ sub getCapabilities {
} else {
InternalTimer(gettimeofday()+2, "FHEM::SSCam::getCapabilities", $hash, 0);
}
return;
}
##########################################################################
@ -4120,6 +4197,8 @@ sub getPtzPresetList {
} else {
InternalTimer(gettimeofday()+2, "FHEM::SSCam::getPtzPresetList", $hash, 0);
}
return;
}
##########################################################################
@ -4152,6 +4231,8 @@ sub getPtzPatrolList {
} else {
InternalTimer(gettimeofday()+2, "FHEM::SSCam::getPtzPatrolList", $hash, 0);
}
return;
}
#############################################################################################################################
@ -4213,6 +4294,8 @@ sub getApiSites {
callback => \&getApiSites_Parse
};
HttpUtils_NonblockingGet ($param);
return;
}
####################################################################################
@ -4447,15 +4530,13 @@ sub getApiSites_Parse {
Log3($name, 4, "$name - $logstr");
# aktuelle oder simulierte SVS-Version für Fallentscheidung setzen
no warnings 'uninitialized';
my $major = $hash->{HELPER}{SVSVERSION}{MAJOR};
my $minor = $hash->{HELPER}{SVSVERSION}{MINOR};
my $small = $hash->{HELPER}{SVSVERSION}{SMALL};
my $build = $hash->{HELPER}{SVSVERSION}{BUILD};
my $major = $hash->{HELPER}{SVSVERSION}{MAJOR} // "";
my $minor = $hash->{HELPER}{SVSVERSION}{MINOR} // "";
my $small = $hash->{HELPER}{SVSVERSION}{SMALL} // "";
my $build = $hash->{HELPER}{SVSVERSION}{BUILD} // "";
my $actvs = $major.$minor.$small.$build;
my $avsc = $major.$minor.$small; # Variable zum Version Kompatibilitätscheck
Log3($name, 4, "$name - installed SVS version is: $actvs");
use warnings;
if(AttrVal($name,"simu_SVSversion",0)) {
my @vl = split (/\.|-/,AttrVal($name, "simu_SVSversion", ""));
@ -4594,6 +4675,7 @@ sub getApiSites_Parse {
return;
}
}
return checkSid($hash);
}
@ -4629,6 +4711,7 @@ sub checkSid {
return camOp($hash);
}
return;
}
#############################################################################################
@ -4676,6 +4759,8 @@ sub getCamId {
};
HttpUtils_NonblockingGet($param);
return;
}
#############################################################################################
@ -4809,6 +4894,7 @@ sub getCamId_Parse {
}
}
}
return camOp($hash);
}
@ -5022,17 +5108,16 @@ sub camOp {
$url = "$proto://$serveraddr:$serverport/webapi/$apihmpath?api=$apihm&method=GetInfo&version=$apihmmaxver&_sid=\"$sid\"";
} elsif ($OpMode eq "getsvslog") {
my $sev = $hash->{HELPER}{LISTLOGSEVERITY}?$hash->{HELPER}{LISTLOGSEVERITY}:"";
my $lim = $hash->{HELPER}{LISTLOGLIMIT}?$hash->{HELPER}{LISTLOGLIMIT}:0;
my $mco = $hash->{HELPER}{LISTLOGMATCH}?$hash->{HELPER}{LISTLOGMATCH}:"";
my $sev = $hash->{HELPER}{LISTLOGSEVERITY} // "";
my $lim = $hash->{HELPER}{LISTLOGLIMIT} // 0;
my $mco = $hash->{HELPER}{LISTLOGMATCH} // "";
Log3($name,4, "$name - get logList with params: severity => $sev, limit => $lim, matchcode => $mco");
$mco = IsModelCam($hash) ? $hash->{CAMNAME} : $mco;
$lim = 1 if(!$hash->{HELPER}{CL}{1}); # Datenabruf im Hintergrund
$sev = (lc($sev) =~ /error/) ? 3 :(lc($sev) =~ /warning/) ? 2 :(lc($sev) =~ /info/) ? 1 : "";
no warnings 'uninitialized';
Log3($name,4, "$name - get logList with params: severity => $hash->{HELPER}{LISTLOGSEVERITY}, limit => $lim, matchcode => $hash->{HELPER}{LISTLOGMATCH}");
use warnings;
$url = "$proto://$serveraddr:$serverport/webapi/$apilogpath?api=$apilog&version=\"2\"&method=\"List\"&time2String=\"no\"&level=\"$sev\"&limit=\"$lim\"&keyword=\"$mco\"&_sid=\"$sid\"";
delete($hash->{HELPER}{LISTLOGSEVERITY});
@ -5253,6 +5338,8 @@ sub camOp {
};
HttpUtils_NonblockingGet ($param);
return;
}
###################################################################################
@ -6922,6 +7009,8 @@ sub login {
callback => \&loginReturn
};
HttpUtils_NonblockingGet ($param);
return;
}
sub loginReturn {
@ -6993,6 +7082,7 @@ sub loginReturn {
return login($hash,$fret);
}
}
return login($hash,$fret);
}
@ -7037,6 +7127,8 @@ sub logout {
};
HttpUtils_NonblockingGet ($param);
return;
}
sub logoutReturn {
@ -7277,7 +7369,7 @@ return $cap;
sub IsCapZoom { # PTZ Zoom Eigenschaft
my $hash = shift;
my $name = $hash->{NAME};
return 1;
my $cap = ReadingsVal($name, "CapPTZZoom", "false") ne "false" ? 1 : 0;
return $cap;
@ -7561,11 +7653,6 @@ sub ptzPanel {
$ptz_ret .= '<table class="rc_body defsize">';
$ptz_ret .= "<tr>";
#$ptz_ret .= "<td class='ptzcontrol pcenter'; colspan=4>";
#$ptz_ret .= 'Zoom: ';
#$ptz_ret .= "</td>";
#$ptz_ret .= "</tr>";
#$ptz_ret .= "<tr>";
my @za = qw(.++ + &nbsp;&nbsp;Zoom&nbsp;&nbsp; - --.);
@ -7586,7 +7673,8 @@ sub ptzPanel {
my $iPath = FW_iconPath($img);
if($ftui) {
$img = "<img src=\"$FW_ME/$FW_icondir/$iPath\" height=\"$pbsf%\" width=\"$pbsf%\">";
my $zbs = $pbsf+100;
$img = "<img src=\"$FW_ME/$FW_icondir/$iPath\" height=\"$zbs%\" width=\"$zbs%\">";
} else {
$img = "<img src=\"$FW_ME/$FW_icondir/$iPath\" height=\"$pbs%\" width=\"$pbs%\">";
}
@ -7614,6 +7702,7 @@ sub ptzPanel {
## Presets
for my $fn (sort keys %{$data{webCmdFn}}) {
next if($data{webCmdFn}{$fn} ne "FW_widgetFallbackFn");
no strict "refs"; ## no critic 'NoStrict'
$Presets = &{$data{webCmdFn}{$fn}}($FW_wname,$name,"",$cmdPreset,$valPresets);
use strict "refs";
@ -7627,6 +7716,7 @@ sub ptzPanel {
## Patrols
for my $fn (sort keys %{$data{webCmdFn}}) {
next if($data{webCmdFn}{$fn} ne "FW_widgetFallbackFn");
no strict "refs"; ## no critic 'NoStrict'
$Patrols = &{$data{webCmdFn}{$fn}}($FW_wname,$name,"",$cmdPatrol,$valPatrols);
use strict "refs";
@ -8966,7 +9056,7 @@ sub sendChat {
my ($ret,$cache);
Log3($name, 4, "$name - ####################################################");
Log3($name, 4, "$name - ### start send snapshot by SSChatBot ");
Log3($name, 4, "$name - ### start send Snap or Video by SSChatBot ");
Log3($name, 4, "$name - ####################################################");
my %chatparams = (
@ -8989,10 +9079,9 @@ sub sendChat {
$data{SSCam}{$name}{PARAMS}{$tac}{$key} = $chatparams{$key}->{default} if (!$extparamref->{$key} && !$chatparams{$key}->{attr});
$data{SSCam}{$name}{PARAMS}{$tac}{$key} = delete $extparamref->{$key} if(exists $extparamref->{$key});
}
no warnings 'uninitialized';
Log3($name, 4, "$name - param $key is now \"".$data{SSCam}{$name}{PARAMS}{$tac}{$key}."\" ") if($key !~ /[sv]dat/);
Log3($name, 4, "$name - param $key is set to \"".($data{SSCam}{$name}{PARAMS}{$tac}{$key} // "")."\" ") if($key !~ /[sv]dat/);
Log3($name, 4, "$name - param $key is set") if($key =~ /[sv]dat/ && $data{SSCam}{$name}{PARAMS}{$tac}{$key} ne '');
use warnings;
}
$data{SSCam}{$name}{PARAMS}{$tac}{name} = $name;
@ -9218,7 +9307,7 @@ sub sendTelegram {
my ($ret,$cache);
Log3($name, 4, "$name - ####################################################");
Log3($name, 4, "$name - ### start send snapshot by TelegramBot ");
Log3($name, 4, "$name - ### start send Snap or Video by TelegramBot ");
Log3($name, 4, "$name - ####################################################");
my %teleparams = (
@ -9248,7 +9337,7 @@ sub sendTelegram {
$data{SSCam}{$name}{PARAMS}{$tac}{$key} = delete $extparamref->{$key} if(exists $extparamref->{$key});
}
no warnings 'uninitialized';
Log3($name, 4, "$name - param $key is now \"".$data{SSCam}{$name}{PARAMS}{$tac}{$key}."\" ") if($key !~ /[sv]dat/);
Log3($name, 4, "$name - param $key is set to \"".($data{SSCam}{$name}{PARAMS}{$tac}{$key} // "")."\" ") if($key !~ /[sv]dat/);
Log3($name, 4, "$name - param $key is set") if($key =~ /[sv]dat/ && $data{SSCam}{$name}{PARAMS}{$tac}{$key} ne '');
use warnings;
}
@ -14746,8 +14835,7 @@ attr &lt;name&gt; genericStrmHtmlTag &lt;img $HTMLATTR
"GPUtils": 0,
"HttpUtils": 0,
"Blocking": 0,
"Encode": 0,
"utf8":0
"Encode": 0
},
"recommends": {
"FHEM::Meta": 0,