mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-28 11:01:59 +00:00
49_SSCam: Meta.json and minor code change
git-svn-id: https://svn.fhem.de/fhem/trunk@19280 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
1c15a77915
commit
dd2908ffa9
@ -1,5 +1,6 @@
|
|||||||
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
# 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.
|
# Do not insert empty lines here, update check depends on it.
|
||||||
|
- change: 49_SSCam: Meta.json and minor code change
|
||||||
- change: 50_MOBILEALERTSGW: Checksum check added
|
- change: 50_MOBILEALERTSGW: Checksum check added
|
||||||
- change: 93_DbRep: check index "Report_Idx" during first DB connect
|
- change: 93_DbRep: check index "Report_Idx" during first DB connect
|
||||||
- change: 98_RandomTimer: remove 59_Twilight dependency
|
- change: 98_RandomTimer: remove 59_Twilight dependency
|
||||||
|
@ -48,6 +48,7 @@ eval "use FHEM::Meta;1" or my $modMetaAbsent = 1;
|
|||||||
|
|
||||||
# Versions History intern
|
# Versions History intern
|
||||||
our %SSCam_vNotesIntern = (
|
our %SSCam_vNotesIntern = (
|
||||||
|
"8.13.3" => "28.04.2019 don't save private hash refs in central hash, \"repository\" added in Meta.json ",
|
||||||
"8.13.2" => "07.04.2019 fix perl warning Forum: https://forum.fhem.de/index.php/topic,45671.msg927912.html#msg927912",
|
"8.13.2" => "07.04.2019 fix perl warning Forum: https://forum.fhem.de/index.php/topic,45671.msg927912.html#msg927912",
|
||||||
"8.13.1" => "06.04.2019 verbose level in X_DelayedShutdown changed ",
|
"8.13.1" => "06.04.2019 verbose level in X_DelayedShutdown changed ",
|
||||||
"8.13.0" => "27.03.2019 add Meta.pm support ",
|
"8.13.0" => "27.03.2019 add Meta.pm support ",
|
||||||
@ -694,6 +695,7 @@ sub SSCam_Attr($$$$) {
|
|||||||
$slim = $aVal;
|
$slim = $aVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
delete($hash->{HELPER}{".SNAPHASH"}); # bestehenden Snaphash löschen
|
||||||
$hash->{HELPER}{GETSNAPGALLERY} = 1;
|
$hash->{HELPER}{GETSNAPGALLERY} = 1;
|
||||||
my $sg = AttrVal($name,"snapGallerySize","Icon"); # Auflösung Image
|
my $sg = AttrVal($name,"snapGallerySize","Icon"); # Auflösung Image
|
||||||
$ssize = ($sg eq "Icon")?1:2;
|
$ssize = ($sg eq "Icon")?1:2;
|
||||||
@ -960,24 +962,23 @@ sub SSCam_Set($@) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
my @camdvs;
|
my @camdvs;
|
||||||
my %snapac = (); # Schnappschuss Hash für alle Cams -> Schnappschudaten sollen hinein
|
|
||||||
if($cams eq "all") { # alle nicht disabled Kameras auslösen, sonst nur die gewählten
|
if($cams eq "all") { # alle nicht disabled Kameras auslösen, sonst nur die gewählten
|
||||||
@camdvs = devspec2array("TYPE=SSCam:FILTER=MODEL!=SVS");
|
@camdvs = devspec2array("TYPE=SSCam:FILTER=MODEL!=SVS");
|
||||||
foreach (@camdvs) {
|
foreach (@camdvs) {
|
||||||
if($defs{$_} && !IsDisabled($_)) {
|
if($defs{$_} && !IsDisabled($_)) {
|
||||||
$snapac{$_} = "";
|
$hash->{HELPER}{ALLSNAPREF}{$_} = ""; # Schnappschuss Hash für alle Cams -> Schnappschußdaten sollen hinein
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@camdvs = split(",",$cams);
|
@camdvs = split(",",$cams);
|
||||||
foreach (@camdvs) {
|
foreach (@camdvs) {
|
||||||
if($defs{$_} && !IsDisabled($_)) {
|
if($defs{$_} && !IsDisabled($_)) {
|
||||||
$snapac{$_} = "";
|
$hash->{HELPER}{ALLSNAPREF}{$_} = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return "No valid camera devices are specified for trigger snapshots" if(!%snapac);
|
return "No valid camera devices are specified for trigger snapshots" if(!$hash->{HELPER}{ALLSNAPREF});
|
||||||
|
|
||||||
my $emtxt;
|
my $emtxt;
|
||||||
my $teletxt = "";
|
my $teletxt = "";
|
||||||
@ -992,12 +993,10 @@ sub SSCam_Set($@) {
|
|||||||
$hash->{HELPER}{SMTPMSG} = $rawet;
|
$hash->{HELPER}{SMTPMSG} = $rawet;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $asref = \%snapac;
|
|
||||||
$hash->{HELPER}{ALLSNAPREF} = $asref;
|
|
||||||
my ($csnap,$cmail) = ("","");
|
my ($csnap,$cmail) = ("","");
|
||||||
foreach my $key (keys%{$asref}) {
|
foreach my $key (keys%{$hash->{HELPER}{ALLSNAPREF}}) {
|
||||||
if(!AttrVal($key, "snapEmailTxt", "")) {
|
if(!AttrVal($key, "snapEmailTxt", "")) {
|
||||||
delete $asref->{$key}; # Snap dieser Kamera auslösen aber nicht senden
|
delete $hash->{HELPER}{ALLSNAPREF}->{$key}; # Snap dieser Kamera auslösen aber nicht senden
|
||||||
$csnap .= $csnap?", $key":$key;
|
$csnap .= $csnap?", $key":$key;
|
||||||
$emtxt = "";
|
$emtxt = "";
|
||||||
} else {
|
} else {
|
||||||
@ -4688,9 +4687,9 @@ sub SSCam_camop ($) {
|
|||||||
} elsif ($hash->{HELPER}{MOTDETSC} eq "camera") {
|
} elsif ($hash->{HELPER}{MOTDETSC} eq "camera") {
|
||||||
$motdetsc = "0";
|
$motdetsc = "0";
|
||||||
|
|
||||||
$motdetoptions{SENSITIVITY} = $hash->{'HELPER'}{'MOTDETSC_PROP1'} if ($hash->{'HELPER'}{'MOTDETSC_PROP1'});
|
$motdetoptions{SENSITIVITY} = $hash->{HELPER}{MOTDETSC_PROP1} if ($hash->{HELPER}{MOTDETSC_PROP1});
|
||||||
$motdetoptions{OBJECTSIZE} = $hash->{'HELPER'}{'MOTDETSC_PROP2'} if ($hash->{'HELPER'}{'MOTDETSC_PROP2'});
|
$motdetoptions{OBJECTSIZE} = $hash->{HELPER}{MOTDETSC_PROP2} if ($hash->{HELPER}{MOTDETSC_PROP2});
|
||||||
$motdetoptions{PERCENTAGE} = $hash->{'HELPER'}{'MOTDETSC_PROP3'} if ($hash->{'HELPER'}{'MOTDETSC_PROP3'});
|
$motdetoptions{PERCENTAGE} = $hash->{HELPER}{MOTDETSC_PROP3} if ($hash->{HELPER}{MOTDETSC_PROP3});
|
||||||
|
|
||||||
$url = "$proto://$serveraddr:$serverport/webapi/$apicameventpath?api=\"$apicamevent\"&version=\"$apicameventmaxver\"&method=\"MDParamSave\"&camId=\"$camid\"&source=$motdetsc&_sid=\"$sid\"";
|
$url = "$proto://$serveraddr:$serverport/webapi/$apicameventpath?api=\"$apicamevent\"&version=\"$apicameventmaxver\"&method=\"MDParamSave\"&camId=\"$camid\"&source=$motdetsc&_sid=\"$sid\"";
|
||||||
|
|
||||||
@ -4723,8 +4722,8 @@ sub SSCam_camop ($) {
|
|||||||
} elsif ($hash->{HELPER}{MOTDETSC} eq "SVS") {
|
} elsif ($hash->{HELPER}{MOTDETSC} eq "SVS") {
|
||||||
$motdetsc = "1";
|
$motdetsc = "1";
|
||||||
|
|
||||||
$motdetoptions{SENSITIVITY} = $hash->{'HELPER'}{'MOTDETSC_PROP1'} if ($hash->{'HELPER'}{'MOTDETSC_PROP1'});
|
$motdetoptions{SENSITIVITY} = $hash->{HELPER}{MOTDETSC_PROP1} if ($hash->{HELPER}{MOTDETSC_PROP1});
|
||||||
$motdetoptions{THRESHOLD} = $hash->{'HELPER'}{'MOTDETSC_PROP2'} if ($hash->{'HELPER'}{'MOTDETSC_PROP2'});
|
$motdetoptions{THRESHOLD} = $hash->{HELPER}{MOTDETSC_PROP2} if ($hash->{HELPER}{MOTDETSC_PROP2});
|
||||||
|
|
||||||
# nur Umschaltung, alte Werte beibehalten
|
# nur Umschaltung, alte Werte beibehalten
|
||||||
$url = "$proto://$serveraddr:$serverport/webapi/$apicameventpath?api=\"$apicamevent\"&version=\"$apicameventmaxver\"&method=\"MDParamSave\"&camId=\"$camid\"&source=$motdetsc&keep=true&_sid=\"$sid\"";
|
$url = "$proto://$serveraddr:$serverport/webapi/$apicameventpath?api=\"$apicamevent\"&version=\"$apicameventmaxver\"&method=\"MDParamSave\"&camId=\"$camid\"&source=$motdetsc&keep=true&_sid=\"$sid\"";
|
||||||
@ -4996,7 +4995,7 @@ sub SSCam_camop_parse ($) {
|
|||||||
$sendrecs{$sn}{createdTm} = $createdTm;
|
$sendrecs{$sn}{createdTm} = $createdTm;
|
||||||
$sendrecs{$sn}{fileName} = $fileName;
|
$sendrecs{$sn}{fileName} = $fileName;
|
||||||
$sendrecs{$sn}{".imageData"} = $myjson;
|
$sendrecs{$sn}{".imageData"} = $myjson;
|
||||||
Log3($name,4, "$name - Snap '$sn' added to send recording hash: ID => $sendrecs{$sn}{recid}, File => $sendrecs{$sn}{fileName}, Created => $sendrecs{$sn}{createdTm}");
|
Log3($name,4, "$name - Snap '$sn' added to send recording hash: ID => $recid, File => $fileName, Created => $createdTm");
|
||||||
|
|
||||||
# prüfen ob Recording als Email / Telegram versendet werden soll
|
# prüfen ob Recording als Email / Telegram versendet werden soll
|
||||||
SSCam_prepareSendData ($hash, $OpMode, \%sendrecs);
|
SSCam_prepareSendData ($hash, $OpMode, \%sendrecs);
|
||||||
@ -5234,7 +5233,7 @@ sub SSCam_camop_parse ($) {
|
|||||||
SSCam_refresh($hash,0,1,0); # kein Room-Refresh, SSCam-state-Event, kein SSCamSTRM-Event
|
SSCam_refresh($hash,0,1,0); # kein Room-Refresh, SSCam-state-Event, kein SSCamSTRM-Event
|
||||||
|
|
||||||
my $tac = "";
|
my $tac = "";
|
||||||
if($hash->{HELPER}{CANSENDSNAP}) {
|
if($hash->{HELPER}{CANSENDSNAP} || $hash->{HELPER}{CANTELESNAP}) {
|
||||||
$tac = SSCam_openOrgetTrans($hash); # Transaktion starten oder vorhandenen Code holen
|
$tac = SSCam_openOrgetTrans($hash); # Transaktion starten oder vorhandenen Code holen
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5362,11 +5361,12 @@ sub SSCam_camop_parse ($) {
|
|||||||
my $fileName = $data->{data}{data}[$i]{fileName};
|
my $fileName = $data->{data}{data}[$i]{fileName};
|
||||||
my $imageData = $data->{data}{data}[$i]{imageData}; # Image data of snapshot in base64 format
|
my $imageData = $data->{data}{data}[$i]{imageData}; # Image data of snapshot in base64 format
|
||||||
|
|
||||||
|
# Schnappschuss Hash zum Versand wird erstellt
|
||||||
$sendsnaps{$sn}{snapid} = $snapid;
|
$sendsnaps{$sn}{snapid} = $snapid;
|
||||||
$sendsnaps{$sn}{createdTm} = $createdTm;
|
$sendsnaps{$sn}{createdTm} = $createdTm;
|
||||||
$sendsnaps{$sn}{fileName} = $fileName;
|
$sendsnaps{$sn}{fileName} = $fileName;
|
||||||
$sendsnaps{$sn}{".imageData"} = $imageData;
|
$sendsnaps{$sn}{".imageData"} = $imageData;
|
||||||
Log3($name,4, "$name - Snap '$sn' added to send gallery hash: ID => $sendsnaps{$sn}{snapid}, File => $sendsnaps{$sn}{fileName}, Created => $sendsnaps{$sn}{createdTm}");
|
Log3($name,4, "$name - Snap '$sn' added to send gallery hash: ID => $snapid, File => $fileName, Created => $createdTm");
|
||||||
|
|
||||||
# Snaphash um die neuen Snaps ergänzen wenn existent
|
# Snaphash um die neuen Snaps ergänzen wenn existent
|
||||||
if($hash->{HELPER}{".SNAPHASH"}{$sn}) {
|
if($hash->{HELPER}{".SNAPHASH"}{$sn}) {
|
||||||
@ -5389,7 +5389,6 @@ sub SSCam_camop_parse ($) {
|
|||||||
# werden (Attr snapGalleryBoost=0)
|
# werden (Attr snapGalleryBoost=0)
|
||||||
my $i = 0;
|
my $i = 0;
|
||||||
my $sn = 0;
|
my $sn = 0;
|
||||||
my %allsnaps = (); # Schnappschuss Hash wird leer erstellt
|
|
||||||
|
|
||||||
$hash->{HELPER}{TOTALCNT} = $data->{data}{total}; # total Anzahl Schnappschüsse
|
$hash->{HELPER}{TOTALCNT} = $data->{data}{total}; # total Anzahl Schnappschüsse
|
||||||
|
|
||||||
@ -5410,18 +5409,15 @@ sub SSCam_camop_parse ($) {
|
|||||||
} else {
|
} else {
|
||||||
$createdTm = "$d[0]-$d[1]-$d[2] / $t[1]";
|
$createdTm = "$d[0]-$d[1]-$d[2] / $t[1]";
|
||||||
}
|
}
|
||||||
$allsnaps{$sn}{snapid} = $snapid;
|
$hash->{HELPER}{".SNAPHASH"}{$sn}{snapid} = $snapid;
|
||||||
$allsnaps{$sn}{createdTm} = $createdTm;
|
$hash->{HELPER}{".SNAPHASH"}{$sn}{createdTm} = $createdTm;
|
||||||
$allsnaps{$sn}{fileName} = $fileName;
|
$hash->{HELPER}{".SNAPHASH"}{$sn}{fileName} = $fileName;
|
||||||
$allsnaps{$sn}{imageData} = $imageData;
|
$hash->{HELPER}{".SNAPHASH"}{$sn}{imageData} = $imageData;
|
||||||
Log3($name,4, "$name - Snap '$sn' added to gallery hash: ID => $allsnaps{$sn}{snapid}, File => $allsnaps{$sn}{fileName}, Created => $allsnaps{$sn}{createdTm}");
|
Log3($name,4, "$name - Snap '$sn' added to gallery hash: ID => $hash->{HELPER}{\".SNAPHASH\"}{$sn}{snapid}, File => $hash->{HELPER}{\".SNAPHASH\"}{$sn}{fileName}, Created => $hash->{HELPER}{\".SNAPHASH\"}{$sn}{createdTm}");
|
||||||
$sn += 1;
|
$sn += 1;
|
||||||
$i += 1;
|
$i += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Hash der Schnapschüsse erstellen
|
|
||||||
$hash->{HELPER}{".SNAPHASH"} = \%allsnaps;
|
|
||||||
|
|
||||||
# Direktausgabe Snaphash wenn nicht gepollt wird
|
# Direktausgabe Snaphash wenn nicht gepollt wird
|
||||||
if(!AttrVal($name, "snapGalleryBoost",0)) {
|
if(!AttrVal($name, "snapGalleryBoost",0)) {
|
||||||
my $htmlCode = SSCam_composegallery($name);
|
my $htmlCode = SSCam_composegallery($name);
|
||||||
@ -5429,7 +5425,7 @@ sub SSCam_camop_parse ($) {
|
|||||||
for (my $k=1; (defined($hash->{HELPER}{CL}{$k})); $k++ ) {
|
for (my $k=1; (defined($hash->{HELPER}{CL}{$k})); $k++ ) {
|
||||||
asyncOutput($hash->{HELPER}{CL}{$k},"$htmlCode");
|
asyncOutput($hash->{HELPER}{CL}{$k},"$htmlCode");
|
||||||
}
|
}
|
||||||
delete($hash->{HELPER}{".SNAPHASH"}); # Snaphash löschen wenn nicht gepollt wird
|
delete($hash->{HELPER}{".SNAPHASH"}); # Snaphash Referenz löschen %allsnaps = ();
|
||||||
delete($hash->{HELPER}{CL});
|
delete($hash->{HELPER}{CL});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5679,19 +5675,17 @@ sub SSCam_camop_parse ($) {
|
|||||||
$userPriv = "Viewer";
|
$userPriv = "Viewer";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# "my" nicht am Anfang deklarieren, sonst wird Hash %version wieder geleert !
|
|
||||||
my %version = (
|
|
||||||
MAJOR => $data->{'data'}{'version'}{'major'},
|
|
||||||
MINOR => $data->{'data'}{'version'}{'minor'},
|
|
||||||
SMALL => $data->{'data'}{'version'}{'small'},
|
|
||||||
BUILD => $data->{'data'}{'version'}{'build'}
|
|
||||||
);
|
|
||||||
# Werte in $hash zur späteren Auswertung einfügen
|
# Werte in $hash zur späteren Auswertung einfügen
|
||||||
$hash->{HELPER}{SVSVERSION} = \%version;
|
$hash->{HELPER}{SVSVERSION}{MAJOR} = $data->{'data'}{'version'}{'major'};
|
||||||
my $major = $version{"MAJOR"};
|
$hash->{HELPER}{SVSVERSION}{MINOR} = $data->{'data'}{'version'}{'minor'};
|
||||||
my $minor = $version{"MINOR"};
|
$hash->{HELPER}{SVSVERSION}{SMALL} = $data->{'data'}{'version'}{'small'};
|
||||||
my $small = $version{"SMALL"};
|
$hash->{HELPER}{SVSVERSION}{BUILD} = $data->{'data'}{'version'}{'build'};
|
||||||
my $build = $version{"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};
|
||||||
|
|
||||||
# simulieren einer anderen SVS-Version
|
# simulieren einer anderen SVS-Version
|
||||||
if (AttrVal($name, "simu_SVSversion", undef)) {
|
if (AttrVal($name, "simu_SVSversion", undef)) {
|
||||||
@ -6152,14 +6146,12 @@ sub SSCam_camop_parse ($) {
|
|||||||
my $cnt = 0;
|
my $cnt = 0;
|
||||||
|
|
||||||
# alle Presets der Kamera mit Id's in Assoziatives Array einlesen
|
# alle Presets der Kamera mit Id's in Assoziatives Array einlesen
|
||||||
# "my" nicht am Anfang deklarieren, sonst wird Hash %allpresets wieder geleert !
|
|
||||||
my %allpresets;
|
|
||||||
my $home = "not set";
|
my $home = "not set";
|
||||||
while ($cnt < $presetcnt) {
|
while ($cnt < $presetcnt) {
|
||||||
# my $presid = $data->{'data'}->{'presets'}->[$cnt]->{'id'};
|
# my $presid = $data->{'data'}->{'presets'}->[$cnt]->{'id'};
|
||||||
my $presid = $data->{'data'}->{'presets'}->[$cnt]->{'position'};
|
my $presid = $data->{'data'}->{'presets'}->[$cnt]->{'position'};
|
||||||
my $presname = $data->{'data'}->{'presets'}->[$cnt]->{'name'};
|
my $presname = $data->{'data'}->{'presets'}->[$cnt]->{'name'};
|
||||||
$allpresets{$presname} = "$presid";
|
$hash->{HELPER}{ALLPRESETS}{$presname} = "$presid";
|
||||||
my $ptype = $data->{'data'}->{'presets'}->[$cnt]->{'type'};
|
my $ptype = $data->{'data'}->{'presets'}->[$cnt]->{'type'};
|
||||||
if ($ptype) {
|
if ($ptype) {
|
||||||
$home = $presname;
|
$home = $presname;
|
||||||
@ -6167,10 +6159,7 @@ sub SSCam_camop_parse ($) {
|
|||||||
$cnt += 1;
|
$cnt += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Presethash in $hash einfügen
|
my @preskeys = sort(keys(%{$hash->{HELPER}{ALLPRESETS}}));
|
||||||
$hash->{HELPER}{ALLPRESETS} = \%allpresets;
|
|
||||||
|
|
||||||
my @preskeys = sort(keys(%allpresets));
|
|
||||||
my $presetlist = join(",",@preskeys);
|
my $presetlist = join(",",@preskeys);
|
||||||
|
|
||||||
# Setreading
|
# Setreading
|
||||||
@ -6193,24 +6182,17 @@ sub SSCam_camop_parse ($) {
|
|||||||
my $cnt = 0;
|
my $cnt = 0;
|
||||||
|
|
||||||
# alle Patrols der Kamera mit Id's in Assoziatives Array einlesen
|
# alle Patrols der Kamera mit Id's in Assoziatives Array einlesen
|
||||||
# "my" nicht am Anfang deklarieren, sonst wird Hash %allpatrols wieder geleert !
|
delete $hash->{HELPER}{ALLPATROLS};
|
||||||
my %allpatrols = ();
|
|
||||||
while ($cnt < $patrolcnt) {
|
while ($cnt < $patrolcnt) {
|
||||||
$patrolid = $data->{'data'}->{'patrols'}->[$cnt]->{'id'};
|
$patrolid = $data->{'data'}->{'patrols'}->[$cnt]->{'id'};
|
||||||
$patrolname = $data->{'data'}->{'patrols'}->[$cnt]->{'name'};
|
$patrolname = $data->{'data'}->{'patrols'}->[$cnt]->{'name'};
|
||||||
$allpatrols{$patrolname} = $patrolid;
|
$hash->{HELPER}{ALLPATROLS}{$patrolname} = $patrolid;
|
||||||
$cnt += 1;
|
$cnt += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Presethash in $hash einfügen
|
@patrolkeys = sort(keys(%{$hash->{HELPER}{ALLPATROLS}}));
|
||||||
$hash->{HELPER}{ALLPATROLS} = \%allpatrols;
|
|
||||||
|
|
||||||
@patrolkeys = sort(keys(%allpatrols));
|
|
||||||
$patrollist = join(",",@patrolkeys);
|
$patrollist = join(",",@patrolkeys);
|
||||||
|
|
||||||
# print "ID von Tour1 ist : ". %allpatrols->{Tour1};
|
|
||||||
# print "aus Hash: ".$hash->{HELPER}{ALLPRESETS}{Tour1};
|
|
||||||
|
|
||||||
readingsBeginUpdate($hash);
|
readingsBeginUpdate($hash);
|
||||||
readingsBulkUpdate($hash,"Patrols",$patrollist);
|
readingsBulkUpdate($hash,"Patrols",$patrollist);
|
||||||
readingsBulkUpdate($hash,"Errorcode","none");
|
readingsBulkUpdate($hash,"Errorcode","none");
|
||||||
@ -7500,7 +7482,7 @@ sub SSCam_composegallery ($;$$) {
|
|||||||
my ($name,$strmdev,$model) = @_;
|
my ($name,$strmdev,$model) = @_;
|
||||||
my $hash = $defs{$name};
|
my $hash = $defs{$name};
|
||||||
my $camname = $hash->{CAMNAME};
|
my $camname = $hash->{CAMNAME};
|
||||||
my $allsnaps = $hash->{HELPER}{".SNAPHASH"}; # = \%allsnaps
|
my $allsnaps = $hash->{HELPER}{".SNAPHASH"}; # = %allsnaps
|
||||||
my $sgc = AttrVal($name,"snapGalleryColumns",3); # Anzahl der Images in einer Tabellenzeile
|
my $sgc = AttrVal($name,"snapGalleryColumns",3); # Anzahl der Images in einer Tabellenzeile
|
||||||
my $lss = ReadingsVal($name, "LastSnapTime", ""); # Zeitpunkt neueste Aufnahme
|
my $lss = ReadingsVal($name, "LastSnapTime", ""); # Zeitpunkt neueste Aufnahme
|
||||||
my $lang = AttrVal("global","language","EN"); # Systemsprache
|
my $lang = AttrVal("global","language","EN"); # Systemsprache
|
||||||
@ -7735,11 +7717,10 @@ sub SSCam_prepareSendData ($$;$) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
my %rs = %{$asref};
|
my %rs = %{$asref};
|
||||||
my $rsref = \%rs;
|
|
||||||
delete $svshash->{HELPER}{ALLSNAPREF}; # ALLSNAPREF löschen -> gemeinsamer Versand beendet
|
delete $svshash->{HELPER}{ALLSNAPREF}; # ALLSNAPREF löschen -> gemeinsamer Versand beendet
|
||||||
$hash = $svshash; # Hash durch SVS-Hash ersetzt
|
$hash = $svshash; # Hash durch SVS-Hash ersetzt
|
||||||
$name = $svshash->{NAME}; # Name des auslösenden SVS-Devices wird eingesetzt
|
$name = $svshash->{NAME}; # Name des auslösenden SVS-Devices wird eingesetzt
|
||||||
$data = $rsref; # Referenz zum summarischen Hash einsetzen
|
$data = \%rs; # Referenz zum summarischen Hash einsetzen
|
||||||
$calias = AttrVal($name,"alias",$hash->{NAME}); # Alias des SVS-Devices
|
$calias = AttrVal($name,"alias",$hash->{NAME}); # Alias des SVS-Devices
|
||||||
$hash->{HELPER}{TRANSACTION} = "multiple_ta"; # fake Transaction im SVS Device setzen
|
$hash->{HELPER}{TRANSACTION} = "multiple_ta"; # fake Transaction im SVS Device setzen
|
||||||
last; # Schleife verlassen und mit Senden weiter
|
last; # Schleife verlassen und mit Senden weiter
|
||||||
@ -8040,7 +8021,7 @@ sub SSCam_sendTelegram ($$) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
use strict "refs";
|
use strict "refs";
|
||||||
%params = (); # erstellten Versandhash löschen
|
undef %params; # erstellten Versandhash löschen
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -8748,7 +8729,6 @@ sub SSCam_sendEmailblocking($) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
use strict "refs";
|
use strict "refs";
|
||||||
%{$paref} = (); # erstellten Versandhash löschen
|
|
||||||
|
|
||||||
# Daten müssen als Einzeiler zurückgegeben werden
|
# Daten müssen als Einzeiler zurückgegeben werden
|
||||||
$ret = encode_base64($ret,"");
|
$ret = encode_base64($ret,"");
|
||||||
@ -12655,6 +12635,16 @@ attr <name> genericStrmHtmlTag <img $HTMLATTR
|
|||||||
"x_wiki": {
|
"x_wiki": {
|
||||||
"web": "https://wiki.fhem.de/wiki/SSCAM_-_Steuerung_von_Kameras_in_Synology_Surveillance_Station",
|
"web": "https://wiki.fhem.de/wiki/SSCAM_-_Steuerung_von_Kameras_in_Synology_Surveillance_Station",
|
||||||
"title": "SSCAM - Steuerung von Kameras in Synology Surveillance Station"
|
"title": "SSCAM - Steuerung von Kameras in Synology Surveillance Station"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"x_dev": {
|
||||||
|
"type": "svn",
|
||||||
|
"url": "https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter",
|
||||||
|
"web": "https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter/49_SSCam.pm",
|
||||||
|
"x_branch": "dev",
|
||||||
|
"x_filepath": "fhem/contrib/",
|
||||||
|
"x_raw": "https://svn.fhem.de/fhem/trunk/fhem/contrib/DS_Starter/49_SSCam.pm"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
########################################################################################################################
|
########################################################################################################################
|
||||||
# $Id: 49_SSCam.pm 19124 2019-04-06 09:28:20Z DS_Starter $
|
# $Id: 49_SSCam.pm 19145 2019-04-07 19:46:23Z DS_Starter $
|
||||||
#########################################################################################################################
|
#########################################################################################################################
|
||||||
# 49_SSCam.pm
|
# 49_SSCam.pm
|
||||||
#
|
#
|
||||||
@ -48,6 +48,7 @@ eval "use FHEM::Meta;1" or my $modMetaAbsent = 1;
|
|||||||
|
|
||||||
# Versions History intern
|
# Versions History intern
|
||||||
our %SSCam_vNotesIntern = (
|
our %SSCam_vNotesIntern = (
|
||||||
|
"8.13.3" => "28.04.2019 don't save private hash refs in central hash, \"repository\" added in Meta.json ",
|
||||||
"8.13.2" => "07.04.2019 fix perl warning Forum: https://forum.fhem.de/index.php/topic,45671.msg927912.html#msg927912",
|
"8.13.2" => "07.04.2019 fix perl warning Forum: https://forum.fhem.de/index.php/topic,45671.msg927912.html#msg927912",
|
||||||
"8.13.1" => "06.04.2019 verbose level in X_DelayedShutdown changed ",
|
"8.13.1" => "06.04.2019 verbose level in X_DelayedShutdown changed ",
|
||||||
"8.13.0" => "27.03.2019 add Meta.pm support ",
|
"8.13.0" => "27.03.2019 add Meta.pm support ",
|
||||||
@ -694,6 +695,7 @@ sub SSCam_Attr($$$$) {
|
|||||||
$slim = $aVal;
|
$slim = $aVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
delete($hash->{HELPER}{".SNAPHASH"}); # bestehenden Snaphash löschen
|
||||||
$hash->{HELPER}{GETSNAPGALLERY} = 1;
|
$hash->{HELPER}{GETSNAPGALLERY} = 1;
|
||||||
my $sg = AttrVal($name,"snapGallerySize","Icon"); # Auflösung Image
|
my $sg = AttrVal($name,"snapGallerySize","Icon"); # Auflösung Image
|
||||||
$ssize = ($sg eq "Icon")?1:2;
|
$ssize = ($sg eq "Icon")?1:2;
|
||||||
@ -960,24 +962,23 @@ sub SSCam_Set($@) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
my @camdvs;
|
my @camdvs;
|
||||||
my %snapac = (); # Schnappschuss Hash für alle Cams -> Schnappschudaten sollen hinein
|
|
||||||
if($cams eq "all") { # alle nicht disabled Kameras auslösen, sonst nur die gewählten
|
if($cams eq "all") { # alle nicht disabled Kameras auslösen, sonst nur die gewählten
|
||||||
@camdvs = devspec2array("TYPE=SSCam:FILTER=MODEL!=SVS");
|
@camdvs = devspec2array("TYPE=SSCam:FILTER=MODEL!=SVS");
|
||||||
foreach (@camdvs) {
|
foreach (@camdvs) {
|
||||||
if($defs{$_} && !IsDisabled($_)) {
|
if($defs{$_} && !IsDisabled($_)) {
|
||||||
$snapac{$_} = "";
|
$hash->{HELPER}{ALLSNAPREF}{$_} = ""; # Schnappschuss Hash für alle Cams -> Schnappschußdaten sollen hinein
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@camdvs = split(",",$cams);
|
@camdvs = split(",",$cams);
|
||||||
foreach (@camdvs) {
|
foreach (@camdvs) {
|
||||||
if($defs{$_} && !IsDisabled($_)) {
|
if($defs{$_} && !IsDisabled($_)) {
|
||||||
$snapac{$_} = "";
|
$hash->{HELPER}{ALLSNAPREF}{$_} = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return "No valid camera devices are specified for trigger snapshots" if(!%snapac);
|
return "No valid camera devices are specified for trigger snapshots" if(!$hash->{HELPER}{ALLSNAPREF});
|
||||||
|
|
||||||
my $emtxt;
|
my $emtxt;
|
||||||
my $teletxt = "";
|
my $teletxt = "";
|
||||||
@ -992,12 +993,10 @@ sub SSCam_Set($@) {
|
|||||||
$hash->{HELPER}{SMTPMSG} = $rawet;
|
$hash->{HELPER}{SMTPMSG} = $rawet;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $asref = \%snapac;
|
|
||||||
$hash->{HELPER}{ALLSNAPREF} = $asref;
|
|
||||||
my ($csnap,$cmail) = ("","");
|
my ($csnap,$cmail) = ("","");
|
||||||
foreach my $key (keys%{$asref}) {
|
foreach my $key (keys%{$hash->{HELPER}{ALLSNAPREF}}) {
|
||||||
if(!AttrVal($key, "snapEmailTxt", "")) {
|
if(!AttrVal($key, "snapEmailTxt", "")) {
|
||||||
delete $asref->{$key}; # Snap dieser Kamera auslösen aber nicht senden
|
delete $hash->{HELPER}{ALLSNAPREF}->{$key}; # Snap dieser Kamera auslösen aber nicht senden
|
||||||
$csnap .= $csnap?", $key":$key;
|
$csnap .= $csnap?", $key":$key;
|
||||||
$emtxt = "";
|
$emtxt = "";
|
||||||
} else {
|
} else {
|
||||||
@ -4688,9 +4687,9 @@ sub SSCam_camop ($) {
|
|||||||
} elsif ($hash->{HELPER}{MOTDETSC} eq "camera") {
|
} elsif ($hash->{HELPER}{MOTDETSC} eq "camera") {
|
||||||
$motdetsc = "0";
|
$motdetsc = "0";
|
||||||
|
|
||||||
$motdetoptions{SENSITIVITY} = $hash->{'HELPER'}{'MOTDETSC_PROP1'} if ($hash->{'HELPER'}{'MOTDETSC_PROP1'});
|
$motdetoptions{SENSITIVITY} = $hash->{HELPER}{MOTDETSC_PROP1} if ($hash->{HELPER}{MOTDETSC_PROP1});
|
||||||
$motdetoptions{OBJECTSIZE} = $hash->{'HELPER'}{'MOTDETSC_PROP2'} if ($hash->{'HELPER'}{'MOTDETSC_PROP2'});
|
$motdetoptions{OBJECTSIZE} = $hash->{HELPER}{MOTDETSC_PROP2} if ($hash->{HELPER}{MOTDETSC_PROP2});
|
||||||
$motdetoptions{PERCENTAGE} = $hash->{'HELPER'}{'MOTDETSC_PROP3'} if ($hash->{'HELPER'}{'MOTDETSC_PROP3'});
|
$motdetoptions{PERCENTAGE} = $hash->{HELPER}{MOTDETSC_PROP3} if ($hash->{HELPER}{MOTDETSC_PROP3});
|
||||||
|
|
||||||
$url = "$proto://$serveraddr:$serverport/webapi/$apicameventpath?api=\"$apicamevent\"&version=\"$apicameventmaxver\"&method=\"MDParamSave\"&camId=\"$camid\"&source=$motdetsc&_sid=\"$sid\"";
|
$url = "$proto://$serveraddr:$serverport/webapi/$apicameventpath?api=\"$apicamevent\"&version=\"$apicameventmaxver\"&method=\"MDParamSave\"&camId=\"$camid\"&source=$motdetsc&_sid=\"$sid\"";
|
||||||
|
|
||||||
@ -4723,8 +4722,8 @@ sub SSCam_camop ($) {
|
|||||||
} elsif ($hash->{HELPER}{MOTDETSC} eq "SVS") {
|
} elsif ($hash->{HELPER}{MOTDETSC} eq "SVS") {
|
||||||
$motdetsc = "1";
|
$motdetsc = "1";
|
||||||
|
|
||||||
$motdetoptions{SENSITIVITY} = $hash->{'HELPER'}{'MOTDETSC_PROP1'} if ($hash->{'HELPER'}{'MOTDETSC_PROP1'});
|
$motdetoptions{SENSITIVITY} = $hash->{HELPER}{MOTDETSC_PROP1} if ($hash->{HELPER}{MOTDETSC_PROP1});
|
||||||
$motdetoptions{THRESHOLD} = $hash->{'HELPER'}{'MOTDETSC_PROP2'} if ($hash->{'HELPER'}{'MOTDETSC_PROP2'});
|
$motdetoptions{THRESHOLD} = $hash->{HELPER}{MOTDETSC_PROP2} if ($hash->{HELPER}{MOTDETSC_PROP2});
|
||||||
|
|
||||||
# nur Umschaltung, alte Werte beibehalten
|
# nur Umschaltung, alte Werte beibehalten
|
||||||
$url = "$proto://$serveraddr:$serverport/webapi/$apicameventpath?api=\"$apicamevent\"&version=\"$apicameventmaxver\"&method=\"MDParamSave\"&camId=\"$camid\"&source=$motdetsc&keep=true&_sid=\"$sid\"";
|
$url = "$proto://$serveraddr:$serverport/webapi/$apicameventpath?api=\"$apicamevent\"&version=\"$apicameventmaxver\"&method=\"MDParamSave\"&camId=\"$camid\"&source=$motdetsc&keep=true&_sid=\"$sid\"";
|
||||||
@ -4996,7 +4995,7 @@ sub SSCam_camop_parse ($) {
|
|||||||
$sendrecs{$sn}{createdTm} = $createdTm;
|
$sendrecs{$sn}{createdTm} = $createdTm;
|
||||||
$sendrecs{$sn}{fileName} = $fileName;
|
$sendrecs{$sn}{fileName} = $fileName;
|
||||||
$sendrecs{$sn}{".imageData"} = $myjson;
|
$sendrecs{$sn}{".imageData"} = $myjson;
|
||||||
Log3($name,4, "$name - Snap '$sn' added to send recording hash: ID => $sendrecs{$sn}{recid}, File => $sendrecs{$sn}{fileName}, Created => $sendrecs{$sn}{createdTm}");
|
Log3($name,4, "$name - Snap '$sn' added to send recording hash: ID => $recid, File => $fileName, Created => $createdTm");
|
||||||
|
|
||||||
# prüfen ob Recording als Email / Telegram versendet werden soll
|
# prüfen ob Recording als Email / Telegram versendet werden soll
|
||||||
SSCam_prepareSendData ($hash, $OpMode, \%sendrecs);
|
SSCam_prepareSendData ($hash, $OpMode, \%sendrecs);
|
||||||
@ -5234,7 +5233,7 @@ sub SSCam_camop_parse ($) {
|
|||||||
SSCam_refresh($hash,0,1,0); # kein Room-Refresh, SSCam-state-Event, kein SSCamSTRM-Event
|
SSCam_refresh($hash,0,1,0); # kein Room-Refresh, SSCam-state-Event, kein SSCamSTRM-Event
|
||||||
|
|
||||||
my $tac = "";
|
my $tac = "";
|
||||||
if($hash->{HELPER}{CANSENDSNAP}) {
|
if($hash->{HELPER}{CANSENDSNAP} || $hash->{HELPER}{CANTELESNAP}) {
|
||||||
$tac = SSCam_openOrgetTrans($hash); # Transaktion starten oder vorhandenen Code holen
|
$tac = SSCam_openOrgetTrans($hash); # Transaktion starten oder vorhandenen Code holen
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5362,11 +5361,12 @@ sub SSCam_camop_parse ($) {
|
|||||||
my $fileName = $data->{data}{data}[$i]{fileName};
|
my $fileName = $data->{data}{data}[$i]{fileName};
|
||||||
my $imageData = $data->{data}{data}[$i]{imageData}; # Image data of snapshot in base64 format
|
my $imageData = $data->{data}{data}[$i]{imageData}; # Image data of snapshot in base64 format
|
||||||
|
|
||||||
|
# Schnappschuss Hash zum Versand wird erstellt
|
||||||
$sendsnaps{$sn}{snapid} = $snapid;
|
$sendsnaps{$sn}{snapid} = $snapid;
|
||||||
$sendsnaps{$sn}{createdTm} = $createdTm;
|
$sendsnaps{$sn}{createdTm} = $createdTm;
|
||||||
$sendsnaps{$sn}{fileName} = $fileName;
|
$sendsnaps{$sn}{fileName} = $fileName;
|
||||||
$sendsnaps{$sn}{".imageData"} = $imageData;
|
$sendsnaps{$sn}{".imageData"} = $imageData;
|
||||||
Log3($name,4, "$name - Snap '$sn' added to send gallery hash: ID => $sendsnaps{$sn}{snapid}, File => $sendsnaps{$sn}{fileName}, Created => $sendsnaps{$sn}{createdTm}");
|
Log3($name,4, "$name - Snap '$sn' added to send gallery hash: ID => $snapid, File => $fileName, Created => $createdTm");
|
||||||
|
|
||||||
# Snaphash um die neuen Snaps ergänzen wenn existent
|
# Snaphash um die neuen Snaps ergänzen wenn existent
|
||||||
if($hash->{HELPER}{".SNAPHASH"}{$sn}) {
|
if($hash->{HELPER}{".SNAPHASH"}{$sn}) {
|
||||||
@ -5389,7 +5389,6 @@ sub SSCam_camop_parse ($) {
|
|||||||
# werden (Attr snapGalleryBoost=0)
|
# werden (Attr snapGalleryBoost=0)
|
||||||
my $i = 0;
|
my $i = 0;
|
||||||
my $sn = 0;
|
my $sn = 0;
|
||||||
my %allsnaps = (); # Schnappschuss Hash wird leer erstellt
|
|
||||||
|
|
||||||
$hash->{HELPER}{TOTALCNT} = $data->{data}{total}; # total Anzahl Schnappschüsse
|
$hash->{HELPER}{TOTALCNT} = $data->{data}{total}; # total Anzahl Schnappschüsse
|
||||||
|
|
||||||
@ -5410,18 +5409,15 @@ sub SSCam_camop_parse ($) {
|
|||||||
} else {
|
} else {
|
||||||
$createdTm = "$d[0]-$d[1]-$d[2] / $t[1]";
|
$createdTm = "$d[0]-$d[1]-$d[2] / $t[1]";
|
||||||
}
|
}
|
||||||
$allsnaps{$sn}{snapid} = $snapid;
|
$hash->{HELPER}{".SNAPHASH"}{$sn}{snapid} = $snapid;
|
||||||
$allsnaps{$sn}{createdTm} = $createdTm;
|
$hash->{HELPER}{".SNAPHASH"}{$sn}{createdTm} = $createdTm;
|
||||||
$allsnaps{$sn}{fileName} = $fileName;
|
$hash->{HELPER}{".SNAPHASH"}{$sn}{fileName} = $fileName;
|
||||||
$allsnaps{$sn}{imageData} = $imageData;
|
$hash->{HELPER}{".SNAPHASH"}{$sn}{imageData} = $imageData;
|
||||||
Log3($name,4, "$name - Snap '$sn' added to gallery hash: ID => $allsnaps{$sn}{snapid}, File => $allsnaps{$sn}{fileName}, Created => $allsnaps{$sn}{createdTm}");
|
Log3($name,4, "$name - Snap '$sn' added to gallery hash: ID => $hash->{HELPER}{\".SNAPHASH\"}{$sn}{snapid}, File => $hash->{HELPER}{\".SNAPHASH\"}{$sn}{fileName}, Created => $hash->{HELPER}{\".SNAPHASH\"}{$sn}{createdTm}");
|
||||||
$sn += 1;
|
$sn += 1;
|
||||||
$i += 1;
|
$i += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Hash der Schnapschüsse erstellen
|
|
||||||
$hash->{HELPER}{".SNAPHASH"} = \%allsnaps;
|
|
||||||
|
|
||||||
# Direktausgabe Snaphash wenn nicht gepollt wird
|
# Direktausgabe Snaphash wenn nicht gepollt wird
|
||||||
if(!AttrVal($name, "snapGalleryBoost",0)) {
|
if(!AttrVal($name, "snapGalleryBoost",0)) {
|
||||||
my $htmlCode = SSCam_composegallery($name);
|
my $htmlCode = SSCam_composegallery($name);
|
||||||
@ -5429,7 +5425,7 @@ sub SSCam_camop_parse ($) {
|
|||||||
for (my $k=1; (defined($hash->{HELPER}{CL}{$k})); $k++ ) {
|
for (my $k=1; (defined($hash->{HELPER}{CL}{$k})); $k++ ) {
|
||||||
asyncOutput($hash->{HELPER}{CL}{$k},"$htmlCode");
|
asyncOutput($hash->{HELPER}{CL}{$k},"$htmlCode");
|
||||||
}
|
}
|
||||||
delete($hash->{HELPER}{".SNAPHASH"}); # Snaphash löschen wenn nicht gepollt wird
|
delete($hash->{HELPER}{".SNAPHASH"}); # Snaphash Referenz löschen %allsnaps = ();
|
||||||
delete($hash->{HELPER}{CL});
|
delete($hash->{HELPER}{CL});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5679,19 +5675,17 @@ sub SSCam_camop_parse ($) {
|
|||||||
$userPriv = "Viewer";
|
$userPriv = "Viewer";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# "my" nicht am Anfang deklarieren, sonst wird Hash %version wieder geleert !
|
|
||||||
my %version = (
|
|
||||||
MAJOR => $data->{'data'}{'version'}{'major'},
|
|
||||||
MINOR => $data->{'data'}{'version'}{'minor'},
|
|
||||||
SMALL => $data->{'data'}{'version'}{'small'},
|
|
||||||
BUILD => $data->{'data'}{'version'}{'build'}
|
|
||||||
);
|
|
||||||
# Werte in $hash zur späteren Auswertung einfügen
|
# Werte in $hash zur späteren Auswertung einfügen
|
||||||
$hash->{HELPER}{SVSVERSION} = \%version;
|
$hash->{HELPER}{SVSVERSION}{MAJOR} = $data->{'data'}{'version'}{'major'};
|
||||||
my $major = $version{"MAJOR"};
|
$hash->{HELPER}{SVSVERSION}{MINOR} = $data->{'data'}{'version'}{'minor'};
|
||||||
my $minor = $version{"MINOR"};
|
$hash->{HELPER}{SVSVERSION}{SMALL} = $data->{'data'}{'version'}{'small'};
|
||||||
my $small = $version{"SMALL"};
|
$hash->{HELPER}{SVSVERSION}{BUILD} = $data->{'data'}{'version'}{'build'};
|
||||||
my $build = $version{"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};
|
||||||
|
|
||||||
# simulieren einer anderen SVS-Version
|
# simulieren einer anderen SVS-Version
|
||||||
if (AttrVal($name, "simu_SVSversion", undef)) {
|
if (AttrVal($name, "simu_SVSversion", undef)) {
|
||||||
@ -6152,14 +6146,12 @@ sub SSCam_camop_parse ($) {
|
|||||||
my $cnt = 0;
|
my $cnt = 0;
|
||||||
|
|
||||||
# alle Presets der Kamera mit Id's in Assoziatives Array einlesen
|
# alle Presets der Kamera mit Id's in Assoziatives Array einlesen
|
||||||
# "my" nicht am Anfang deklarieren, sonst wird Hash %allpresets wieder geleert !
|
|
||||||
my %allpresets;
|
|
||||||
my $home = "not set";
|
my $home = "not set";
|
||||||
while ($cnt < $presetcnt) {
|
while ($cnt < $presetcnt) {
|
||||||
# my $presid = $data->{'data'}->{'presets'}->[$cnt]->{'id'};
|
# my $presid = $data->{'data'}->{'presets'}->[$cnt]->{'id'};
|
||||||
my $presid = $data->{'data'}->{'presets'}->[$cnt]->{'position'};
|
my $presid = $data->{'data'}->{'presets'}->[$cnt]->{'position'};
|
||||||
my $presname = $data->{'data'}->{'presets'}->[$cnt]->{'name'};
|
my $presname = $data->{'data'}->{'presets'}->[$cnt]->{'name'};
|
||||||
$allpresets{$presname} = "$presid";
|
$hash->{HELPER}{ALLPRESETS}{$presname} = "$presid";
|
||||||
my $ptype = $data->{'data'}->{'presets'}->[$cnt]->{'type'};
|
my $ptype = $data->{'data'}->{'presets'}->[$cnt]->{'type'};
|
||||||
if ($ptype) {
|
if ($ptype) {
|
||||||
$home = $presname;
|
$home = $presname;
|
||||||
@ -6167,10 +6159,7 @@ sub SSCam_camop_parse ($) {
|
|||||||
$cnt += 1;
|
$cnt += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Presethash in $hash einfügen
|
my @preskeys = sort(keys(%{$hash->{HELPER}{ALLPRESETS}}));
|
||||||
$hash->{HELPER}{ALLPRESETS} = \%allpresets;
|
|
||||||
|
|
||||||
my @preskeys = sort(keys(%allpresets));
|
|
||||||
my $presetlist = join(",",@preskeys);
|
my $presetlist = join(",",@preskeys);
|
||||||
|
|
||||||
# Setreading
|
# Setreading
|
||||||
@ -6193,24 +6182,17 @@ sub SSCam_camop_parse ($) {
|
|||||||
my $cnt = 0;
|
my $cnt = 0;
|
||||||
|
|
||||||
# alle Patrols der Kamera mit Id's in Assoziatives Array einlesen
|
# alle Patrols der Kamera mit Id's in Assoziatives Array einlesen
|
||||||
# "my" nicht am Anfang deklarieren, sonst wird Hash %allpatrols wieder geleert !
|
delete $hash->{HELPER}{ALLPATROLS};
|
||||||
my %allpatrols = ();
|
|
||||||
while ($cnt < $patrolcnt) {
|
while ($cnt < $patrolcnt) {
|
||||||
$patrolid = $data->{'data'}->{'patrols'}->[$cnt]->{'id'};
|
$patrolid = $data->{'data'}->{'patrols'}->[$cnt]->{'id'};
|
||||||
$patrolname = $data->{'data'}->{'patrols'}->[$cnt]->{'name'};
|
$patrolname = $data->{'data'}->{'patrols'}->[$cnt]->{'name'};
|
||||||
$allpatrols{$patrolname} = $patrolid;
|
$hash->{HELPER}{ALLPATROLS}{$patrolname} = $patrolid;
|
||||||
$cnt += 1;
|
$cnt += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Presethash in $hash einfügen
|
@patrolkeys = sort(keys(%{$hash->{HELPER}{ALLPATROLS}}));
|
||||||
$hash->{HELPER}{ALLPATROLS} = \%allpatrols;
|
|
||||||
|
|
||||||
@patrolkeys = sort(keys(%allpatrols));
|
|
||||||
$patrollist = join(",",@patrolkeys);
|
$patrollist = join(",",@patrolkeys);
|
||||||
|
|
||||||
# print "ID von Tour1 ist : ". %allpatrols->{Tour1};
|
|
||||||
# print "aus Hash: ".$hash->{HELPER}{ALLPRESETS}{Tour1};
|
|
||||||
|
|
||||||
readingsBeginUpdate($hash);
|
readingsBeginUpdate($hash);
|
||||||
readingsBulkUpdate($hash,"Patrols",$patrollist);
|
readingsBulkUpdate($hash,"Patrols",$patrollist);
|
||||||
readingsBulkUpdate($hash,"Errorcode","none");
|
readingsBulkUpdate($hash,"Errorcode","none");
|
||||||
@ -7500,7 +7482,7 @@ sub SSCam_composegallery ($;$$) {
|
|||||||
my ($name,$strmdev,$model) = @_;
|
my ($name,$strmdev,$model) = @_;
|
||||||
my $hash = $defs{$name};
|
my $hash = $defs{$name};
|
||||||
my $camname = $hash->{CAMNAME};
|
my $camname = $hash->{CAMNAME};
|
||||||
my $allsnaps = $hash->{HELPER}{".SNAPHASH"}; # = \%allsnaps
|
my $allsnaps = $hash->{HELPER}{".SNAPHASH"}; # = %allsnaps
|
||||||
my $sgc = AttrVal($name,"snapGalleryColumns",3); # Anzahl der Images in einer Tabellenzeile
|
my $sgc = AttrVal($name,"snapGalleryColumns",3); # Anzahl der Images in einer Tabellenzeile
|
||||||
my $lss = ReadingsVal($name, "LastSnapTime", ""); # Zeitpunkt neueste Aufnahme
|
my $lss = ReadingsVal($name, "LastSnapTime", ""); # Zeitpunkt neueste Aufnahme
|
||||||
my $lang = AttrVal("global","language","EN"); # Systemsprache
|
my $lang = AttrVal("global","language","EN"); # Systemsprache
|
||||||
@ -7735,11 +7717,10 @@ sub SSCam_prepareSendData ($$;$) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
my %rs = %{$asref};
|
my %rs = %{$asref};
|
||||||
my $rsref = \%rs;
|
|
||||||
delete $svshash->{HELPER}{ALLSNAPREF}; # ALLSNAPREF löschen -> gemeinsamer Versand beendet
|
delete $svshash->{HELPER}{ALLSNAPREF}; # ALLSNAPREF löschen -> gemeinsamer Versand beendet
|
||||||
$hash = $svshash; # Hash durch SVS-Hash ersetzt
|
$hash = $svshash; # Hash durch SVS-Hash ersetzt
|
||||||
$name = $svshash->{NAME}; # Name des auslösenden SVS-Devices wird eingesetzt
|
$name = $svshash->{NAME}; # Name des auslösenden SVS-Devices wird eingesetzt
|
||||||
$data = $rsref; # Referenz zum summarischen Hash einsetzen
|
$data = \%rs; # Referenz zum summarischen Hash einsetzen
|
||||||
$calias = AttrVal($name,"alias",$hash->{NAME}); # Alias des SVS-Devices
|
$calias = AttrVal($name,"alias",$hash->{NAME}); # Alias des SVS-Devices
|
||||||
$hash->{HELPER}{TRANSACTION} = "multiple_ta"; # fake Transaction im SVS Device setzen
|
$hash->{HELPER}{TRANSACTION} = "multiple_ta"; # fake Transaction im SVS Device setzen
|
||||||
last; # Schleife verlassen und mit Senden weiter
|
last; # Schleife verlassen und mit Senden weiter
|
||||||
@ -8040,7 +8021,7 @@ sub SSCam_sendTelegram ($$) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
use strict "refs";
|
use strict "refs";
|
||||||
%params = (); # erstellten Versandhash löschen
|
undef %params; # erstellten Versandhash löschen
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -8748,7 +8729,6 @@ sub SSCam_sendEmailblocking($) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
use strict "refs";
|
use strict "refs";
|
||||||
%{$paref} = (); # erstellten Versandhash löschen
|
|
||||||
|
|
||||||
# Daten müssen als Einzeiler zurückgegeben werden
|
# Daten müssen als Einzeiler zurückgegeben werden
|
||||||
$ret = encode_base64($ret,"");
|
$ret = encode_base64($ret,"");
|
||||||
@ -8894,12 +8874,12 @@ sub SSCam_setVersionInfo($) {
|
|||||||
if($modules{$type}{META}{x_prereqs_src} && !$hash->{HELPER}{MODMETAABSENT}) {
|
if($modules{$type}{META}{x_prereqs_src} && !$hash->{HELPER}{MODMETAABSENT}) {
|
||||||
# META-Daten sind vorhanden
|
# META-Daten sind vorhanden
|
||||||
$modules{$type}{META}{version} = "v".$v; # Version aus META.json überschreiben, Anzeige mit {Dumper $modules{SMAPortal}{META}}
|
$modules{$type}{META}{version} = "v".$v; # Version aus META.json überschreiben, Anzeige mit {Dumper $modules{SMAPortal}{META}}
|
||||||
if($modules{$type}{META}{x_version}) { # {x_version} ( nur gesetzt wenn $Id: 49_SSCam.pm 19124 2019-04-06 09:28:20Z DS_Starter $ im Kopf komplett! vorhanden )
|
if($modules{$type}{META}{x_version}) { # {x_version} ( nur gesetzt wenn $Id: 49_SSCam.pm 19145 2019-04-07 19:46:23Z DS_Starter $ im Kopf komplett! vorhanden )
|
||||||
$modules{$type}{META}{x_version} =~ s/1.1.1/$v/g;
|
$modules{$type}{META}{x_version} =~ s/1.1.1/$v/g;
|
||||||
} else {
|
} else {
|
||||||
$modules{$type}{META}{x_version} = $v;
|
$modules{$type}{META}{x_version} = $v;
|
||||||
}
|
}
|
||||||
return $@ unless (FHEM::Meta::SetInternals($hash)); # FVERSION wird gesetzt ( nur gesetzt wenn $Id: 49_SSCam.pm 19124 2019-04-06 09:28:20Z DS_Starter $ im Kopf komplett! vorhanden )
|
return $@ unless (FHEM::Meta::SetInternals($hash)); # FVERSION wird gesetzt ( nur gesetzt wenn $Id: 49_SSCam.pm 19145 2019-04-07 19:46:23Z DS_Starter $ im Kopf komplett! vorhanden )
|
||||||
if(__PACKAGE__ eq "FHEM::$type" || __PACKAGE__ eq $type) {
|
if(__PACKAGE__ eq "FHEM::$type" || __PACKAGE__ eq $type) {
|
||||||
# es wird mit Packages gearbeitet -> Perl übliche Modulversion setzen
|
# es wird mit Packages gearbeitet -> Perl übliche Modulversion setzen
|
||||||
# mit {<Modul>->VERSION()} im FHEMWEB kann Modulversion abgefragt werden
|
# mit {<Modul>->VERSION()} im FHEMWEB kann Modulversion abgefragt werden
|
||||||
@ -12655,6 +12635,16 @@ attr <name> genericStrmHtmlTag <img $HTMLATTR
|
|||||||
"x_wiki": {
|
"x_wiki": {
|
||||||
"web": "https://wiki.fhem.de/wiki/SSCAM_-_Steuerung_von_Kameras_in_Synology_Surveillance_Station",
|
"web": "https://wiki.fhem.de/wiki/SSCAM_-_Steuerung_von_Kameras_in_Synology_Surveillance_Station",
|
||||||
"title": "SSCAM - Steuerung von Kameras in Synology Surveillance Station"
|
"title": "SSCAM - Steuerung von Kameras in Synology Surveillance Station"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"x_dev": {
|
||||||
|
"type": "svn",
|
||||||
|
"url": "https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter",
|
||||||
|
"web": "https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter/49_SSCam.pm",
|
||||||
|
"x_branch": "dev",
|
||||||
|
"x_filepath": "fhem/contrib/",
|
||||||
|
"x_raw": "https://svn.fhem.de/fhem/trunk/fhem/contrib/DS_Starter/49_SSCam.pm"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user