mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-10 03:06:37 +00:00
49_SSCam: 8.5.0, SVS device has "snapCams" command
git-svn-id: https://svn.fhem.de/fhem/trunk@18304 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
2cb83def14
commit
125a727712
@ -1,5 +1,8 @@
|
||||
# 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.
|
||||
- feature: 49_SSCam: 8.5.0, SVS device has "snapCams" command to take
|
||||
snapshots of all cameras and optionally send them
|
||||
alltogether by Email
|
||||
- change: 59_Weather: Codestyle, add attribut model to API
|
||||
- bugfix: 73_AutoShuttersControl: fix drive up then roommate asleep
|
||||
- bugfix: DarkSkyAPI: fix uninitialized value in localtime at line 430
|
||||
|
@ -47,8 +47,9 @@ use Encode;
|
||||
|
||||
# Versions History intern
|
||||
our %SSCam_vNotesIntern = (
|
||||
"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 ",
|
||||
"8.4.4" => "14.01.2019 change: generate event of every snapfile,id etc. if snap was called with arguments, Forum:#45671 #msg887484 ",
|
||||
"8.4.3" => "11.01.2019 fix blocking Active-Token if snap was done with arguments and snapEmailTxt not set, Forum:#45671 #msg885475 ",
|
||||
"8.4.2" => "10.01.2019 snapEmailTxt can use placeholders \$DATE, \$TIME ",
|
||||
"8.4.1" => "09.01.2019 Transaction of snap and getsnapinfo implemented, debugactive token verbose level changed ",
|
||||
@ -117,6 +118,8 @@ our %SSCam_vNotesIntern = (
|
||||
|
||||
# Versions History extern
|
||||
our %SSCam_vNotesExtern = (
|
||||
"8.5.0" => "17.01.2019 SVS device has \"snapCams\" command. Now are able to take snapshots of all defined cameras and may ".
|
||||
"optionally send them alltogether by Email.",
|
||||
"8.4.0" => "07.01.2019 Command snap is extended to syntax \"snap [number] [lag] [snapEmailTxt:\"subject => <Betreff-Text>, body => ".
|
||||
"<Mitteilung-Text>\"]\". Now you are able to trigger several number of ".
|
||||
"snapshots by only one snap-command. The triggered snapshots can be shipped alltogether with the internal email client. ",
|
||||
@ -214,42 +217,6 @@ our %SSCam_vNotesExtern = (
|
||||
"1.0.0" => "12.12.2015 initial, changed completly to HttpUtils_NonblockingGet "
|
||||
);
|
||||
|
||||
# Hint Hash en
|
||||
our %SSCam_vHintsExt_en = (
|
||||
"6" => "There are some Icons in directory www/images/sscam available for SSCam. Thereby the system can use the icons please do: <br>".
|
||||
"- in FHEMWEB device attribute <b>iconPath</b> complete with \"sscam\", e.g.: attr WEB iconPath default:fhemSVG:openautomation:sscam <br>".
|
||||
"After that execute \"rereadicons\" or restart FHEM. ",
|
||||
"5" => "Find more Informations about manage users and the appropriate privilege profiles in ".
|
||||
"<a href=\"https://www.synology.com/en-global/knowledgebase/Surveillance/help/SurveillanceStation/user\">Surveillance Station online help</a> ",
|
||||
"4" => "The message Meldung \"WARNING - The current/simulated SVS-version ... may be incompatible with SSCam version...\" means that ".
|
||||
"the used SSCam version was currently not tested with the installed version of Synology Surveillance Station (Reading \"SVSversion\"). ".
|
||||
"The compatible SVS-Version is printed out in the Internal COMPATIBILITY.\n".
|
||||
"<b>Actions:</b> At first please update your SSCam version. If the message does appear furthermore, please inform the SSCam Maintainer. ".
|
||||
"To ignore this message temporary, you may reduce the verbose level of your SSCam device. ",
|
||||
"3" => "Link to SSCam <a href=\"https://fhem.de/commandref.html#SSCam\">english commandRef</a> ",
|
||||
"2" => "You can create own PTZ-control icons with a template available in SVN which can be downloaded here: <a href=\"https://svn.fhem.de/trac/browser/trunk/fhem/contrib/sscam\">contrib/sscam/black_btn_CAM_Template.pdn</a>.\n".
|
||||
"This template can be edited with Paint.Net for example. ",
|
||||
"1" => "Some helpful <a href=\"https://wiki.fhem.de/wiki/SSCAM_-_Steuerung_von_Kameras_in_Synology_Surveillance_Station\">FHEM-Wiki</a> notes"
|
||||
);
|
||||
|
||||
# Hint Hash de
|
||||
our %SSCam_vHintsExt_de = (
|
||||
"6" => "Für SSCam wird ein Satz Icons im Verzeichnis www/images/sscam zur Verfügung gestellt. Damit das System sie findet bitte setzen: <br>".
|
||||
"- im FHEMWEB Device Attribut <b>iconPath</b> um \"sscam\" ergänzen, z.B.: attr WEB iconPath default:fhemSVG:openautomation:sscam <br>".
|
||||
"Danach ein \"rereadicons\" bzw. einen FHEM restart ausführen. ",
|
||||
"5" => "Informationen zum Management von Usern und entsprechenden Rechte-Profilen sind in der ".
|
||||
"<a href=\"https://www.synology.com/de-de/knowledgebase/Surveillance/help/SurveillanceStation/user\">Surveillance Station Online-Hilfe</a> zu finden.",
|
||||
"4" => "Die Meldung \"WARNING - The current/simulated SVS-version ... may be incompatible with SSCam version...\" ist ein Hinweis darauf, dass ".
|
||||
"die eingesetzte SSCam Version noch nicht mit der verwendeten Version von Synology Surveillance Station (Reading \"SVSversion\") getestet ".
|
||||
"wurde. Die kompatible SVS-Version ist im Internal COMPATIBILITY ersichtlich.\n".
|
||||
"<b>Maßnahmen:</b> Bitte SSCam zunächst updaten. Sollte die Meldung weiterhin auftreten, bitte den SSCam Maintainer informieren. Zur ".
|
||||
"vorübergehenden Ignorierung kann der verbose Level des SSCam-Devices entsprechend reduziert werden. ",
|
||||
"3" => "Link zur deutschen SSCam <a href=\"https://fhem.de/commandref_DE.html#SSCam\">commandRef</a> ",
|
||||
"2" => "Zur Erstellung eigener PTZ-Steuericons gibt es eine Vorlage im SVN die hier <a href=\"https://svn.fhem.de/trac/browser/trunk/fhem/contrib/sscam\">contrib/sscam/black_btn_CAM_Template.pdn</a> heruntergeladen werden kann.\n".
|
||||
"Diese Vorlage kann zum Beispiel mit Paint.Net bearbeitet werden. ",
|
||||
"1" => "Hilfreiche Hinweise zu SSCam im <a href=\"https://wiki.fhem.de/wiki/SSCAM_-_Steuerung_von_Kameras_in_Synology_Surveillance_Station\">FHEM-Wiki</a>"
|
||||
);
|
||||
|
||||
# getestete SVS-Version
|
||||
my $compstat = "8.2";
|
||||
|
||||
@ -333,7 +300,7 @@ our %SSCam_ttips_de = (
|
||||
ttlsnaprun => "Wiedergabe des letzten Schnappschusses von Kamera "§NAME§".",
|
||||
);
|
||||
|
||||
# Standardvariablen
|
||||
# Standardvariablen und Forward-Deklaration
|
||||
my $SSCam_slim = 3; # default Anzahl der abzurufenden Schnappschüsse mit snapGallery
|
||||
my $SSCAM_snum = "1,2,3,4,5,6,7,8,9,10"; # mögliche Anzahl der abzurufenden Schnappschüsse mit snapGallery
|
||||
|
||||
@ -343,6 +310,9 @@ use vars qw($FW_room); # currently selected room
|
||||
use vars qw($FW_detail); # currently selected device for detail view
|
||||
use vars qw($FW_wname); # Web instance
|
||||
sub FW_pH(@); # add href
|
||||
use vars qw(%SSCam_vHintsExt_en);
|
||||
use vars qw(%SSCam_vHintsExt_de);
|
||||
|
||||
|
||||
################################################################
|
||||
sub SSCam_Initialize($) {
|
||||
@ -718,14 +688,14 @@ sub SSCam_Set($@) {
|
||||
"motdetsc:disable,camera,SVS ".
|
||||
"snap ".
|
||||
(AttrVal($name, "snapGalleryBoost",0)?(AttrVal($name,"snapGalleryNumber",undef) || AttrVal($name,"snapGalleryBoost",0))?"snapGallery:noArg ":"snapGallery:$SSCAM_snum ":" ").
|
||||
"createSnapGallery:noArg ".
|
||||
"createReadingsGroup ".
|
||||
"createSnapGallery:noArg ".
|
||||
"createStreamDev:generic,hls,mjpeg,switched ".
|
||||
((ReadingsVal("$name", "CapPTZPan", "false") ne "false") ? "createPTZcontrol:noArg ": "").
|
||||
"enable:noArg ".
|
||||
"disable:noArg ".
|
||||
"optimizeParams ".
|
||||
((ReadingsVal("$name", "CapPIR", "false") ne "false") ? "pirSensor:activate,deactivate ": "").
|
||||
"createReadingsGroup ".
|
||||
"runView:live_fw".$hlslfw."live_link,live_open,lastrec_fw,lastrec_fw_MJPEG,lastrec_fw_MPEG4/H.264,lastrec_open,lastsnap_fw ".
|
||||
((ReadingsVal("$name", "CapPTZPan", "false") ne "false") ? "setPreset ": "").
|
||||
((ReadingsVal("$name", "CapPTZPan", "false") ne "false") ? "setHome:---currentPosition---,".ReadingsVal("$name","Presets","")." " : "").
|
||||
@ -742,9 +712,11 @@ sub SSCam_Set($@) {
|
||||
$setlist = "Unknown argument $opt, choose one of ".
|
||||
"autocreateCams:noArg ".
|
||||
"credentials ".
|
||||
"smtpcredentials ".
|
||||
"createReadingsGroup ".
|
||||
"extevent:1,2,3,4,5,6,7,8,9,10 ".
|
||||
($hash->{HELPER}{APIHMMAXVER}?"homeMode:on,off ": "");
|
||||
($hash->{HELPER}{APIHMMAXVER}?"homeMode:on,off ": "").
|
||||
"snapCams ";
|
||||
}
|
||||
|
||||
if ($opt eq "credentials") {
|
||||
@ -796,14 +768,15 @@ sub SSCam_Set($@) {
|
||||
|
||||
my ($num,$lag,$ncount) = (1,2,1);
|
||||
my $emtxt = "";
|
||||
if($prop && $prop =~ /[\d+]/) { # Anzahl der Schnappschüsse zu triggern (default: 1)
|
||||
if($prop && $prop =~ /^\d+$/) { # Anzahl der Schnappschüsse zu triggern (default: 1)
|
||||
$num = $prop;
|
||||
$ncount = $prop;
|
||||
}
|
||||
if($prop1 && $prop1 =~ /[\d+]/) { # Zeit zwischen zwei Schnappschüssen (default: 2 Sekunden)
|
||||
if($prop1 && $prop1 =~ /^\d+$/) { # Zeit zwischen zwei Schnappschüssen (default: 2 Sekunden)
|
||||
$lag = $prop1;
|
||||
}
|
||||
|
||||
Log3($name, 4, "$name - Trigger snapshots - Number: $num, Lag: $lag");
|
||||
$hash->{HELPER}{SNAPBYSTRMDEV} = 1 if ($prop2 && $prop2 =~ /STRM/); # $prop wird mitgegeben durch Snap by SSCamSTRM-Device
|
||||
|
||||
my $at = join(" ",@a);
|
||||
@ -819,6 +792,62 @@ sub SSCam_Set($@) {
|
||||
}
|
||||
SSCam_camsnap("$name:$num:$lag:$ncount:$emtxt");
|
||||
|
||||
} elsif ($opt eq "snapCams" && !SSCam_IsModelCam($hash)) {
|
||||
if (!$hash->{CREDENTIALS}) {return "Credentials of $name are not set - make sure you've set it with \"set $name credentials username password\"";}
|
||||
|
||||
my ($num,$lag,$ncount) = (1,2,1);
|
||||
my $cams = "all";
|
||||
my $emtxt = '';
|
||||
if($prop && $prop =~ /^\d+$/) { # Anzahl der Schnappschüsse zu triggern (default: 1)
|
||||
$num = $prop;
|
||||
$ncount = $prop;
|
||||
}
|
||||
if($prop1 && $prop1 =~ /^\d+$/) { # Zeit zwischen zwei Schnappschüssen (default: 2 Sekunden)
|
||||
$lag = $prop1;
|
||||
}
|
||||
|
||||
my $at = join(" ",@a);
|
||||
if($at =~ /CAM:/i) {
|
||||
$at =~ m/.*CAM:"(.*)".*/i;
|
||||
$cams = $1;
|
||||
$cams =~ s/\s//g;
|
||||
}
|
||||
|
||||
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
|
||||
@camdvs = devspec2array("TYPE=SSCam:FILTER=MODEL!=SVS");
|
||||
foreach (@camdvs) {
|
||||
if($defs{$_} && !IsDisabled($_)) {
|
||||
$snapac{$_} = "";
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@camdvs = split(",",$cams);
|
||||
foreach (@camdvs) {
|
||||
if($defs{$_} && !IsDisabled($_)) {
|
||||
$snapac{$_} = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return "No valid camera devices are specified for trigger snapshots" if(!%snapac);
|
||||
|
||||
my $asref = \%snapac;
|
||||
$hash->{HELPER}{ALLSNAPREF} = $asref;
|
||||
my ($csnap,$cmail) = ("","");
|
||||
foreach my $key (keys%{$asref}) {
|
||||
if(!AttrVal($key, "snapEmailTxt", "")) {
|
||||
delete $asref->{$key}; # Snap dieser Kamera auslösen aber nicht senden
|
||||
$csnap .= $csnap?", $key":$key;
|
||||
} else {
|
||||
$cmail .= $cmail?", $key":$key;
|
||||
}
|
||||
SSCam_camsnap("$key:$num:$lag:$ncount:$emtxt");
|
||||
}
|
||||
Log3($name, 4, "$name - Trigger snapshots by SVS - Number: $num, Lag: $lag, Snap only: \"$csnap\", Snap and send: \"$cmail\" ");
|
||||
|
||||
|
||||
} elsif ($opt eq "startTracking" && SSCam_IsModelCam($hash)) {
|
||||
if (!$hash->{CREDENTIALS}) {return "Credentials of $name are not set - make sure you've set it with \"set $name credentials username password\"";}
|
||||
if ($hash->{HELPER}{APIPTZMAXVER} < 5) {return "Function \"$opt\" needs a higher version of Surveillance Station";}
|
||||
@ -5004,7 +5033,7 @@ sub SSCam_camop_parse ($) {
|
||||
##### eine Schnapschussgalerie soll angezeigt oder als Bulk versendet werden #####
|
||||
if($OpMode eq "getsnapgallery") {
|
||||
if($hash->{HELPER}{CANSENDSNAP}) {
|
||||
# es sollen Schnappschüsse versendet werden
|
||||
# es sollen die Anzahl "$hash->{HELPER}{SNAPNUM}" Schnappschüsse versendet werden
|
||||
my $i = 0;
|
||||
my $sn = 0;
|
||||
my %sendsnaps = (); # Schnappschuss Hash zum Versand wird leer erstellt
|
||||
@ -5023,18 +5052,16 @@ sub SSCam_camop_parse ($) {
|
||||
my @t = split(" ", FmtDateTime($createdTm));
|
||||
my @d = split("-", $t[0]);
|
||||
$createdTm = "$d[2].$d[1].$d[0] / $t[1]";
|
||||
$sendsnaps{$sn}{createdTm} = $createdTm;
|
||||
$sendsnaps{$sn}{fileName} = $fileName;
|
||||
$sendsnaps{$sn}{imageData} = $imageData;
|
||||
$sendsnaps{$sn}{createdTm} = $createdTm;
|
||||
$sendsnaps{$sn}{fileName} = $fileName;
|
||||
$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}");
|
||||
$sn += 1;
|
||||
$i += 1;
|
||||
}
|
||||
|
||||
# Schnappschuß soll als Email versendet werden
|
||||
if(AttrVal($name, "snapEmailTxt", "")) {
|
||||
SSCam_prepareSendEmail ($hash, $OpMode, \%sendsnaps);
|
||||
}
|
||||
# prüfen ob Schnappschuß als Email versendet werden soll
|
||||
SSCam_prepareSendEmail ($hash, $OpMode, \%sendsnaps);
|
||||
|
||||
} else {
|
||||
# es soll eine Schnappschußgalerie bereitgestellt (Attr snapGalleryBoost=1) bzw. gleich angezeigt
|
||||
@ -6269,7 +6296,7 @@ return($m);
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# JSON Boolean Test und Mapping
|
||||
# JSON Boolean Test und Mapping
|
||||
###############################################################################
|
||||
sub SSCam_jboolmap($){
|
||||
my ($bool)= @_;
|
||||
@ -6282,7 +6309,7 @@ return $bool;
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# Schnappschußgalerie abrufen (snapGalleryBoost) o. nur Info des letzten Snaps
|
||||
# Ermittlung Anzahl und Größe der abzurufenden Schnappschußdaten
|
||||
###############################################################################
|
||||
sub SSCam_snaplimsize ($) {
|
||||
my ($hash)= @_;
|
||||
@ -7208,74 +7235,112 @@ return ($error);
|
||||
sub SSCam_prepareSendEmail ($$;$) {
|
||||
my ($hash, $OpMode, $data) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
my $calias = AttrVal($name,"alias",$hash->{CAMNAME}); # Alias der Kamera wenn gesetzt oder Originalname aus SVS
|
||||
my ($ret,$sdat,$fname,$snapid,$lsnaptime) = ('','','','','');
|
||||
my $snapnum = 1;
|
||||
my $calias = AttrVal($name,"alias",$hash->{CAMNAME}); # Alias der Kamera wenn gesetzt oder Originalname aus SVS
|
||||
my ($ret,$sdat,$fname,$snapid,$lsnaptime,$tac) = ('','','','','','');
|
||||
|
||||
my $sp = AttrVal($name, "smtpPort", 25);
|
||||
my $nousessl = AttrVal($name, "smtpNoUseSSL", 0);
|
||||
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime;
|
||||
my $date = sprintf "%02d.%02d.%04d" , $mday , $mon+=1 ,$year+=1900;
|
||||
my $time = sprintf "%02d:%02d:%02d" , $hour , $min , $sec;
|
||||
|
||||
# Extraktion EMail-Texte
|
||||
# Attribut snapEmailTxt kann übersteuert werden mit: $hash->{HELPER}{SMTPMSG}
|
||||
# Format in $hash->{HELPER}{SMTPMSG} muss sein: subject => <Betreff-Text>, body => <Mitteilung-Text>
|
||||
my $mth = delete $hash->{HELPER}{SMTPMSG};
|
||||
my $mt = $mth?$mth:AttrVal($name, "snapEmailTxt", "");
|
||||
$mt =~ s/['"]//g;
|
||||
|
||||
my($subj,$body) = split(",", $mt, 2);
|
||||
my($subjk,$subjt) = split("=>", $subj);
|
||||
my($bodyk,$bodyt) = split("=>", $body);
|
||||
$subjk = SSCam_trim($subjk);
|
||||
$subjt = SSCam_trim($subjt);
|
||||
$subjt =~ s/\$CAM/$calias/g;
|
||||
$subjt =~ s/\$DATE/$date/g;
|
||||
$subjt =~ s/\$TIME/$time/g;
|
||||
$bodyk = SSCam_trim($bodyk);
|
||||
$bodyt = SSCam_trim($bodyt);
|
||||
$bodyt =~ s/\$CAM/$calias/g;
|
||||
$bodyt =~ s/\$DATE/$date/g;
|
||||
$bodyt =~ s/\$TIME/$time/g;
|
||||
my %smtpmsg = ();
|
||||
$smtpmsg{$subjk} = "$subjt";
|
||||
$smtpmsg{$bodyk} = "$bodyt";
|
||||
|
||||
my $sslfrominit = 0;
|
||||
my $smtpsslport = 465;
|
||||
if(AttrVal($name,"smtpSSLPort",0)) {
|
||||
$sslfrominit = 1;
|
||||
$smtpsslport = AttrVal($name,"smtpSSLPort",0);
|
||||
### prüfen ob Schnappschnüsse aller Kameras durch ein SVS-Device angefordert wurde,
|
||||
### Bilddaten werden erst zum Versand weitergeleitet wenn Schnappshußhash komplett gefüllt ist
|
||||
my $asref;
|
||||
my @allsvs = devspec2array("TYPE=SSCam:FILTER=MODEL=SVS");
|
||||
foreach (@allsvs) {
|
||||
next if(!AttrVal($_, "snapEmailTxt", "")); # Schnappschüsse senden NICHT durch SVS ausgelöst -> Snaps der Cams NICHT gemeinsam versenden
|
||||
my $svshash = $defs{$_};
|
||||
if($svshash->{HELPER}{ALLSNAPREF}) {
|
||||
$asref = $svshash->{HELPER}{ALLSNAPREF}; # Hashreferenz zum summarischen Snaphash
|
||||
foreach my $key (keys%{$asref}) {
|
||||
if($key eq $name) { # Kamera Key im Bildhash matcht -> Bilddaten übernehmen
|
||||
foreach my $pkey (keys%{$data}) {
|
||||
my $nkey = time()+int(rand(1000));
|
||||
$asref->{$nkey.$pkey}{createdTm} = $data->{$pkey}{createdTm}; # Aufnahmezeit der Kamera werden im summarischen Snaphash eingefügt
|
||||
$asref->{$nkey.$pkey}{".imageData"} = $data->{$pkey}{".imageData"}; # Bilddaten der Kamera werden im summarischen Snaphash eingefügt
|
||||
$asref->{$nkey.$pkey}{fileName} = $data->{$pkey}{fileName}; # Filenamen der Kamera werden im summarischen Snaphash eingefügt
|
||||
}
|
||||
delete $hash->{HELPER}{CANSENDSNAP};
|
||||
delete $asref->{$key}; # ursprünglichen Key (Kameranamen) löschen
|
||||
}
|
||||
}
|
||||
$asref = $svshash->{HELPER}{ALLSNAPREF}; # Hashreferenz zum summarischen Snaphash
|
||||
foreach my $key (keys%{$asref}) { # prüfen ob Bildhash komplett ?
|
||||
if(!$asref->{$key}) {
|
||||
return; # Bildhash noch nicht komplett
|
||||
}
|
||||
}
|
||||
my %rs = %{$asref};
|
||||
my $rsref = \%rs;
|
||||
delete $svshash->{HELPER}{ALLSNAPREF}; # ALLSNAPREF löschen -> gemeinsamer Versand beendet
|
||||
$hash = $svshash; # Hash durch SVS-Hash ersetzt
|
||||
$name = $svshash->{NAME}; # Name des auslösenden SVS-Devices wird eingesetzt
|
||||
$data = $rsref; # Referenz zum summarischen Hash einsetzen
|
||||
$calias = AttrVal($name,"alias",$hash->{NAME}); # Alias des SVS-Devices
|
||||
$hash->{HELPER}{TRANSACTION} = "multiple_ta"; # fake Transaction im SVS Device setzen
|
||||
last; # Schleife verlassen und mit Senden weiter
|
||||
}
|
||||
}
|
||||
|
||||
my $tac = $hash->{HELPER}{TRANSACTION}; # Code der laufenden Transaktion
|
||||
### Bilddaten als Email versenden wenn Attribut "snapEmailTxt" definiert ist
|
||||
if(AttrVal($name, "snapEmailTxt", "")) {
|
||||
my $sp = AttrVal($name, "smtpPort", 25);
|
||||
my $nousessl = AttrVal($name, "smtpNoUseSSL", 0);
|
||||
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime;
|
||||
my $date = sprintf "%02d.%02d.%04d" , $mday , $mon+=1 ,$year+=1900;
|
||||
my $time = sprintf "%02d:%02d:%02d" , $hour , $min , $sec;
|
||||
|
||||
if($OpMode =~ /^getsnap/) {
|
||||
$fname = ReadingsVal($name,"LastSnapFilename","");
|
||||
$snapid = ReadingsVal($name,"LastSnapId","");
|
||||
$lsnaptime = ReadingsVal($name,"LastSnapTime","");
|
||||
$sdat = $data;
|
||||
delete $hash->{HELPER}{CANSENDSNAP};
|
||||
delete $hash->{HELPER}{SMTPMSG};
|
||||
# Extraktion EMail-Texte
|
||||
# Attribut snapEmailTxt kann übersteuert werden mit: $hash->{HELPER}{SMTPMSG}
|
||||
# Format in $hash->{HELPER}{SMTPMSG} muss sein: subject => <Betreff-Text>, body => <Mitteilung-Text>
|
||||
my $mth = delete $hash->{HELPER}{SMTPMSG};
|
||||
my $mt = $mth?$mth:AttrVal($name, "snapEmailTxt", "");
|
||||
$mt =~ s/['"]//g;
|
||||
|
||||
$ret = SSCam_sendEmail($hash, {'subject' => $smtpmsg{subject},
|
||||
'part1txt' => $smtpmsg{body},
|
||||
'part2type' => 'image/jpeg',
|
||||
'fname' => $fname,
|
||||
'smtpport' => $sp,
|
||||
'sdat' => $sdat,
|
||||
'lsnaptime' => $lsnaptime,
|
||||
'opmode' => $OpMode,
|
||||
'smtpnousessl' => $nousessl,
|
||||
'sslfrominit' => $sslfrominit,
|
||||
'smtpsslport' => $smtpsslport,
|
||||
'tac' => $tac,
|
||||
}
|
||||
);
|
||||
my($subj,$body) = split(",", $mt, 2);
|
||||
my($subjk,$subjt) = split("=>", $subj);
|
||||
my($bodyk,$bodyt) = split("=>", $body);
|
||||
$subjk = SSCam_trim($subjk);
|
||||
$subjt = SSCam_trim($subjt);
|
||||
$subjt =~ s/\$CAM/$calias/g;
|
||||
$subjt =~ s/\$DATE/$date/g;
|
||||
$subjt =~ s/\$TIME/$time/g;
|
||||
$bodyk = SSCam_trim($bodyk);
|
||||
$bodyt = SSCam_trim($bodyt);
|
||||
$bodyt =~ s/\$CAM/$calias/g;
|
||||
$bodyt =~ s/\$DATE/$date/g;
|
||||
$bodyt =~ s/\$TIME/$time/g;
|
||||
my %smtpmsg = ();
|
||||
$smtpmsg{$subjk} = "$subjt";
|
||||
$smtpmsg{$bodyk} = "$bodyt";
|
||||
|
||||
my $sslfrominit = 0;
|
||||
my $smtpsslport = 465;
|
||||
if(AttrVal($name,"smtpSSLPort",0)) {
|
||||
$sslfrominit = 1;
|
||||
$smtpsslport = AttrVal($name,"smtpSSLPort",0);
|
||||
}
|
||||
|
||||
$tac = $hash->{HELPER}{TRANSACTION}; # Code der laufenden Transaktion
|
||||
|
||||
if($OpMode =~ /^getsnap/) {
|
||||
$sdat = $data;
|
||||
delete $hash->{HELPER}{CANSENDSNAP};
|
||||
delete $hash->{HELPER}{SMTPMSG};
|
||||
|
||||
$ret = SSCam_sendEmail($hash, {'subject' => $smtpmsg{subject},
|
||||
'part1txt' => $smtpmsg{body},
|
||||
'part2type' => 'image/jpeg',
|
||||
'smtpport' => $sp,
|
||||
'sdat' => $sdat,
|
||||
'opmode' => $OpMode,
|
||||
'smtpnousessl' => $nousessl,
|
||||
'sslfrominit' => $sslfrominit,
|
||||
'smtpsslport' => $smtpsslport,
|
||||
'tac' => $tac,
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
return $ret;
|
||||
return;
|
||||
}
|
||||
|
||||
#############################################################################################
|
||||
@ -7351,7 +7416,7 @@ sub SSCam_sendEmail ($$) {
|
||||
'sdat' => { 'default'=>'', 'required'=>0, 'set'=>1}, # (Hash)Daten base64 codiert, wenn gesetzt muss 'part2' auf 'image/jpeg' gesetzt werden
|
||||
'image' => { 'default'=>'', 'required'=>0, 'set'=>1}, # Daten als File, wenn gesetzt muss 'part2' auf 'image/jpeg' gesetzt werden
|
||||
'fname' => { 'default'=>'image.jpg', 'required'=>0, 'set'=>1}, # Filename für "image" oder "sdat"
|
||||
'lsnaptime' => { 'default'=>'', 'required'=>0, 'set'=>1}, # Zeitstempel des letzten Schnappschusses
|
||||
'lsnaptime' => { 'default'=>'', 'required'=>0, 'set'=>1}, # Zeitstempel der Bilddaten
|
||||
'opmode' => { 'default'=>'', 'required'=>1, 'set'=>1}, # OpMode muss gesetzt sein
|
||||
'sslfb' => { 'default'=>$sslfb, 'required'=>0, 'set'=>1}, # Flag für Verwendung altes Net::SMTP::SSL
|
||||
'sslfrominit' => { 'default'=>'', 'required'=>0, 'set'=>1}, # SSL soll sofort ! aufgebaut werden
|
||||
@ -7410,9 +7475,9 @@ sub SSCam_sendEmailblocking($) {
|
||||
my $to = $paref->{smtpTo};
|
||||
my $msgtext = $paref->{msgtext};
|
||||
my $smtpdebug = $paref->{smtpdebug};
|
||||
my $sdat = $paref->{sdat}; # Image Daten als Hash base64 codiert
|
||||
my $sdat = $paref->{sdat}; # Hash von Imagedaten base64 codiert
|
||||
my $image = $paref->{image}; # Image, wenn gesetzt muss 'part2' auf 'image/jpeg' gesetzt sein
|
||||
my $fname = $paref->{fname}; # Filename von "image"
|
||||
my $fname = $paref->{fname}; # Filename -> verwendet wenn $image ist gesetzt
|
||||
my $lsnaptime = $paref->{lsnaptime}; # Zeit des letzten Schnappschusses wenn gesetzt
|
||||
my $opmode = $paref->{opmode}; # aktueller Operation Mode
|
||||
my $sslfb = $paref->{sslfb}; # Flag für Verwendung altes Net::SMTP::SSL
|
||||
@ -7466,7 +7531,7 @@ sub SSCam_sendEmailblocking($) {
|
||||
@as = sort{$a<=>$b}keys%{$sdat};
|
||||
foreach my $key (@as) {
|
||||
$ct = $sdat->{$key}{createdTm};
|
||||
$img = $sdat->{$key}{imageData};
|
||||
$img = $sdat->{$key}{".imageData"};
|
||||
$fname = $sdat->{$key}{fileName};
|
||||
$fh = '$fh'.$key;
|
||||
$decoded = MIME::Base64::decode_base64($img);
|
||||
@ -7741,6 +7806,124 @@ sub SSCam_trim ($) {
|
||||
return ($str);
|
||||
}
|
||||
|
||||
#############################################################################################
|
||||
# Hint Hash EN
|
||||
#############################################################################################
|
||||
%SSCam_vHintsExt_en = (
|
||||
"7" => "<b>Setup Email Shipping <br>".
|
||||
"==================== </b> <br><br>".
|
||||
"Snapshots can be sent by <b>Email</b> alltogether after creation. For this purpose the module contains<br>".
|
||||
"its own Email client.<br>".
|
||||
"Before you can use this function you have to install the Perl-module <b>MIME::Lite</b>. On debian systems it can be ".
|
||||
"installed with command:".
|
||||
"<ul>".
|
||||
"<b>sudo apt-get install libmime-lite-perl</b>".
|
||||
"</ul>".
|
||||
"There are some attributes must be set or can be used optionally.<br>".
|
||||
"At first the Credentials for access the Email outgoing server must be set by command <b>\"set <name> smtpcredentials <user> <password>\"</b><br>".
|
||||
"The connection to the server is initially established unencrypted and switches to an encrypted connection if SSL<br>".
|
||||
"encryption is available. In that case the transmission of User/Password takes place encrypted too.<br>".
|
||||
"If attribute \"smtpSSLPort\" is defined, the established connection to the Email server will be encrypted immediately.<br><br>".
|
||||
"Attributes which are optional are marked: <br><br>".
|
||||
"<ul>".
|
||||
"<li><b>snapEmailTxt</b> - <b>Activates the Email shipping.</b> This attribute has the format: <br>".
|
||||
"<ul><b>subject => <subject text>, body => <message text></b></ul>".
|
||||
"The placeholder \$CAM, \$DATE and \$TIME can be used. <br>".
|
||||
"\$CAM is replaced by the device name, device alias or the name of camera in SVS if alias is not defined.<br>".
|
||||
"\$DATE and \$TIME are replaced with the current date and time.</li>".
|
||||
"<li><b>smtpHost</b> - Hostname or IP-address of outgoing Email server (e.g. securesmtp.t-online.de)</li>".
|
||||
"<li><b>smtpFrom</b> - Return address (<name>@<domain>)</li>".
|
||||
"<li><b>smtpTo</b> - Receiving address(es) (<name>@<domain>)</li>".
|
||||
"<li><b>smtpPort</b> - (optional) Port of outgoing Email server (default: 25)</li>".
|
||||
"<li><b>smtpCc</b> - (optional) carbon-copy receiving address(es) (<name>@<domain>)</li>".
|
||||
"<li><b>smtpNoUseSSL</b> - (optional) \"1\" if no SSL encryption should be used for Email shipping (default: 0)</li>".
|
||||
"<li><b>smtpSSLPort</b> - (optional) Port for SSL encrypted connection (default: 465)</li>".
|
||||
"<li><b>smtpDebug</b> - (optional) switch on the debugging of SMTP connection</li>".
|
||||
"</ul>".
|
||||
"For further information please see description of the <a href=\"https://fhem.de/commandref.html#SSCamattr\">attributes</a>.".
|
||||
"<br><br>",
|
||||
"6" => "There are some Icons in directory www/images/sscam available for SSCam. Thereby the system can use the icons please do: <br>".
|
||||
"<ul><li> in FHEMWEB device attribute <b>iconPath</b> complete with \"sscam\". e.g.: attr WEB iconPath default:fhemSVG:openautomation:sscam </li></ul>".
|
||||
"After that execute \"rereadicons\" or restart FHEM. ".
|
||||
"<br><br>",
|
||||
"5" => "Find more Informations about manage users and the appropriate privilege profiles in ".
|
||||
"<a href=\"https://www.synology.com/en-global/knowledgebase/Surveillance/help/SurveillanceStation/user\">Surveillance Station online help</a> ".
|
||||
"<br><br>",
|
||||
"4" => "The message Meldung \"WARNING - The current/simulated SVS-version ... may be incompatible with SSCam version...\" means that ".
|
||||
"the used SSCam version was currently not tested with the installed version of Synology Surveillance Station (Reading \"SVSversion\"). ".
|
||||
"The compatible SVS-Version is printed out in the Internal COMPATIBILITY.\n".
|
||||
"<b>Actions:</b> At first please update your SSCam version. If the message does appear furthermore, please inform the SSCam Maintainer. ".
|
||||
"To ignore this message temporary, you may reduce the verbose level of your SSCam device. ".
|
||||
"<br><br>",
|
||||
"3" => "Link to SSCam <a href=\"https://fhem.de/commandref.html#SSCam\">english commandRef</a> ".
|
||||
"<br><br>",
|
||||
"2" => "You can create own PTZ-control icons with a template available in SVN which can be downloaded here: <a href=\"https://svn.fhem.de/trac/browser/trunk/fhem/contrib/sscam\">contrib/sscam/black_btn_CAM_Template.pdn</a>.\n".
|
||||
"This template can be edited with Paint.Net for example. ".
|
||||
"<br><br>",
|
||||
"1" => "Some helpful <a href=\"https://wiki.fhem.de/wiki/SSCAM_-_Steuerung_von_Kameras_in_Synology_Surveillance_Station\">FHEM-Wiki</a> notes".
|
||||
"<br><br>",
|
||||
);
|
||||
|
||||
#############################################################################################
|
||||
# Hint Hash DE
|
||||
#############################################################################################
|
||||
%SSCam_vHintsExt_de = (
|
||||
"7" => "<b>Einstellung Email-Versand <br>".
|
||||
"========================= </b> <br><br>".
|
||||
"Schnappschüsse können nach der Erstellung per <b>Email</b> gemeinsam versendet werden. Dazu enthält das Modul einen<br>".
|
||||
"eigenen Email-Client.<br>".
|
||||
"Zur Verwendung dieser Funktion muss das Perl-Modul <b>MIME::Lite</b> installiert sein. Auf Debian-Systemen kann ".
|
||||
"es mit".
|
||||
"<ul>".
|
||||
"<b>sudo apt-get install libmime-lite-perl</b>".
|
||||
"</ul>".
|
||||
"installiert werden. <br><br>".
|
||||
"Für die Verwendung des Email-Versands müssen einige Attribute gesetzt oder können optional genutzt werden.<br>".
|
||||
"Die Credentials für den Zugang zum Email-Server müssen mit dem Befehl <b>\"set <name> smtpcredentials <user> <password>\"</b><br>".
|
||||
"gesetzt werden. Der Verbindungsaufbau zum Postausgangsserver erfolgt initial unverschüsselt und wechselt zu einer verschlüsselten<br>".
|
||||
"Verbindung wenn SSL zur Verfügung steht. In diesem Fall erfolgt auch die Übermittlung von User/Password verschlüsselt.<br>".
|
||||
"Ist das Attribut \"smtpSSLPort\" definiert, erfolgt der Verbindungsaufbau zum Email-Server sofort verschlüsselt.<br><br>".
|
||||
"Optionale Attribute sind gekennzeichnet: <br><br>".
|
||||
"<ul>".
|
||||
"<li><b>snapEmailTxt</b> - <b>Aktiviert den Email-Versand</b>. Das Attribut hat das Format:<br>".
|
||||
"<ul><b>subject => <Betreff-Text>, body => <Mitteilung-Text></b></ul>".
|
||||
"Es können die Platzhalter \$CAM, \$DATE und \$TIME verwendet werden. <br>".
|
||||
"\$CAM wird durch den Device-Namen, Device-Alias bzw. den Namen der Kamera in der SVS ersetzt falls der<br>".
|
||||
"Device-Alias nicht gesetzt ist. <br>".
|
||||
"\$DATE und \$TIME werden durch das aktuelle Datum und Zeit ersetzt.</li>".
|
||||
"<li><b>smtpHost</b> - Hostname oder IP-Adresse des Postausgangsservers (z.B. securesmtp.t-online.de)</li>".
|
||||
"<li><b>smtpFrom</b> - Absenderadresse (<name>\@<domain>)</li>".
|
||||
"<li><b>smtpTo</b> - Empfängeradresse(n) (<name>\@<domain>)</li>".
|
||||
"<li><b>smtpPort</b> - (optional) Port des Postausgangsservers (default: 25)</li>".
|
||||
"<li><b>smtpCc</b> - (optional) Carbon-Copy Empfängeradresse(n) (<name>\@<domain>)</li>".
|
||||
"<li><b>smtpNoUseSSL</b> - (optional) \"1\" wenn kein SSL beim Email-Versand verwendet werden soll (default: 0)</li>".
|
||||
"<li><b>smtpSSLPort</b> - (optional) SSL-Port des Postausgangsservers (default: 465)</li>".
|
||||
"<li><b>smtpDebug</b> - (optional) zum Debugging der SMTP-Verbindung setzen</li>".
|
||||
"</ul>".
|
||||
"Zur näheren Erläuterung siehe Beschreibung der <a href=\"https://fhem.de/commandref_DE.html#SSCamattr\">Attribute</a>.".
|
||||
"<br><br>",
|
||||
"6" => "Für SSCam wird ein Satz Icons im Verzeichnis www/images/sscam zur Verfügung gestellt. Damit das System sie findet bitte setzen: <br>".
|
||||
"<ul><li> im FHEMWEB Device Attribut <b>iconPath</b> um \"sscam\" ergänzen. z.B.: attr WEB iconPath default:fhemSVG:openautomation:sscam </li></ul>".
|
||||
"Danach ein \"rereadicons\" bzw. einen FHEM restart ausführen.".
|
||||
"<br><br>",
|
||||
"5" => "Informationen zum Management von Usern und entsprechenden Rechte-Profilen sind in der ".
|
||||
"<a href=\"https://www.synology.com/de-de/knowledgebase/Surveillance/help/SurveillanceStation/user\">Surveillance Station Online-Hilfe</a> zu finden.".
|
||||
"<br><br>",
|
||||
"4" => "Die Meldung \"WARNING - The current/simulated SVS-version ... may be incompatible with SSCam version...\" ist ein Hinweis darauf, dass ".
|
||||
"die eingesetzte SSCam Version noch nicht mit der verwendeten Version von Synology Surveillance Station (Reading \"SVSversion\") getestet ".
|
||||
"wurde. Die kompatible SVS-Version ist im Internal COMPATIBILITY ersichtlich.\n".
|
||||
"<b>Maßnahmen:</b> Bitte SSCam zunächst updaten. Sollte die Meldung weiterhin auftreten, bitte den SSCam Maintainer informieren. Zur ".
|
||||
"vorübergehenden Ignorierung kann der verbose Level des SSCam-Devices entsprechend reduziert werden. ".
|
||||
"<br><br>",
|
||||
"3" => "Link zur deutschen SSCam <a href=\"https://fhem.de/commandref_DE.html#SSCam\">commandRef</a> ".
|
||||
"<br><br>",
|
||||
"2" => "Zur Erstellung eigener PTZ-Steuericons gibt es eine Vorlage im SVN die hier <a href=\"https://svn.fhem.de/trac/browser/trunk/fhem/contrib/sscam\">contrib/sscam/black_btn_CAM_Template.pdn</a> heruntergeladen werden kann.\n".
|
||||
"Diese Vorlage kann zum Beispiel mit Paint.Net bearbeitet werden. ".
|
||||
"<br><br>",
|
||||
"1" => "Hilfreiche Hinweise zu SSCam im <a href=\"https://wiki.fhem.de/wiki/SSCAM_-_Steuerung_von_Kameras_in_Synology_Surveillance_Station\">FHEM-Wiki</a>".
|
||||
"<br><br>",
|
||||
);
|
||||
|
||||
1;
|
||||
|
||||
=pod
|
||||
@ -7760,6 +7943,7 @@ return ($str);
|
||||
<li>Start a Recording</li>
|
||||
<li>Stop a Recording (using command or automatically after the <RecordTime> period</li>
|
||||
<li>Trigger of snapshots and optionally send them alltogether by Email using the integrated Email client </li>
|
||||
<li>Trigger snapshots of all defined cams and optionally send them alltogether by Email using the integrated Email client </li>
|
||||
<li>Deaktivate a Camera in Synology Surveillance Station</li>
|
||||
<li>Activate a Camera in Synology Surveillance Station</li>
|
||||
<li>Control of the exposure modes day, night and automatic </li>
|
||||
@ -8521,52 +8705,46 @@ attr <name> genericStrmHtmlTag <video $HTMLATTR controls autoplay>
|
||||
<li><b> set <name> snap [<number>] [<time difference>] [snapEmailTxt:"subject => <subject text>, body => <message text>"]</b> (valid for CAM)</li> <br>
|
||||
|
||||
One or multiple snapshots are triggered. The number of snapshots to trigger and the time difference (in seconds) between
|
||||
each snapshots can be optionally specified. Without any specification only one snapshot is triggered.
|
||||
The ID and the filename of the last snapshot will be displayed in Reading "LastSnapId" respectively "LastSnapFilename" of the
|
||||
device. <br>
|
||||
The snapshot Email shipping is activated by setting the <a href="#SSCamattr">attribute</a> "snapEmailTxt". If you want
|
||||
temporary overwrite the message text set in "snapEmailTxt", you can optionally specify the "snapEmailTxt:"-tag as shown
|
||||
above. <br><br>
|
||||
each snapshot can be optionally specified. Without any specification only one snapshot is triggered. <br>
|
||||
The ID and the filename of the last snapshot will be displayed in Reading "LastSnapId" respectively "LastSnapFilename".
|
||||
<br><br>
|
||||
|
||||
<b>Email shipping preparation</b> <br><br>
|
||||
The snapshot <b>Email shipping</b> can be activated by setting <a href="#SSCamattr">attribute</a> "snapEmailTxt".
|
||||
Before you have to prepare the Email shipping as described in section <a href="#SSCamEmail">Setup Email shipping</a>.
|
||||
(for further information execute "<b>get <name> versionNotes 7</b>") <br>
|
||||
If you want temporary overwrite the message text set in attribute "snapEmailTxt", you can optionally specify the
|
||||
"snapEmailTxt:"-tag as shown above. <br><br>
|
||||
|
||||
The snapshots can be sent by <b>Email</b> alltogether after creation. For this purpose the module contains its own Email client.
|
||||
Before you can use this function you have to install the Perl-module <b>MIME::Lite</b>. On debian systems it can be
|
||||
installed with command: <br><br>
|
||||
|
||||
<ul>
|
||||
sudo apt-get install libmime-lite-perl
|
||||
</ul>
|
||||
<br>
|
||||
|
||||
There are some attributes must be set or can be used optionally. <br>
|
||||
At first the Credentials for access the Email outgoing server must be set by command <b>"set <name> smtpcredentials <user> <password>"</b>.
|
||||
The connection establishment to the server is initially done unencrypted and switches to an encrypted connection if SSL
|
||||
encryption is available. In that case the transmission of User/Password takes place encrypted too.
|
||||
If attribute "smtpSSLPort" is defined, the established connection to the Email server will be encrypted immediately.
|
||||
Attributes which are optional are marked: <br><br>
|
||||
<b>Examples:</b>
|
||||
<pre>
|
||||
set <name> snap 4
|
||||
set <name> snap 3 3 snapEmailTxt:"subject => Movement alarm $CAM, body => A movement was recognised at Carport"
|
||||
</pre>
|
||||
</ul>
|
||||
<br><br>
|
||||
|
||||
<ul>
|
||||
<table>
|
||||
<colgroup> <col width=12%> <col width=88%> </colgroup>
|
||||
<tr><td style="vertical-align:top"> <b>snapEmailTxt</b> <td>- Activates the Email shipping. Has the form: <br>
|
||||
<code>subject => <subject text>, body => <message text> </code><br>
|
||||
The placeholder variables $CAM, $DATE and $TIME can be used. $CAM is
|
||||
replaced by the device alias or the name of camera in SVS if alias is not
|
||||
defined. $DATE and $TIME are replaced with the current date and time. </td></tr>
|
||||
<tr><td> <b>smtpHost</b> </td><td>- Hostname of outgoing Email server (e.g. securesmtp.t-online.de) </td></tr>
|
||||
<tr><td> <b>smtpFrom</b> </td><td>- Return address (<name>@<domain>) </td></tr>
|
||||
<tr><td> <b>smtpTo</b> </td><td>- Receiving address(es) (<name>@<domain>) </td></tr>
|
||||
<tr><td> <b>smtpPort</b> </td><td>- (optional) Port of outgoing Email server (default: 25) </td></tr>
|
||||
<tr><td> <b>smtpCc</b> </td><td>- (optional) carbon-copy receiving address(es) (<name>@<domain>) </td></tr>
|
||||
<tr><td> <b>smtpNoUseSSL</b> </td><td>- (optional) "1" if no SSL encryption should be used for Email shipping (default: 0) </td></tr>
|
||||
<tr><td> <b>smtpSSLPort</b> </td><td>- (optional) Port for SSL encrypted connection (default: 465) </td></tr>
|
||||
<tr><td> <b>smtpDebug</b> </td><td>- (optional) switch on the debugging of SMTP connection </td></tr>
|
||||
</table>
|
||||
</ul>
|
||||
<br>
|
||||
<li><b> set <name> snapCams [<number>] [<time difference>] [CAM:"<camera>, <camera>, ..."]</b> (valid for SVS)</li> <br>
|
||||
|
||||
For further information please see description of the <a href="#SSCamattr">attributes</a>. <br>
|
||||
One or multiple snapshots of denoted cameras are triggered. If no cameras are denoted, the snapshots are triggered in all
|
||||
of the defined cameras in FHEM.
|
||||
Optionally the number of snapshots to trigger (default: 1) and the time difference (in seconds) between
|
||||
each snapshot (default: 2) can be specified. <br>
|
||||
The ID and the filename of the last snapshot will be displayed in Reading "LastSnapId" respectively "LastSnapFilename" of
|
||||
the appropriate camera device. <br><br>
|
||||
|
||||
The snapshot <b>Email shipping</b> can be activated by setting <a href="#SSCamattr">attribute</a> "snapEmailTxt" in the
|
||||
SVS device <b>AND</b> in the camera devices whose snapshots should be shipped.
|
||||
Before you have to prepare the Email shipping as described in section <a href="#SSCamEmail">Setup Email shipping</a>.
|
||||
(for further information execute "<b>get <name> versionNotes 7</b>") <br>
|
||||
Only the message text set in attribute "snapEmailTxt" of the SVS device is used in the created Email. The settings of
|
||||
those attribute in the camera devices is ignored !! <br><br>
|
||||
|
||||
<b>Examples:</b>
|
||||
<pre>
|
||||
set <name> snapCams 4
|
||||
set <name> snapCams 3 3 CAM:"CamHE1, CamCarport"
|
||||
</pre>
|
||||
</ul>
|
||||
<br><br>
|
||||
|
||||
@ -8803,6 +8981,50 @@ http(s)://<hostname><port>/webapi/entry.cgi?api=SYNO.SurveillanceSta
|
||||
</ul>
|
||||
<br><br>
|
||||
|
||||
<a name="SSCamEmail"></a>
|
||||
<b>Setup Email shipping</b> <br><br>
|
||||
|
||||
<ul>
|
||||
Snapshots can be sent by <b>Email</b> alltogether after creation. For this purpose the module contains its own Email client.
|
||||
Before you can use this function you have to install the Perl-module <b>MIME::Lite</b>. On debian systems it can be
|
||||
installed with command: <br><br>
|
||||
|
||||
<ul>
|
||||
sudo apt-get install libmime-lite-perl
|
||||
</ul>
|
||||
<br>
|
||||
|
||||
There are some attributes must be set or can be used optionally. <br>
|
||||
At first the Credentials for access the Email outgoing server must be set by command <b>"set <name> smtpcredentials <user> <password>"</b>.
|
||||
The connection establishment to the server is initially done unencrypted and switches to an encrypted connection if SSL
|
||||
encryption is available. In that case the transmission of User/Password takes place encrypted too.
|
||||
If attribute "smtpSSLPort" is defined, the established connection to the Email server will be encrypted immediately.
|
||||
Attributes which are optional are marked: <br><br>
|
||||
|
||||
<ul>
|
||||
<table>
|
||||
<colgroup> <col width=12%> <col width=88%> </colgroup>
|
||||
<tr><td style="vertical-align:top"> <b>snapEmailTxt</b> <td>- <b>Activates the Email shipping.</b> This attribute has the format: <br>
|
||||
<b>subject => <subject text>, body => <message text> </b><br>
|
||||
The placeholder $CAM, $DATE and $TIME can be used. $CAM is
|
||||
replaced by the device name, device alias or the name of camera in SVS if alias is not
|
||||
defined. $DATE and $TIME are replaced with the current date and time. </td></tr>
|
||||
<tr><td> <b>smtpHost</b> </td><td>- Hostname of outgoing Email server (e.g. securesmtp.t-online.de) </td></tr>
|
||||
<tr><td> <b>smtpFrom</b> </td><td>- Return address (<name>@<domain>) </td></tr>
|
||||
<tr><td> <b>smtpTo</b> </td><td>- Receiving address(es) (<name>@<domain>) </td></tr>
|
||||
<tr><td> <b>smtpPort</b> </td><td>- (optional) Port of outgoing Email server (default: 25) </td></tr>
|
||||
<tr><td> <b>smtpCc</b> </td><td>- (optional) carbon-copy receiving address(es) (<name>@<domain>) </td></tr>
|
||||
<tr><td> <b>smtpNoUseSSL</b> </td><td>- (optional) "1" if no SSL encryption should be used for Email shipping (default: 0) </td></tr>
|
||||
<tr><td> <b>smtpSSLPort</b> </td><td>- (optional) Port for SSL encrypted connection (default: 465) </td></tr>
|
||||
<tr><td> <b>smtpDebug</b> </td><td>- (optional) switch on the debugging of SMTP connection </td></tr>
|
||||
</table>
|
||||
</ul>
|
||||
<br>
|
||||
|
||||
For further information please see description of the <a href="#SSCamattr">attributes</a>. <br>
|
||||
</ul>
|
||||
<br><br>
|
||||
|
||||
|
||||
<a name="SSCamPolling"></a>
|
||||
<b>Polling of Camera/SVS-Properties</b><br><br>
|
||||
@ -9287,6 +9509,7 @@ attr <name> genericStrmHtmlTag <video $HTMLATTR controls autoplay>
|
||||
<li>Start einer Aufnahme</li>
|
||||
<li>Stop einer Aufnahme (per Befehl bzw. automatisch nach Ablauf der Aufnahmedauer) </li>
|
||||
<li>Auslösen von Schnappschnüssen und optionaler Email-Versand mittels integrierten Email-Client </li>
|
||||
<li>Auslösen von Schnappschnüssen aller definierten Kameras und optionaler gemeinsamer Email-Versand mittels integrierten Email-Client </li>
|
||||
<li>Deaktivieren einer Kamera in Synology Surveillance Station</li>
|
||||
<li>Aktivieren einer Kamera in Synology Surveillance Station</li>
|
||||
<li>Steuerung der Belichtungsmodi Tag, Nacht bzw. Automatisch </li>
|
||||
@ -9866,7 +10089,7 @@ attr <name> genericStrmHtmlTag <video $HTMLATTR controls autoplay>
|
||||
<br><br>
|
||||
|
||||
<ul>
|
||||
<li><b> set <name> [on [<rectime>] | off] </b> (gilt für CAM)</li><br>
|
||||
<li><b> set <name> [ on [<rectime>] | off ] </b> (gilt für CAM)</li><br>
|
||||
|
||||
Der Befehl "set <name> on" startet eine Aufnahme. Die Standardaufnahmedauer beträgt 15 Sekunden. Sie kann mit dem
|
||||
Attribut "rectime" individuell festgelegt werden.
|
||||
@ -10068,55 +10291,46 @@ attr <name> genericStrmHtmlTag <video $HTMLATTR controls autoplay>
|
||||
<li><b> set <name> snap [<Anzahl>] [<Zeitabstand>] [snapEmailTxt:"subject => <Betreff-Text>, body => <Mitteilung-Text>"]</b> (gilt für CAM)</li> <br>
|
||||
|
||||
Ein oder mehrere Schnappschüsse werden ausgelöst. Es kann die Anzahl der auszulösenden Schnappschüsse und deren zeitlicher
|
||||
Abstand in Sekunden optional angegeben werden. Ohne Angabe wird ein Schnappschuß getriggert.
|
||||
Es wird die ID und der Filename des letzten Snapshots als Wert der Variable "LastSnapId" bzw. "LastSnapFilename" in den
|
||||
Readings der Kamera gespeichert. <br>
|
||||
Der Email-Versand wird durch das Setzen des <a href="#SSCamattr">Attributs</a> "snapEmailTxt" eingeschaltet. Der Text
|
||||
im Attribut "snapEmailTxt" kann durch die Spezifikation des optionalen "snapEmailTxt:"-Tags, wie oben gezeigt, temporär
|
||||
überschrieben bzw. geändert werden. <br><br>
|
||||
Abstand in Sekunden optional angegeben werden. Ohne Angabe wird ein Schnappschuß getriggert. <br>
|
||||
Es wird die ID und der Filename des letzten Snapshots als Wert der Readings "LastSnapId" bzw. "LastSnapFilename" in
|
||||
der Kamera gespeichert. <br><br>
|
||||
Ein <b>Email-Versand</b> der Schnappschüsse kann durch Setzen des <a href="#SSCamattr">Attributs</a> "snapEmailTxt" aktiviert
|
||||
werden. Zuvor ist der Email-Versand, wie im Abschnitt <a href="#SSCamEmail">Einstellung Email-Versand</a> beschrieben,
|
||||
einzustellen. (Für weitere Informationen "<b>get <name> versionNotes 7</b>" ausführen) <br>
|
||||
Der Text im Attribut "snapEmailTxt" kann durch die Spezifikation des optionalen "snapEmailTxt:"-Tags, wie oben
|
||||
gezeigt, temporär überschrieben bzw. geändert werden. <br><br>
|
||||
|
||||
<b>Email-Versand </b> <br><br>
|
||||
Die Schnappschüsse können nach der Erstellung per <b>Email</b> gemeinsam versendet werden. Dazu enthält das Modul einen
|
||||
eigenen Email-Client.
|
||||
Zur Verwendung dieser Funktion muss das Perl-Modul <b>MIME::Lite</b> installiert sein. Auf Debian-System kann
|
||||
es mit <br><br>
|
||||
|
||||
<ul>
|
||||
sudo apt-get install libmime-lite-perl
|
||||
</ul>
|
||||
<br>
|
||||
|
||||
installiert werden. <br><br>
|
||||
|
||||
Für die Verwendung des Email-Versands müssen einige Attribute gesetzt oder können optional genutzt werden. <br>
|
||||
Die Credentials für den Zugang zum Email-Server müssen mit dem Befehl <b>"set <name> smtpcredentials <user> <password>"</b>
|
||||
gesetzt werden. Der Verbindungsaufbau zum Postausgangsserver erfolgt initial unverschüsselt und wechselt zu einer verschlüsselten
|
||||
Verbindung wenn SSL zur Verfügung steht. In diesem Fall erfolgt auch die Übermittlung von User/Password verschlüsselt.
|
||||
Ist das Attribut "smtpSSLPort" definiert, erfolgt der Verbindungsaufbau zum Email-Server sofort verschlüsselt.
|
||||
Optionale Attribute sind gekennzeichnet: <br><br>
|
||||
<b>Beispiele:</b>
|
||||
<pre>
|
||||
set <name> snap 4
|
||||
set <name> snap 3 3 snapEmailTxt:"subject => Bewegungsalarm $CAM, body => Eine Bewegung wurde am Carport registriert"
|
||||
</pre>
|
||||
</ul>
|
||||
<br><br>
|
||||
|
||||
<ul>
|
||||
<table>
|
||||
<colgroup> <col width=12%> <col width=88%> </colgroup>
|
||||
<tr><td style="vertical-align:top"> <b>snapEmailTxt</b> <td>- Aktiviert den Email-Versand. Die Eingabe hat die Form: <br>
|
||||
<code>subject => <Betreff-Text>, body => <Mitteilung-Text></code><br>
|
||||
Es können die Platzhalter $CAM, $DATE und $TIME verwendet werden. $CAM wird
|
||||
durch den Device-Alias bzw. den Namen der Kamera in der SVS
|
||||
ersetzt falls der Device-Alias nicht gesetzt ist.
|
||||
$DATE und $TIME werden durch das aktuelle Datum und Zeit ersetzt.</td></tr>
|
||||
<tr><td> <b>smtpHost</b> </td><td>- Hostname oder IP-Adresse des Postausgangsservers (z.B. securesmtp.t-online.de) </td></tr>
|
||||
<tr><td> <b>smtpFrom</b> </td><td>- Absenderadresse (<name>@<domain>) </td></tr>
|
||||
<tr><td> <b>smtpTo</b> </td><td>- Empfängeradresse(n) (<name>@<domain>) </td></tr>
|
||||
<tr><td> <b>smtpPort</b> </td><td>- (optional) Port des Postausgangsservers (default: 25) </td></tr>
|
||||
<tr><td> <b>smtpCc</b> </td><td>- (optional) Carbon-Copy Empfängeradresse(n) (<name>@<domain>) </td></tr>
|
||||
<tr><td> <b>smtpNoUseSSL</b> </td><td>- (optional) "1" wenn kein SSL beim Email-Versand verwendet werden soll (default: 0) </td></tr>
|
||||
<tr><td> <b>smtpSSLPort</b> </td><td>- (optional) SSL-Port des Postausgangsservers (default: 465) </td></tr>
|
||||
<tr><td> <b>smtpDebug</b> </td><td>- (optional) zum Debugging der SMTP-Verbindung setzen </td></tr>
|
||||
</table>
|
||||
</ul>
|
||||
<br>
|
||||
<li><b> set <name> snapCams [<Anzahl>] [<Zeitabstand>] [CAM:"<Kamera>, <Kamera>, ..."]</b> (gilt für SVS)</li> <br>
|
||||
|
||||
Ein oder mehrere Schnappschüsse der angegebenen Kamera-Devices werden ausgelöst. Sind keine Kamera-Devices angegeben,
|
||||
werden die Schnappschüsse bei allen in FHEM definierten Kamera-Devices getriggert.
|
||||
Optional kann die Anzahl der auszulösenden Schnappschüsse (default: 1) und deren zeitlicher Abstand in Sekunden
|
||||
(default: 2) angegeben werden. <br>
|
||||
Es wird die ID und der Filename des letzten Snapshots als Wert der Readings "LastSnapId" bzw. "LastSnapFilename"
|
||||
der entsprechenden Kamera gespeichert. <br><br>
|
||||
Ein <b>Email-Versand</b> der Schnappschüsse kann durch Setzen des <a href="#SSCamattr">Attributs</a> <b>"snapEmailTxt"</b> im
|
||||
SVS-Device <b>UND</b> in den Kamera-Devices, deren Schnappschüsse versendet werden sollen, aktiviert werden.
|
||||
Bei Kamera-Devices die kein Attribut "snapEmailTxt" gesetzt haben, werden die Schnappschüsse ausgelöst, aber nicht versendet.
|
||||
Zuvor ist der Email-Versand, wie im Abschnitt <a href="#SSCamEmail">Einstellung Email-Versand</a> beschrieben,
|
||||
einzustellen. (Für weitere Informationen "<b>get <name> versionNotes 7</b>" ausführen) <br>
|
||||
Es wird ausschließlich der im Attribut "snapEmailTxt" des SVS-Devices hinterlegte Email-Text in der erstellten Email
|
||||
verwendet. Der Text im Attribut "snapEmailTxt" der einzelnen Kameras wird ignoriert !! <br><br>
|
||||
|
||||
<b>Beispiele:</b>
|
||||
<pre>
|
||||
set <name> snapCams 4
|
||||
set <name> snapCams 3 3 CAM:"CamHE1, CamCarport"
|
||||
</pre>
|
||||
|
||||
Zur näheren Erläuterung siehe Beschreibung der <a href="#SSCamattr">Attribute</a>. <br>
|
||||
</ul>
|
||||
<br><br>
|
||||
|
||||
@ -10368,9 +10582,60 @@ http(s)://<hostname><port>/webapi/entry.cgi?api=SYNO.SurveillanceSta
|
||||
</ul>
|
||||
<br><br>
|
||||
|
||||
<a name="SSCamEmail"></a>
|
||||
<b>Einstellung Email-Versand </b> <br><br>
|
||||
<ul>
|
||||
Schnappschüsse können nach der Erstellung per <b>Email</b> gemeinsam versendet werden. Dazu enthält das Modul einen
|
||||
eigenen Email-Client.
|
||||
Zur Verwendung dieser Funktion muss das Perl-Modul <b>MIME::Lite</b> installiert sein. Auf Debian-Systemen kann
|
||||
es mit <br><br>
|
||||
|
||||
<ul>
|
||||
sudo apt-get install libmime-lite-perl
|
||||
</ul>
|
||||
<br>
|
||||
|
||||
installiert werden. <br><br>
|
||||
|
||||
Für die Verwendung des Email-Versands müssen einige Attribute gesetzt oder können optional genutzt werden. <br>
|
||||
Die Credentials für den Zugang zum Email-Server müssen mit dem Befehl <b>"set <name> smtpcredentials <user> <password>"</b>
|
||||
hinterlegt werden. Der Verbindungsaufbau zum Postausgangsserver erfolgt initial unverschüsselt und wechselt zu einer verschlüsselten
|
||||
Verbindung wenn SSL zur Verfügung steht. In diesem Fall erfolgt auch die Übermittlung von User/Password verschlüsselt.
|
||||
Ist das Attribut "smtpSSLPort" definiert, erfolgt der Verbindungsaufbau zum Email-Server sofort verschlüsselt.
|
||||
<br><br>
|
||||
|
||||
Optionale Attribute sind gekennzeichnet: <br><br>
|
||||
|
||||
<ul>
|
||||
<table>
|
||||
<colgroup> <col width=12%> <col width=88%> </colgroup>
|
||||
<tr><td style="vertical-align:top"> <b>snapEmailTxt</b> <td>- <b>Aktiviert den Email-Versand</b>. Das Attribut hat das Format: <br>
|
||||
<ul>
|
||||
<code>subject => <Betreff-Text>, body => <Mitteilung-Text></code><br>
|
||||
</ul>
|
||||
Es können die Platzhalter $CAM, $DATE und $TIME verwendet werden. $CAM wird
|
||||
durch den Device-Namen, Device-Alias bzw. den Namen der Kamera in der SVS
|
||||
ersetzt falls der Device-Alias nicht gesetzt ist.
|
||||
$DATE und $TIME werden durch das aktuelle Datum und Zeit ersetzt.</td></tr>
|
||||
<tr><td> <b>smtpHost</b> </td><td>- Hostname oder IP-Adresse des Postausgangsservers (z.B. securesmtp.t-online.de) </td></tr>
|
||||
<tr><td> <b>smtpFrom</b> </td><td>- Absenderadresse (<name>@<domain>) </td></tr>
|
||||
<tr><td> <b>smtpTo</b> </td><td>- Empfängeradresse(n) (<name>@<domain>) </td></tr>
|
||||
<tr><td> <b>smtpPort</b> </td><td>- (optional) Port des Postausgangsservers (default: 25) </td></tr>
|
||||
<tr><td> <b>smtpCc</b> </td><td>- (optional) Carbon-Copy Empfängeradresse(n) (<name>@<domain>) </td></tr>
|
||||
<tr><td> <b>smtpNoUseSSL</b> </td><td>- (optional) "1" wenn kein SSL beim Email-Versand verwendet werden soll (default: 0) </td></tr>
|
||||
<tr><td> <b>smtpSSLPort</b> </td><td>- (optional) SSL-Port des Postausgangsservers (default: 465) </td></tr>
|
||||
<tr><td> <b>smtpDebug</b> </td><td>- (optional) zum Debugging der SMTP-Verbindung setzen </td></tr>
|
||||
</table>
|
||||
</ul>
|
||||
<br>
|
||||
|
||||
Zur näheren Erläuterung siehe Beschreibung der <a href="#SSCamattr">Attribute</a>. <br>
|
||||
</ul>
|
||||
<br><br>
|
||||
|
||||
<a name="SSCamPolling"></a>
|
||||
<b>Polling der Kamera/SVS-Eigenschaften:</b><br><br>
|
||||
|
||||
<ul>
|
||||
Die Abfrage der Kameraeigenschaften erfolgt automatisch, wenn das Attribut "pollcaminfoall" (siehe Attribute) mit einem Wert > 10 gesetzt wird. <br>
|
||||
Per Default ist das Attribut "pollcaminfoall" nicht gesetzt und das automatische Polling nicht aktiv. <br>
|
||||
Der Wert dieses Attributes legt das Intervall der Abfrage in Sekunden fest. Ist das Attribut nicht gesetzt oder < 10 wird kein automatisches Polling <br>
|
||||
@ -10404,8 +10669,9 @@ http(s)://<hostname><port>/webapi/entry.cgi?api=SYNO.SurveillanceSta
|
||||
|
||||
Sind mehrere Kameras in SSCam definiert, sollte "pollcaminfoall" nicht bei allen Kameras auf exakt den gleichen Wert gesetzt werden um Verarbeitungsengpässe <br>
|
||||
und dadurch versursachte potentielle Fehlerquellen bei der Abfrage der Synology Surveillance Station zu vermeiden. <br>
|
||||
Ein geringfügiger Unterschied zwischen den Pollingintervallen der definierten Kameras von z.B. 1s kann bereits als ausreichend angesehen werden. <br><br>
|
||||
|
||||
Ein geringfügiger Unterschied zwischen den Pollingintervallen der definierten Kameras von z.B. 1s kann bereits als ausreichend angesehen werden.
|
||||
</ul>
|
||||
<br><br>
|
||||
|
||||
<a name="SSCaminternals"></a>
|
||||
<b>Internals</b> <br><br>
|
||||
|
@ -47,7 +47,7 @@ use Encode;
|
||||
|
||||
# Versions History intern
|
||||
our %SSCam_vNotesIntern = (
|
||||
"8.5.0" => "17.01.2019 SVS device set snapAllCams ",
|
||||
"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 ",
|
||||
"8.4.3" => "11.01.2019 fix blocking Active-Token if snap was done with arguments and snapEmailTxt not set, Forum:#45671 #msg885475 ",
|
||||
@ -118,6 +118,8 @@ our %SSCam_vNotesIntern = (
|
||||
|
||||
# Versions History extern
|
||||
our %SSCam_vNotesExtern = (
|
||||
"8.5.0" => "17.01.2019 SVS device has \"snapCams\" command. Now are able to take snapshots of all defined cameras and may ".
|
||||
"optionally send them alltogether by Email.",
|
||||
"8.4.0" => "07.01.2019 Command snap is extended to syntax \"snap [number] [lag] [snapEmailTxt:\"subject => <Betreff-Text>, body => ".
|
||||
"<Mitteilung-Text>\"]\". Now you are able to trigger several number of ".
|
||||
"snapshots by only one snap-command. The triggered snapshots can be shipped alltogether with the internal email client. ",
|
||||
|
Loading…
x
Reference in New Issue
Block a user