2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-01-31 18:59:33 +00:00

49_SSCam: contrib 8.6.0

git-svn-id: https://svn.fhem.de/fhem/trunk@18339 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2019-01-19 15:35:22 +00:00
parent 17eb7c3878
commit 74279adbff

View File

@ -47,6 +47,7 @@ use Encode;
# Versions History intern
our %SSCam_vNotesIntern = (
"8.6.0" => "20.01.2019 new attribute snapReadingRotate ",
"8.5.0" => "17.01.2019 SVS device has \"snapCams\" command ",
"8.4.5" => "15.01.2019 fix event generation after request snapshots ",
"8.4.4" => "14.01.2019 change: generate event of every snapfile,id etc. if snap was called with arguments, Forum:#45671 #msg887484 ",
@ -353,6 +354,7 @@ sub SSCam_Initialize($) {
"snapGalleryNumber:$SSCAM_snum ".
"snapGalleryColumns ".
"snapGalleryHtmlAttr ".
"snapReadingRotate:0,1,2,3,4,5,6,7,8,9,10 ".
"pollnologging:1,0 ".
"debugactivetoken:1,0 ".
"rectime ".
@ -4239,7 +4241,7 @@ sub SSCam_camop ($) {
# ein Schnappschuß wird ausgelöst
$url = "$proto://$serveraddr:$serverport/webapi/$apitakesnappath?api=\"$apitakesnap\"&dsId=\"0\"&method=\"TakeSnapshot\"&version=\"$apitakesnapmaxver\"&camId=\"$camid\"&blSave=\"true\"&_sid=\"$sid\"";
readingsSingleUpdate($hash,"state", "snap", 1);
readingsSingleUpdate($hash, "LastSnapId", "", 0);
#readingsSingleUpdate($hash, "LastSnapId", "", 0);
} elsif ($OpMode eq "SaveRec") {
# eine Aufnahme soll in lokalem File (.mp4) gespeichert werden
@ -4268,7 +4270,7 @@ sub SSCam_camop ($) {
} elsif ($OpMode eq "getsnapfilename") {
# der Filename der aktuellen Schnappschuß-ID wird ermittelt
$snapid = ReadingsVal("$name", "LastSnapId", " ");
$snapid = ReadingsVal("$name", "LastSnapId", "");
Log3($name, 4, "$name - Get filename of present Snap-ID $snapid");
$url = "$proto://$serveraddr:$serverport/webapi/$apitakesnappath?api=\"$apitakesnap\"&method=\"List\"&version=\"$apitakesnapmaxver\"&imgSize=\"0\"&idList=\"$snapid\"&_sid=\"$sid\"";
@ -4949,7 +4951,9 @@ sub SSCam_camop_parse ($) {
}
$snapid = $data->{data}{'id'};
readingsSingleUpdate($hash,"LastSnapId",$snapid, 0) if($snapid);
# readingsSingleUpdate($hash,"LastSnapId",$snapid, 0) if($snapid);
my $rotnum = AttrVal($name,"snapReadingRotate",0);
SSCam_rotateReading($hash,"LastSnapId",$snapid,$rotnum,0);
readingsBeginUpdate($hash);
readingsBulkUpdate($hash,"Errorcode","none");
@ -5013,12 +5017,11 @@ sub SSCam_camop_parse ($) {
}
my @as = sort{$b<=>$a}keys%snaps;
my $rotnum = AttrVal($name,"snapReadingRotate",0);
foreach my $key (@as) {
readingsBeginUpdate($hash);
readingsBulkUpdate($hash,"LastSnapId", $snaps{$key}{snapid});
readingsBulkUpdate($hash,"LastSnapFilename", $snaps{$key}{fileName});
readingsBulkUpdate($hash,"LastSnapTime", $snaps{$key}{createdTm});
readingsEndUpdate($hash, 1);
SSCam_rotateReading($hash,"LastSnapId",$snaps{$key}{snapid},$rotnum,1);
SSCam_rotateReading($hash,"LastSnapFilename",$snaps{$key}{fileName},$rotnum,1);
SSCam_rotateReading($hash,"LastSnapTime",$snaps{$key}{createdTm},$rotnum,1);
}
##### ein Schnapschuss soll als liveView angezeigt werden #####
@ -5173,8 +5176,13 @@ sub SSCam_camop_parse ($) {
} elsif ($OpMode eq "getsnapfilename") {
# den Filenamen eines Schnapschusses ermitteln
$snapid = ReadingsVal("$name", "LastSnapId", " ");
$snapid = ReadingsVal("$name", "LastSnapId", "");
if(!$snapid) {
Log3($name, 2, "$name - Snap-ID \"LastSnapId\" isn't set. Filename can't be retrieved");
return;
}
readingsBeginUpdate($hash);
readingsBulkUpdate($hash,"Errorcode","none");
readingsBulkUpdate($hash,"Error","none");
@ -7212,7 +7220,7 @@ return ($error);
##############################################################################
# Auflösung Errorcodes SVS API
##############################################################################
sub SSCam_experror ($$) {
# Übernahmewerte sind $hash, $errorcode
my ($hash,$errorcode) = @_;
@ -7227,6 +7235,41 @@ sub SSCam_experror ($$) {
return ($error);
}
##############################################################################
# Zusätzliche Redings in Rotation erstellen
# Sub ($hash,<readingName>,<Wert>,<Rotationszahl>,<Trigger[0|1]>)
##############################################################################
sub SSCam_rotateReading ($$$$$) {
my ($hash,$readingName,$val,$rotnum,$do_trigger) = @_;
my $name = $hash->{NAME};
readingsBeginUpdate($hash);
my $o = ReadingsVal($name,$readingName,"n.a.");
if($val ne "n.a." && $rotnum >= 1) {
if("$o" ne "$val") {
for (my $i=$rotnum;$i>0;$i--) {
my $l = $i-1;
my $g = ReadingsVal($name,$readingName.$i,"n.a.");
if($l) {
$l = ReadingsVal($name,$readingName.$l,"n.a.");
} else {
$l = ReadingsVal($name,$readingName,"n.a.");
}
if("$l" ne "$g") {
readingsBulkUpdate($hash,$readingName.$i,$l);
Log3($name, 4, "$name - Rotate \"$readingName.$i\" to value: $l");
}
}
}
}
readingsBulkUpdate($hash,$readingName,$val);
readingsEndUpdate($hash, $do_trigger);
return;
}
#############################################################################################
# Vorbereitung SMTP EMail-Versand
# $OpMode = aktueller Operation Mode zur Unterscheidung was versendet werden soll