mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-07 19:04:20 +00:00
49_SSCam: contrib 8.8.0
git-svn-id: https://svn.fhem.de/fhem/trunk@18478 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
83dc388bcc
commit
ab46de6b66
@ -1,5 +1,5 @@
|
||||
########################################################################################################################
|
||||
# $Id: 49_SSCam.pm 18411 2019-01-25 13:17:13Z DS_Starter $
|
||||
# $Id: 49_SSCam.pm 18452 2019-01-29 22:39:55Z DS_Starter $
|
||||
#########################################################################################################################
|
||||
# 49_SSCam.pm
|
||||
#
|
||||
@ -47,6 +47,9 @@ use Encode;
|
||||
|
||||
# Versions History intern
|
||||
our %SSCam_vNotesIntern = (
|
||||
"8.8.0" => "01.02.2019 send snapshots by telegram ",
|
||||
"8.7.2" => "30.01.2019 code change for snapCams (SVS) ",
|
||||
"8.7.1" => "30.01.2019 fix refresh snapgallery device if snap was done by itself ",
|
||||
"8.7.0" => "27.01.2019 send recording by email ",
|
||||
"8.6.2" => "25.01.2019 fix version numbering ",
|
||||
"8.6.1" => "21.01.2019 time format in readings and galleries depends from global language attribute, minor bug fixes ",
|
||||
@ -122,6 +125,7 @@ our %SSCam_vNotesIntern = (
|
||||
|
||||
# Versions History extern
|
||||
our %SSCam_vNotesExtern = (
|
||||
"8.8.0" => "01.02.2019 Snapshots can now be sent by telegramBot ",
|
||||
"8.7.0" => "27.01.2019 SMTP Email delivery of recordings implemented. You can send a recording after it was created subsequentely ".
|
||||
"with the integrated Email client. You have to store SMTP credentials with \"smtpcredentials\" before. ",
|
||||
"8.6.2" => "25.01.2019 fix version numbering ",
|
||||
@ -357,6 +361,7 @@ sub SSCam_Initialize($) {
|
||||
"smtpTo ".
|
||||
"smtpNoUseSSL:1,0 ".
|
||||
"snapEmailTxt ".
|
||||
"snapTelegramTxt ".
|
||||
"snapGalleryBoost:0,1 ".
|
||||
"snapGallerySize:Icon,Full ".
|
||||
"snapGalleryNumber:$SSCAM_snum ".
|
||||
@ -812,7 +817,6 @@ sub SSCam_Set($@) {
|
||||
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 $emtxt = "";
|
||||
if($prop && $prop =~ /^\d+$/) { # Anzahl der Schnappschüsse zu triggern (default: 1)
|
||||
$num = $prop;
|
||||
$ncount = $prop;
|
||||
@ -824,25 +828,40 @@ sub SSCam_Set($@) {
|
||||
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 $emtxt = AttrVal($name, "snapEmailTxt", "");
|
||||
my $at = join(" ",@a);
|
||||
if($at =~ /snapEmailTxt:/) {
|
||||
$at =~ m/.*snapEmailTxt:"(.*)".*/i;
|
||||
$emtxt = $1;
|
||||
}
|
||||
|
||||
if (AttrVal($name, "snapEmailTxt", "")) {
|
||||
if ($emtxt) {
|
||||
# Snap soll nach Erstellung per Email versendet werden
|
||||
# snapEmailTxt muss sein: subject => <Subject-Text>, body => <Body-Text>
|
||||
# Format $emtxt muss sein: snapEmailTxt:"subject => <Subject-Text>, body => <Body-Text>"
|
||||
if (!$hash->{SMTPCREDENTIALS}) {return "Due to attribute \"snapEmailTxt\" is set, you want to send snapshots by email but SMTP credentials are not set - make sure you've set credentials with \"set $name smtpcredentials username password\"";}
|
||||
$hash->{HELPER}{SMTPMSG} = $emtxt;
|
||||
}
|
||||
SSCam_camsnap("$name:$num:$lag:$ncount:$emtxt");
|
||||
|
||||
my $teletxt = AttrVal($name, "snapTelegramTxt", "");
|
||||
my $bt = join(" ",@a);
|
||||
if($bt =~ /snapTelegramTxt:/) {
|
||||
$bt =~ m/.*snapTelegramTxt:"(.*)".*/i;
|
||||
$teletxt = $1;
|
||||
}
|
||||
|
||||
if ($teletxt) {
|
||||
# Snap soll nach Erstellung per TelegramBot versendet werden
|
||||
# Format $teletxt muss sein: snapTelegramTxt:"tbot => <teleBot Device>, peers => <peer1 peer2 ..>, subject => <Beschreibungstext>"
|
||||
$hash->{HELPER}{TELEMSG} = $teletxt;
|
||||
}
|
||||
|
||||
SSCam_camsnap("$name:$num:$lag:$ncount:$emtxt:$teletxt");
|
||||
|
||||
} 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;
|
||||
@ -878,6 +897,19 @@ sub SSCam_Set($@) {
|
||||
|
||||
return "No valid camera devices are specified for trigger snapshots" if(!%snapac);
|
||||
|
||||
my $emtxt;
|
||||
my $teletxt = "";
|
||||
my $rawet = AttrVal($name, "snapEmailTxt", "");
|
||||
my $bt = join(" ",@a);
|
||||
if($bt =~ /snapEmailTxt:/) {
|
||||
$bt =~ m/.*snapEmailTxt:"(.*)".*/i;
|
||||
$rawet = $1;
|
||||
}
|
||||
if($rawet) {
|
||||
$hash->{HELPER}{CANSENDSNAP} = 1; # zentraler Schnappschußversand wird aktiviert
|
||||
$hash->{HELPER}{SMTPMSG} = $rawet;
|
||||
}
|
||||
|
||||
my $asref = \%snapac;
|
||||
$hash->{HELPER}{ALLSNAPREF} = $asref;
|
||||
my ($csnap,$cmail) = ("","");
|
||||
@ -885,10 +917,12 @@ sub SSCam_Set($@) {
|
||||
if(!AttrVal($key, "snapEmailTxt", "")) {
|
||||
delete $asref->{$key}; # Snap dieser Kamera auslösen aber nicht senden
|
||||
$csnap .= $csnap?", $key":$key;
|
||||
$emtxt = "";
|
||||
} else {
|
||||
$cmail .= $cmail?", $key":$key;
|
||||
$emtxt = $rawet;
|
||||
}
|
||||
SSCam_camsnap("$key:$num:$lag:$ncount:$emtxt");
|
||||
SSCam_camsnap("$key:$num:$lag:$ncount:$emtxt:$teletxt");
|
||||
}
|
||||
Log3($name, 4, "$name - Trigger snapshots by SVS - Number: $num, Lag: $lag, Snap only: \"$csnap\", Snap and send: \"$cmail\" ");
|
||||
|
||||
@ -1626,7 +1660,7 @@ sub SSCam_FWsummaryFn ($$$$) {
|
||||
my $imgrecendless = "<img src=\"$FW_ME/www/images/sscam/black_btn_RECSTART.png\">";
|
||||
my $cmdrecstop = "cmd=set $d off"; # Aufnahme Stop
|
||||
my $imgrecstop = "<img src=\"$FW_ME/www/images/sscam/black_btn_RECSTOP.png\">";
|
||||
my $cmddosnap = "cmd=set $d snap STRM"; # Snapshot auslösen mit Kennzeichnung "by STRM-Device"
|
||||
my $cmddosnap = "cmd=set $d snap 1 2 STRM"; # Snapshot auslösen mit Kennzeichnung "by STRM-Device"
|
||||
my $imgdosnap = "<img src=\"$FW_ME/www/images/sscam/black_btn_DOSNAP.png\">";
|
||||
|
||||
my $attr = AttrVal($d, "htmlattr", " ");
|
||||
@ -2227,7 +2261,7 @@ sub SSCam_cammotdetsc($) {
|
||||
###############################################################################
|
||||
sub SSCam_camsnap($) {
|
||||
my ($str) = @_;
|
||||
my ($name,$num,$lag,$ncount,$emtxt,$tac) = split(":",$str);
|
||||
my ($name,$num,$lag,$ncount,$emtxt,$teletxt,$tac) = split(":",$str);
|
||||
my $hash = $defs{$name};
|
||||
my $camname = $hash->{CAMNAME};
|
||||
my $errorcode;
|
||||
@ -2264,7 +2298,8 @@ sub SSCam_camsnap($) {
|
||||
# einen Schnappschuß aufnehmen
|
||||
$hash->{OPMODE} = "Snap";
|
||||
$hash->{HELPER}{LOGINRETRIES} = 0;
|
||||
$hash->{HELPER}{CANSENDSNAP} = 1 if(AttrVal($name, "snapEmailTxt", "")); # Versand Schnappschüsse soll erfolgen
|
||||
$hash->{HELPER}{CANSENDSNAP} = 1 if($emtxt); # Versand Schnappschüsse soll per Email erfolgen
|
||||
$hash->{HELPER}{CANTELESNAP} = 1 if($teletxt); # Versand Schnappschüsse soll per TelegramBot erfolgen
|
||||
$hash->{HELPER}{SNAPNUM} = $num if($num); # Gesamtzahl der auszulösenden Schnappschüsse
|
||||
$hash->{HELPER}{SNAPLAG} = $lag if($lag); # Zeitverzögerung zwischen zwei Schnappschüssen
|
||||
$hash->{HELPER}{SNAPNUMCOUNT} = $ncount if($ncount); # Restzahl der auszulösenden Schnappschüsse (wird runtergezählt)
|
||||
@ -2275,7 +2310,7 @@ sub SSCam_camsnap($) {
|
||||
|
||||
} else {
|
||||
$tac = (defined $tac)?$tac:"";
|
||||
InternalTimer(gettimeofday()+0.3, "SSCam_camsnap", "$name:$num:$lag:$ncount:$emtxt:$tac", 0);
|
||||
InternalTimer(gettimeofday()+0.3, "SSCam_camsnap", "$name:$num:$lag:$ncount:$emtxt:$teletxt:$tac", 0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -4842,7 +4877,7 @@ sub SSCam_camop_parse ($) {
|
||||
Log3($name,4, "$name - Snap '$sn' added to send recording hash: ID => $sendrecs{$sn}{recid}, File => $sendrecs{$sn}{fileName}, Created => $sendrecs{$sn}{createdTm}");
|
||||
|
||||
# prüfen ob Recording als Email versendet werden soll
|
||||
SSCam_prepareSendEmail ($hash, $OpMode, \%sendrecs);
|
||||
SSCam_prepareSendData ($hash, $OpMode, \%sendrecs);
|
||||
|
||||
readingsBeginUpdate($hash);
|
||||
readingsBulkUpdate($hash,"Errorcode","none");
|
||||
@ -5095,13 +5130,14 @@ sub SSCam_camop_parse ($) {
|
||||
}
|
||||
|
||||
|
||||
my $num = $hash->{HELPER}{SNAPNUM}; # Gesamtzahl der auszulösenden Schnappschüsse
|
||||
my $ncount = $hash->{HELPER}{SNAPNUMCOUNT}; # Restzahl der auszulösenden Schnappschüsse
|
||||
$ncount--; # wird vermindert je Snap
|
||||
my $lag = $hash->{HELPER}{SNAPLAG}; # Zeitverzögerung zwischen zwei Schnappschüssen
|
||||
my $emtxt = $hash->{HELPER}{SMTPMSG}?$hash->{HELPER}{SMTPMSG}:""; # alternativer Text für Email-Versand
|
||||
my $num = $hash->{HELPER}{SNAPNUM}; # Gesamtzahl der auszulösenden Schnappschüsse
|
||||
my $ncount = $hash->{HELPER}{SNAPNUMCOUNT}; # Restzahl der auszulösenden Schnappschüsse
|
||||
$ncount--; # wird vermindert je Snap
|
||||
my $lag = $hash->{HELPER}{SNAPLAG}; # Zeitverzögerung zwischen zwei Schnappschüssen
|
||||
my $emtxt = $hash->{HELPER}{SMTPMSG}?$hash->{HELPER}{SMTPMSG}:""; # Text für Email-Versand
|
||||
my $teletxt = $hash->{HELPER}{TELEMSG}?$hash->{HELPER}{TELEMSG}:""; # Text für TelegramBot-Versand
|
||||
if($ncount > 0) {
|
||||
InternalTimer(gettimeofday()+$lag, "SSCam_camsnap", "$name:$num:$lag:$ncount:$emtxt:$tac", 0);
|
||||
InternalTimer(gettimeofday()+$lag, "SSCam_camsnap", "$name:$num:$lag:$ncount:$emtxt:$teletxt:$tac", 0);
|
||||
if(!$tac) {
|
||||
SSCam_delActiveToken($hash); # Token freigeben wenn keine Transaktion läuft
|
||||
}
|
||||
@ -5180,7 +5216,7 @@ sub SSCam_camop_parse ($) {
|
||||
|
||||
##### eine Schnapschussgalerie soll angezeigt oder als Bulk versendet werden #####
|
||||
if($OpMode eq "getsnapgallery") {
|
||||
if($hash->{HELPER}{CANSENDSNAP}) {
|
||||
if($hash->{HELPER}{CANSENDSNAP} || $hash->{HELPER}{CANTELESNAP}) {
|
||||
# es sollen die Anzahl "$hash->{HELPER}{SNAPNUM}" Schnappschüsse versendet werden
|
||||
my $i = 0;
|
||||
my $sn = 0;
|
||||
@ -5208,33 +5244,42 @@ sub SSCam_camop_parse ($) {
|
||||
$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;
|
||||
|
||||
# Snaphash um die neuen Snaps ergänzen wenn existent
|
||||
if($hash->{HELPER}{".SNAPHASH"}{$sn}) {
|
||||
$hash->{HELPER}{".SNAPHASH"}{$sn}{snapid} = $snapid;
|
||||
$hash->{HELPER}{".SNAPHASH"}{$sn}{createdTm} = $createdTm;
|
||||
$hash->{HELPER}{".SNAPHASH"}{$sn}{fileName} = $fileName;
|
||||
$hash->{HELPER}{".SNAPHASH"}{$sn}{imageData} = $imageData;
|
||||
Log3($name,4, "$name - Snap '$sn' added to gallery hash: ID => $snapid, File => $fileName, Created => $createdTm");
|
||||
}
|
||||
|
||||
$sn += 1;
|
||||
$i += 1;
|
||||
}
|
||||
|
||||
# prüfen ob Schnappschuß als Email versendet werden soll
|
||||
SSCam_prepareSendEmail ($hash, $OpMode, \%sendsnaps);
|
||||
# prüfen ob Schnappschuß versendet werden soll
|
||||
SSCam_prepareSendData ($hash, $OpMode, \%sendsnaps);
|
||||
|
||||
} else {
|
||||
# es soll eine Schnappschußgalerie bereitgestellt (Attr snapGalleryBoost=1) bzw. gleich angezeigt
|
||||
# werden (Attr snapGalleryBoost=0)
|
||||
my $i = 0;
|
||||
my $sn = 0;
|
||||
my %allsnaps = (); # Schnappschuss Hash wird leer erstellt
|
||||
# es soll eine Schnappschußgalerie bereitgestellt (Attr snapGalleryBoost=1) bzw. gleich angezeigt
|
||||
# werden (Attr snapGalleryBoost=0)
|
||||
my $i = 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
|
||||
|
||||
while ($data->{'data'}{'data'}[$i]) {
|
||||
if($data->{'data'}{'data'}[$i]{'camName'} ne $camname) {
|
||||
$i += 1;
|
||||
next;
|
||||
}
|
||||
$snapid = $data->{data}{data}[$i]{id};
|
||||
my $createdTm = $data->{data}{data}[$i]{createdTm};
|
||||
my $fileName = $data->{data}{data}[$i]{fileName};
|
||||
my $imageData = $data->{data}{data}[$i]{imageData}; # Image data of snapshot in base64 format
|
||||
while ($data->{'data'}{'data'}[$i]) {
|
||||
if($data->{'data'}{'data'}[$i]{'camName'} ne $camname) {
|
||||
$i += 1;
|
||||
next;
|
||||
}
|
||||
$snapid = $data->{data}{data}[$i]{id};
|
||||
my $createdTm = $data->{data}{data}[$i]{createdTm};
|
||||
my $fileName = $data->{data}{data}[$i]{fileName};
|
||||
my $imageData = $data->{data}{data}[$i]{imageData}; # Image data of snapshot in base64 format
|
||||
|
||||
$allsnaps{$sn}{snapid} = $snapid;
|
||||
my @t = split(" ", FmtDateTime($data->{data}{data}[$i]{createdTm}));
|
||||
my @d = split("-", $t[0]);
|
||||
if($lang eq "DE") {
|
||||
@ -5242,28 +5287,29 @@ sub SSCam_camop_parse ($) {
|
||||
} else {
|
||||
$createdTm = "$d[0]-$d[1]-$d[2] / $t[1]";
|
||||
}
|
||||
$allsnaps{$sn}{createdTm} = $createdTm;
|
||||
$allsnaps{$sn}{fileName} = $fileName;
|
||||
$allsnaps{$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}");
|
||||
$sn += 1;
|
||||
$i += 1;
|
||||
}
|
||||
$allsnaps{$sn}{snapid} = $snapid;
|
||||
$allsnaps{$sn}{createdTm} = $createdTm;
|
||||
$allsnaps{$sn}{fileName} = $fileName;
|
||||
$allsnaps{$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}");
|
||||
$sn += 1;
|
||||
$i += 1;
|
||||
}
|
||||
|
||||
# Hash der Schnapschüsse erstellen
|
||||
$hash->{HELPER}{".SNAPHASH"} = \%allsnaps;
|
||||
# Hash der Schnapschüsse erstellen
|
||||
$hash->{HELPER}{".SNAPHASH"} = \%allsnaps;
|
||||
|
||||
# Direktausgabe Snaphash wenn nicht gepollt wird
|
||||
if(!AttrVal($name, "snapGalleryBoost",0)) {
|
||||
my $htmlCode = SSCam_composegallery($name);
|
||||
# Direktausgabe Snaphash wenn nicht gepollt wird
|
||||
if(!AttrVal($name, "snapGalleryBoost",0)) {
|
||||
my $htmlCode = SSCam_composegallery($name);
|
||||
|
||||
for (my $k=1; (defined($hash->{HELPER}{CL}{$k})); $k++ ) {
|
||||
asyncOutput($hash->{HELPER}{CL}{$k},"$htmlCode");
|
||||
}
|
||||
delete($hash->{HELPER}{".SNAPHASH"}); # Snaphash löschen wenn nicht gepollt wird
|
||||
delete($hash->{HELPER}{CL});
|
||||
}
|
||||
}
|
||||
for (my $k=1; (defined($hash->{HELPER}{CL}{$k})); $k++ ) {
|
||||
asyncOutput($hash->{HELPER}{CL}{$k},"$htmlCode");
|
||||
}
|
||||
delete($hash->{HELPER}{".SNAPHASH"}); # Snaphash löschen wenn nicht gepollt wird
|
||||
delete($hash->{HELPER}{CL});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
readingsBeginUpdate($hash);
|
||||
@ -7282,7 +7328,7 @@ sub SSCam_composegallery ($;$$) {
|
||||
my $streamHash = $defs{$strmdev} if($strmdev); # Hash des SSCamSTRM-Devices
|
||||
delete $streamHash->{HELPER}{STREAM};
|
||||
|
||||
my $cmddosnap = "cmd=set $name snap STRM"; # Snapshot auslösen mit Kennzeichnung "by STRM-Device"
|
||||
my $cmddosnap = "cmd=set $name snap 1 2 STRM"; # Snapshot auslösen mit Kennzeichnung "by STRM-Device"
|
||||
my $imgdosnap = "<img src=\"$FW_ME/www/images/sscam/black_btn_DOSNAP.png\">";
|
||||
|
||||
my $ha = AttrVal($name, "snapGalleryHtmlAttr", AttrVal($name, "htmlattr", 'width="500" height="325"'));
|
||||
@ -7463,7 +7509,7 @@ return;
|
||||
# $OpMode = aktueller Operation Mode zur Unterscheidung was versendet werden soll
|
||||
# $data = zu versendende Daten, evtl. als Hash Referenz
|
||||
#############################################################################################
|
||||
sub SSCam_prepareSendEmail ($$;$) {
|
||||
sub SSCam_prepareSendData ($$;$) {
|
||||
my ($hash, $OpMode, $data) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
my $calias = AttrVal($name,"alias",$hash->{CAMNAME}); # Alias der Kamera wenn gesetzt oder Originalname aus SVS
|
||||
@ -7521,13 +7567,10 @@ sub SSCam_prepareSendEmail ($$;$) {
|
||||
$smtpsslport = AttrVal($name,"smtpSSLPort",0);
|
||||
}
|
||||
|
||||
### Bilddaten als Email versenden wenn Attribut "snapEmailTxt" definiert ist
|
||||
if($OpMode =~ /^getsnap/ && AttrVal($name, "snapEmailTxt", "")) {
|
||||
# Attribut snapEmailTxt kann übersteuert werden mit: $hash->{HELPER}{SMTPMSG}
|
||||
# Extraktion EMail-Texte
|
||||
# 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", "");
|
||||
### Bilddaten als Email versenden wenn $hash->{HELPER}{CANSENDSNAP} definiert ist
|
||||
if($OpMode =~ /^getsnap/ && $hash->{HELPER}{CANSENDSNAP}) {
|
||||
delete $hash->{HELPER}{CANSENDSNAP};
|
||||
my $mt = delete $hash->{HELPER}{SMTPMSG};
|
||||
$mt =~ s/['"]//g;
|
||||
|
||||
my($subj,$body) = split(",", $mt, 2);
|
||||
@ -7550,8 +7593,6 @@ sub SSCam_prepareSendEmail ($$;$) {
|
||||
$tac = $hash->{HELPER}{TRANSACTION}; # Code der laufenden Transaktion
|
||||
|
||||
$sdat = $data;
|
||||
delete $hash->{HELPER}{CANSENDSNAP};
|
||||
|
||||
$ret = SSCam_sendEmail($hash, {'subject' => $smtpmsg{subject},
|
||||
'part1txt' => $smtpmsg{body},
|
||||
'part2type' => 'image/jpeg',
|
||||
@ -7564,13 +7605,10 @@ sub SSCam_prepareSendEmail ($$;$) {
|
||||
'tac' => $tac,
|
||||
}
|
||||
);
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
### Recordings als Email versenden wenn Attribut "recEmailTxt" definiert ist
|
||||
### Recordings als Email versenden wenn $hash->{HELPER}{CANSENDREC} definiert ist
|
||||
if($OpMode =~ /^GetRec/ && $hash->{HELPER}{CANSENDREC}) {
|
||||
# recEmailTxt aus $hash->{HELPER}{SMTPRECMSG}
|
||||
delete $hash->{HELPER}{CANSENDREC};
|
||||
my $mt = delete $hash->{HELPER}{SMTPRECMSG};
|
||||
$mt =~ s/['"]//g;
|
||||
@ -7604,12 +7642,182 @@ sub SSCam_prepareSendEmail ($$;$) {
|
||||
'smtpsslport' => $smtpsslport,
|
||||
}
|
||||
);
|
||||
return $ret;
|
||||
}
|
||||
|
||||
### Bilddaten mit Telegram versenden
|
||||
if($OpMode =~ /^getsnap/ && $hash->{HELPER}{CANTELESNAP}) {
|
||||
# snapTelegramTxt aus $hash->{HELPER}{TELEMSG}
|
||||
# Format in $hash->{HELPER}{TELEMSG} muss sein: tbot => <teleBot Device>, peers => <peer1 peer2 ..>, subject => <Beschreibungstext>
|
||||
delete $hash->{HELPER}{CANTELESNAP};
|
||||
my $mt = delete $hash->{HELPER}{TELEMSG};
|
||||
$mt =~ s/['"]//g;
|
||||
|
||||
my($telebot,$peers,$subj) = split(",", $mt, 3);
|
||||
my($tbotk,$tbott) = split("=>", $telebot) if($telebot);
|
||||
my($peerk,$peert) = split("=>", $peers) if($peers);
|
||||
my($subjk,$subjt) = split("=>", $subj) if($subj);
|
||||
|
||||
$tbotk = SSCam_trim($tbotk) if($tbotk);
|
||||
$tbott = SSCam_trim($tbott) if($tbott);
|
||||
$peerk = SSCam_trim($peerk) if($peerk);
|
||||
$peert = SSCam_trim($peert) if($peert);
|
||||
$subjk = SSCam_trim($subjk) if($subjk);
|
||||
if($subjt) {
|
||||
$subjt = SSCam_trim($subjt);
|
||||
$subjt =~ s/\$CAM/$calias/g;
|
||||
$subjt =~ s/\$DATE/$date/g;
|
||||
$subjt =~ s/\$TIME/$time/g;
|
||||
}
|
||||
|
||||
my %telemsg = ();
|
||||
$telemsg{$tbotk} = "$tbott" if($tbott);
|
||||
$telemsg{$peerk} = "$peert" if($peert);
|
||||
$telemsg{$subjk} = "$subjt" if($subjt);
|
||||
|
||||
$tac = $hash->{HELPER}{TRANSACTION}; # Code der laufenden Transaktion
|
||||
|
||||
$sdat = $data;
|
||||
$ret = SSCam_sendTelegram($hash, {'subject' => $telemsg{subject},
|
||||
'part2type' => 'image/jpeg',
|
||||
'sdat' => $sdat,
|
||||
'opmode' => $OpMode,
|
||||
'tac' => $tac,
|
||||
'telebot' => $telemsg{$tbotk},
|
||||
'peers' => $telemsg{$peerk},
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
#############################################################################################
|
||||
# Telegram-Versand
|
||||
#############################################################################################
|
||||
sub SSCam_sendTelegram ($$) {
|
||||
my ($hash, $extparamref) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
my $ret;
|
||||
|
||||
Log3($name, 4, "$name - ####################################################");
|
||||
Log3($name, 4, "$name - ### start send snapshot by TelegramBot ");
|
||||
Log3($name, 4, "$name - ####################################################");
|
||||
|
||||
my %SSCam_teleparams = (
|
||||
'subject' => { 'default'=>'', 'required'=>0, 'set'=>1},
|
||||
'part1type' => { 'default'=>'text/plain; charset=UTF-8', 'required'=>1, 'set'=>1},
|
||||
'part1txt' => { 'default'=>'', 'required'=>0, 'set'=>1},
|
||||
'part2type' => { 'default'=>'', 'required'=>0, 'set'=>1},
|
||||
'sdat' => { 'default'=>'', 'required'=>0, 'set'=>1}, # (Hash)Daten base64 codiert, wenn gesetzt muss 'part2type' auf 'image/jpeg' gesetzt sein
|
||||
'image' => { 'default'=>'', 'required'=>0, 'set'=>1}, # Daten als File, wenn gesetzt muss 'part2type' auf 'image/jpeg' gesetzt sein
|
||||
'fname' => { 'default'=>'image.jpg', 'required'=>0, 'set'=>1}, # Filename für "image"
|
||||
'lsnaptime' => { 'default'=>'', 'required'=>0, 'set'=>1}, # Zeitstempel der Bilddaten
|
||||
'opmode' => { 'default'=>'', 'required'=>1, 'set'=>1}, # OpMode muss gesetzt sein
|
||||
'tac' => { 'default'=>'', 'required'=>0, 'set'=>1}, # übermittelter Transaktionscode der ausgewerteten Transaktion
|
||||
'vdat' => { 'default'=>'', 'required'=>0, 'set'=>1}, # Videodaten, wenn gesetzt muss 'part2type' auf 'video/mpeg' gesetzt sein
|
||||
'telebot' => { 'default'=>'', 'required'=>1, 'set'=>1}, # TelegramBot-Device welches zum Senden verwendet werden soll
|
||||
'peers' => { 'default'=>'', 'required'=>0, 'set'=>1}, # TelegramBot Peers
|
||||
);
|
||||
|
||||
my %params = ();
|
||||
foreach my $key (keys %SSCam_teleparams) {
|
||||
$params{$key} = AttrVal($name, $SSCam_teleparams{$key}->{attr}, $SSCam_teleparams{$key}->{default})
|
||||
if(exists $SSCam_teleparams{$key}->{attr});
|
||||
if($SSCam_teleparams{$key}->{set}) {
|
||||
$params{$key} = $extparamref->{$key} if (exists $extparamref->{$key});
|
||||
$params{$key} = $SSCam_teleparams{$key}->{default} if (!$extparamref->{$key} && !$SSCam_teleparams{$key}->{attr});
|
||||
}
|
||||
Log3($name, 4, "$name - param $key is now \"".$params{$key}."\" ") if($key !~ /sdat/);
|
||||
Log3($name, 4, "$name - param $key is set") if($key =~ /sdat/ && $params{$key} ne '');
|
||||
}
|
||||
|
||||
$params{name} = $name;
|
||||
|
||||
my @err = ();
|
||||
foreach my $key (keys(%SSCam_teleparams)) {
|
||||
push(@err, $key) if ($SSCam_teleparams{$key}->{required} && !$params{$key});
|
||||
}
|
||||
if ($#err >= 0) {
|
||||
$ret = "Missing at least one required parameter or attribute: ".join(', ',@err);
|
||||
Log3($name, 2, "$name - $ret");
|
||||
readingsBeginUpdate($hash);
|
||||
readingsBulkUpdate($hash,"sendTeleState",$ret);
|
||||
readingsEndUpdate($hash, 1);
|
||||
return $ret;
|
||||
}
|
||||
|
||||
my $telebot = $params{telebot};
|
||||
my $peers = $params{peers};
|
||||
my $sdat = $params{sdat}; # Hash von Imagedaten base64 codiert
|
||||
|
||||
if(!$defs{$telebot}) {
|
||||
$ret = "No TelegramBot device \"$telebot\" available";
|
||||
readingsSingleUpdate($hash, "sendTeleState", $ret, 1);
|
||||
Log3($name, 2, "$name - $ret");
|
||||
return;
|
||||
}
|
||||
|
||||
$hash->{HELPER}{PAREF} = \%params;
|
||||
|
||||
if(!$peers) {
|
||||
$peers = AttrVal($telebot,"defaultPeer", "");
|
||||
if(!$peers) {
|
||||
$ret = "No peers of TelegramBot device \"$telebot\" found";
|
||||
readingsSingleUpdate($hash, "sendTeleState", $ret, 1);
|
||||
Log3($name, 2, "$name - $ret");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
no strict "refs";
|
||||
my ($msg,$subject);
|
||||
if($sdat) {
|
||||
### Images liegen in einem Hash (Ref in $sdat) base64-codiert vor
|
||||
my @as = sort{$b<=>$a}keys%{$sdat};
|
||||
foreach my $key (@as) {
|
||||
($msg,$subject) = SSCam_cmdSendTelegram($name,$key);
|
||||
my $isMediaStream = 0;
|
||||
( $isMediaStream ) = TelegramBot_IdentifyStream( $defs{$telebot}, $msg ) if ( defined( $msg ) );
|
||||
$ret = TelegramBot_SendIt( $defs{$telebot}, $peers, $msg, $subject, $isMediaStream, undef, "" );
|
||||
if($ret) {
|
||||
readingsSingleUpdate($hash, "sendTeleState", $ret, 1);
|
||||
Log3($name, 2, "$name - ERROR: $ret");
|
||||
} else {
|
||||
$ret = "Telegram message successfully sent to \"$peers\" by \"$telebot\" ";
|
||||
readingsSingleUpdate($hash, "sendTeleState", $ret, 1);
|
||||
Log3($name, 3, "$name - $ret");
|
||||
}
|
||||
}
|
||||
}
|
||||
use strict "refs";
|
||||
%params = (); # erstellten Versandhash löschen
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
####################################################################################################
|
||||
# Bilddaten extrahieren für Telegram Versand
|
||||
####################################################################################################
|
||||
sub SSCam_cmdSendTelegram($$) {
|
||||
my ($name,$key) = @_;
|
||||
my $hash = $defs{$name};
|
||||
my $paref = $hash->{HELPER}{PAREF};
|
||||
my $subject = $paref->{subject};
|
||||
|
||||
my $ct = $paref->{sdat}{$key}{createdTm};
|
||||
my $img = $paref->{sdat}{$key}{".imageData"};
|
||||
my $fname = SSCam_trim($paref->{sdat}{$key}{fileName});
|
||||
my $decoded = MIME::Base64::decode_base64($img);
|
||||
Log3($name, 4, "$name - image data were decoded for TelegramBot prepare");
|
||||
|
||||
$subject =~ s/\$FILE/$fname/g;
|
||||
$subject =~ s/\$CTIME/$ct/g;
|
||||
|
||||
return ($decoded,$subject);
|
||||
}
|
||||
|
||||
#############################################################################################
|
||||
# SMTP EMail-Versand
|
||||
#############################################################################################
|
||||
@ -8243,7 +8451,7 @@ return ($str);
|
||||
<ul>
|
||||
<li>Start a recording and send it optionally by Email </li>
|
||||
<li>Stop a recording by command or automatically after an adjustable period </li>
|
||||
<li>Trigger of snapshots and optionally send them alltogether by Email using the integrated Email client </li>
|
||||
<li>Trigger of snapshots and optionally send them alltogether by Email/TelegramBot 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>
|
||||
@ -8271,7 +8479,6 @@ return ($str);
|
||||
<li>Activation / Deactivation of a camera integrated PIR sensor </li>
|
||||
<li>Creation of a readingsGroup device to display an overview of all defined SSCam devices (createReadingsGroup) </li>
|
||||
<li>automatized definition of all in SVS available cameras in FHEM (autocreateCams) </li>
|
||||
<li>integrated send Email of snapshots </li>
|
||||
<li>save the last recording of camera locally </li>
|
||||
</ul>
|
||||
</ul>
|
||||
@ -9326,15 +9533,18 @@ http(s)://<hostname><port>/webapi/entry.cgi?api=SYNO.SurveillanceSta
|
||||
<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>
|
||||
defined. $DATE and $TIME are replaced with the current date and time.
|
||||
Optionally you can specify the "snapEmailTxt:"-tag when trigger snap shot with the "snap"-command.
|
||||
In this case the Email shipping is activated one-time for the snapshot or the tag-text
|
||||
is used instead of the text defined in the "snapEmailTxt"-attribute. </td></tr>
|
||||
<tr><td style="vertical-align:top"> <b>recEmailTxt</b> <td>- <b>Activates the Email shipping of recordings.</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.
|
||||
Alternatively you can specify the "recEmailTxt:"-tag when start recording with the "On"-command.
|
||||
In this case the Email shipping is temporaray activated for the started recording and the tag-text
|
||||
is used instead of the text defined in the "recEmailTxt"-attribute.</td></tr>
|
||||
Optionally you can specify the "recEmailTxt:"-tag when start recording with the "on"-command.
|
||||
In this case the Email shipping is activated one-time for the started recording or the tag-text
|
||||
is used instead of the text defined in the "recEmailTxt"-attribute. </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>
|
||||
@ -9665,10 +9875,17 @@ attr <name> genericStrmHtmlTag <video $HTMLATTR controls autoplay>
|
||||
<a name="snapEmailTxt"></a>
|
||||
<li><b>snapEmailTxt subject => <subject text>, body => <message text> </b><br>
|
||||
Activates the Email shipping of snapshots after whose creation. <br>
|
||||
The attribute has to be definied in the form as described. You can use the placeholder variables $CAM, $DATE and $TIME.
|
||||
The variable $CAM is replaced by the device alias or the name of the camera in SVS if the device alias isn't available.
|
||||
$DATE and $TIME are replaced with the current date and time.
|
||||
<br><br>
|
||||
The attribute has to be definied in the form as described. You can use the placeholder in "subject" and "body". <br><br>
|
||||
|
||||
<ul>
|
||||
<table>
|
||||
<colgroup> <col width=10%> <col width=90%> </colgroup>
|
||||
<tr><td> $CAM </td><td>- Device alias respectively the name of the camera in SVS if the device alias isn't set </td></tr>
|
||||
<tr><td> $DATE </td><td>- current date </td></tr>
|
||||
<tr><td> $TIME </td><td>- aktuelle time </td></tr>
|
||||
</table>
|
||||
</ul>
|
||||
<br>
|
||||
|
||||
<ul>
|
||||
<b>Example:</b><br>
|
||||
@ -9855,7 +10072,7 @@ attr <name> genericStrmHtmlTag <video $HTMLATTR controls autoplay>
|
||||
<ul>
|
||||
<li>Start einer Aufnahme und optionaler Versand per Email </li>
|
||||
<li>Stop einer Aufnahme per Befehl bzw. automatisch nach Ablauf einer einstellbaren Dauer </li>
|
||||
<li>Auslösen von Schnappschnüssen und optionaler Email-Versand mittels integrierten Email-Client </li>
|
||||
<li>Auslösen von Schnappschnüssen und optional gemeinsamer Email/TelegramBot-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>
|
||||
@ -9883,7 +10100,6 @@ attr <name> genericStrmHtmlTag <video $HTMLATTR controls autoplay>
|
||||
<li>Aktivierung / Deaktivierung eines kamerainternen PIR-Sensors </li>
|
||||
<li>Erzeugung einer readingsGroup zur Anzeige aller definierten SSCam-Devices (createReadingsGroup) </li>
|
||||
<li>Automatisiertes Anlegen aller in der SVS vorhandenen Kameras in FHEM (autocreateCams) </li>
|
||||
<li>integrierter Email-Versand von Schnappschüssen </li>
|
||||
<li>lokales Abspeichern der letzten Kamera-Aufnahme </li>
|
||||
</ul>
|
||||
</ul>
|
||||
@ -10660,11 +10876,12 @@ attr <name> genericStrmHtmlTag <video $HTMLATTR controls autoplay>
|
||||
Um die Daten der letzen 1-10 Schnappschüsse zu versionieren, kann das <a href="#SSCamattr">Attribut</a> "snapReadingRotate"
|
||||
verwendet werden.
|
||||
<br><br>
|
||||
Ein <b>Email-Versand</b> der Schnappschüsse kann durch Setzen des <a href="#SSCamattr">Attributs</a> "snapEmailTxt" aktiviert
|
||||
Ein <b>Email-Versand</b> der Schnappschüsse kann durch Setzen des <a href="#SSCamattr">Attributs</a> "snapEmailTxt" permanent 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>
|
||||
gezeigt, temporär überschrieben bzw. geändert werden. Sollte das Attribut "snapEmailTxt" nicht gesetzt sein, wird durch Angabe dieses Tags
|
||||
der Email-Versand einmalig aktiviert. <br><br>
|
||||
|
||||
<b>Beispiele:</b>
|
||||
<pre>
|
||||
@ -10983,7 +11200,10 @@ http(s)://<hostname><port>/webapi/entry.cgi?api=SYNO.SurveillanceSta
|
||||
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>
|
||||
$DATE und $TIME werden durch das aktuelle Datum und Zeit ersetzt. <br>
|
||||
Der Email-Versand des letzten Schnappschusses wird einmalig aktiviert falls der "recEmailTxt:"-Tag
|
||||
beim "snap"-Kommando verwendet wird bzw. der in diesem Tag definierte Text statt des Textes im
|
||||
Attribut "recEmailTxt" verwendet. </td></tr>
|
||||
|
||||
<tr><td style="vertical-align:top"> <b>recEmailTxt</b> <td>- <b>Aktiviert den Email-Versand von Aufnahmen</b>.
|
||||
Das Attribut hat das Format: <br>
|
||||
@ -10994,8 +11214,10 @@ http(s)://<hostname><port>/webapi/entry.cgi?api=SYNO.SurveillanceSta
|
||||
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. <br>
|
||||
Der Email-Versand der letzten Aufnahme wird temporär aktiviert falls der "recEmailTxt:"-Tag beim
|
||||
On-Kommando verwendet wird. </td></tr>
|
||||
Der Email-Versand der letzten Aufnahme wird einamlig aktiviert falls der "recEmailTxt:"-Tag beim
|
||||
"on"-Kommando verwendet wird bzw. der in diesem Tag definierte Text statt des Textes im
|
||||
Attribut "recEmailTxt" verwendet. </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>
|
||||
@ -11333,10 +11555,20 @@ attr <name> genericStrmHtmlTag <video $HTMLATTR controls autoplay>
|
||||
|
||||
<a name="snapEmailTxt"></a>
|
||||
<li><b>snapEmailTxt subject => <Betreff-Text>, body => <Mitteilung-Text> </b><br>
|
||||
Aktiviert den Emailversand von Schnappschüssen nach deren Erstellung. <br>
|
||||
Das Attribut muß in der angegebenen Form definiert werden. 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 vorhanden
|
||||
ist. $DATE und $TIME werden durch das aktuelle Datum und Zeit ersetzt. <br><br>
|
||||
Aktiviert den Emailversand von Schnappschüssen nach deren Erstellung. Wurden mehrere Schnappschüsse ausgelöst,
|
||||
werden sie gemeinsam in einer Mail versendet. <br>
|
||||
Das Attribut muß in der angegebenen Form definiert werden. <br>
|
||||
Es können die Platzhalter im subject verwendet werden. <br><br>
|
||||
|
||||
<ul>
|
||||
<table>
|
||||
<colgroup> <col width=10%> <col width=90%> </colgroup>
|
||||
<tr><td> $CAM </td><td>- Device-Alias bzw. der Name der Kamera in der SVS falls der Device-Alias nicht vorhanden ist </td></tr>
|
||||
<tr><td> $DATE </td><td>- aktuelles Datum </td></tr>
|
||||
<tr><td> $TIME </td><td>- aktuelle Zeit </td></tr>
|
||||
</table>
|
||||
</ul>
|
||||
<br>
|
||||
|
||||
<ul>
|
||||
<b>Beispiel:</b><br>
|
||||
@ -11345,6 +11577,39 @@ attr <name> genericStrmHtmlTag <video $HTMLATTR controls autoplay>
|
||||
<br>
|
||||
</li>
|
||||
|
||||
<a name="snapTelegramTxt"></a>
|
||||
<li><b>snapTelegramTxt tbot => <TelegramBot-Device>, peers => [<peer1 peer2 ...>], subject => [<Betreff-Text>] </b><br>
|
||||
Aktiviert den permanenten Versand von Schnappschüssen nach deren Erstellung per TelegramBot. Wurden mehrere Schnappschüsse ausgelöst,
|
||||
werden sie sequentiell versendet.<br>
|
||||
Das Attribut muß in der angegebenen Form definiert werden. Im Schlüssel "tbot" ist das TelegramBot-Device anzugeben, welches für
|
||||
den Versand der Daten verwendet werden soll. Das <a href="http://fhem.de/commandref_DE.html#TelegramBot">TelegramBot-Device</a> muss natürlich
|
||||
vorhanden und funktionstüchtig sein. <br>
|
||||
Die Angabe von "peers" und "subject" ist optional, jedoch muß der Schlüssel (leer) angegeben werden.
|
||||
Wurde "peer" nicht angegeben, wird der Default-Peer des TelegramBot verwendet. <br>
|
||||
Es können die Platzhalter im subject verwendet werden. <br><br>
|
||||
|
||||
<ul>
|
||||
<table>
|
||||
<colgroup> <col width=10%> <col width=90%> </colgroup>
|
||||
<tr><td> $CAM </td><td>- Device-Alias bzw. den Namen der Kamera in der SVS ersetzt falls der Device-Alias nicht vorhanden ist </td></tr>
|
||||
<tr><td> $DATE </td><td>- aktuelles Datum </td></tr>
|
||||
<tr><td> $TIME </td><td>- aktuelle Zeit </td></tr>
|
||||
<tr><td> $FILE </td><td>- Filename des Schnappschusses </td></tr>
|
||||
<tr><td> $CTIME </td><td>- Erstellungszeit des Schnappschusses </td></tr>
|
||||
</table>
|
||||
</ul>
|
||||
<br>
|
||||
|
||||
<ul>
|
||||
<b>Beispiele:</b><br>
|
||||
snapTelegramTxt tbot => teleBot, peers => , subject => Bewegungsalarm ($FILE) <br>
|
||||
snapTelegramTxt tbot => teleBot, peers => @nabuko @foo @bar, subject => <br>
|
||||
snapTelegramTxt tbot => teleBot, peers => , subject => <br>
|
||||
snapTelegramTxt tbot => teleBot, peers => , subject => Bewegungsalarm bei $CAM. Es wurde $CTIME der Schnappschuss $FILE erstellt <br>
|
||||
</ul>
|
||||
<br>
|
||||
</li><br>
|
||||
|
||||
<a name="snapGalleryBoost"></a>
|
||||
<li><b>snapGalleryBoost</b><br>
|
||||
Wenn gesetzt, werden die letzten Schnappschüsse (default 3) über Polling im Speicher gehalten und mit "set/get snapGallery"
|
||||
|
Loading…
x
Reference in New Issue
Block a user