mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-04 17:36:39 +00:00
49_SSCAM: contrib 9.11.0
git-svn-id: https://svn.fhem.de/fhem/trunk@27219 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
acb6cd110c
commit
9f2ba482f0
@ -1,5 +1,5 @@
|
|||||||
########################################################################################################################
|
########################################################################################################################
|
||||||
# $Id: 49_SSCam.pm 27053 2023-01-14 13:00:46Z DS_Starter $
|
# $Id: 49_SSCam.pm 27103 2023-02-13 17:50:30Z DS_Starter $
|
||||||
#########################################################################################################################
|
#########################################################################################################################
|
||||||
# 49_SSCam.pm
|
# 49_SSCam.pm
|
||||||
#
|
#
|
||||||
@ -62,6 +62,7 @@ use FHEM::SynoModules::SMUtils qw(
|
|||||||
delCallParts
|
delCallParts
|
||||||
setReadingErrorNone
|
setReadingErrorNone
|
||||||
setReadingErrorState
|
setReadingErrorState
|
||||||
|
timestampToDateTime
|
||||||
); # Hilfsroutinen Modul
|
); # Hilfsroutinen Modul
|
||||||
use Data::Dumper;
|
use Data::Dumper;
|
||||||
use MIME::Base64;
|
use MIME::Base64;
|
||||||
@ -185,6 +186,7 @@ BEGIN {
|
|||||||
|
|
||||||
# Versions History intern
|
# Versions History intern
|
||||||
my %vNotesIntern = (
|
my %vNotesIntern = (
|
||||||
|
"9.11.0" => "13.02.2023 Telegram send attributes extended by key option => silent ",
|
||||||
"9.10.9" => "22.01.2023 substitution of \$#TIME corrected ",
|
"9.10.9" => "22.01.2023 substitution of \$#TIME corrected ",
|
||||||
"9.10.8" => "14.01.2023 add blank line in setter runView, goPreset, runPatrol ",
|
"9.10.8" => "14.01.2023 add blank line in setter runView, goPreset, runPatrol ",
|
||||||
"9.10.7" => "02.08.2022 allow placeholders #CAM, #DATE, #TIME, #FILE, #CTIME (also for Email) ",
|
"9.10.7" => "02.08.2022 allow placeholders #CAM, #DATE, #TIME, #FILE, #CTIME (also for Email) ",
|
||||||
@ -1785,6 +1787,7 @@ return;
|
|||||||
################################################################
|
################################################################
|
||||||
sub _setsnap { ## no critic "not used"
|
sub _setsnap { ## no critic "not used"
|
||||||
my $paref = shift;
|
my $paref = shift;
|
||||||
|
|
||||||
my $hash = $paref->{hash};
|
my $hash = $paref->{hash};
|
||||||
my $name = $paref->{name};
|
my $name = $paref->{name};
|
||||||
my $prop = $paref->{prop} // q{};
|
my $prop = $paref->{prop} // q{};
|
||||||
@ -1811,7 +1814,7 @@ sub _setsnap { ## no critic "not used"
|
|||||||
($hash->{HELPER}{INFORM}) = $spec =~ m/STRM:(.*)/xi; # Snap by SSCamSTRM-Device
|
($hash->{HELPER}{INFORM}) = $spec =~ m/STRM:(.*)/xi; # Snap by SSCamSTRM-Device
|
||||||
}
|
}
|
||||||
|
|
||||||
my $emtxt = AttrVal($name, "snapEmailTxt", "");
|
my $emtxt = AttrVal ($name, "snapEmailTxt", "");
|
||||||
if($spec =~ /snapEmailTxt:/x) {
|
if($spec =~ /snapEmailTxt:/x) {
|
||||||
($emtxt) = $spec =~ m/snapEmailTxt:"(.*)"/xi;
|
($emtxt) = $spec =~ m/snapEmailTxt:"(.*)"/xi;
|
||||||
}
|
}
|
||||||
@ -1823,7 +1826,7 @@ sub _setsnap { ## no critic "not used"
|
|||||||
$hash->{HELPER}{SMTPMSG} = $emtxt;
|
$hash->{HELPER}{SMTPMSG} = $emtxt;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $teletxt = AttrVal($name, "snapTelegramTxt", "");
|
my $teletxt = AttrVal ($name, "snapTelegramTxt", "");
|
||||||
if($spec =~ /snapTelegramTxt:/x) {
|
if($spec =~ /snapTelegramTxt:/x) {
|
||||||
($teletxt) = $spec =~ m/snapTelegramTxt:"(.*)"/xi;
|
($teletxt) = $spec =~ m/snapTelegramTxt:"(.*)"/xi;
|
||||||
}
|
}
|
||||||
@ -1832,7 +1835,7 @@ sub _setsnap { ## no critic "not used"
|
|||||||
$hash->{HELPER}{TELEMSG} = $teletxt;
|
$hash->{HELPER}{TELEMSG} = $teletxt;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $chattxt = AttrVal($name, "snapChatTxt", "");
|
my $chattxt = AttrVal ($name, "snapChatTxt", "");
|
||||||
if($spec =~ /snapChatTxt:/x) {
|
if($spec =~ /snapChatTxt:/x) {
|
||||||
($chattxt) = $spec =~ m/snapChatTxt:"(.*)"/xi;
|
($chattxt) = $spec =~ m/snapChatTxt:"(.*)"/xi;
|
||||||
}
|
}
|
||||||
@ -1899,8 +1902,8 @@ sub _setsnapCams { ## no critic "not used"
|
|||||||
|
|
||||||
my $emtxt;
|
my $emtxt;
|
||||||
my $teletxt = "";
|
my $teletxt = "";
|
||||||
my $rawet = AttrVal($name, "snapEmailTxt", "");
|
my $rawet = AttrVal ($name, "snapEmailTxt", "");
|
||||||
my $bt = join " ",@$aref;
|
my $bt = join " ", @$aref;
|
||||||
|
|
||||||
if($bt =~ /snapEmailTxt:/x) {
|
if($bt =~ /snapEmailTxt:/x) {
|
||||||
($rawet) = $bt =~ m/snapEmailTxt:"(.*)"/xi;
|
($rawet) = $bt =~ m/snapEmailTxt:"(.*)"/xi;
|
||||||
@ -1914,13 +1917,13 @@ sub _setsnapCams { ## no critic "not used"
|
|||||||
my ($csnap,$cmail) = ("","");
|
my ($csnap,$cmail) = ("","");
|
||||||
|
|
||||||
for my $key (keys%{$hash->{HELPER}{ALLSNAPREF}}) {
|
for my $key (keys%{$hash->{HELPER}{ALLSNAPREF}}) {
|
||||||
if(!AttrVal($key, "snapEmailTxt", "")) {
|
if(!AttrVal ($key, "snapEmailTxt", "")) {
|
||||||
delete $hash->{HELPER}{ALLSNAPREF}->{$key}; # Snap dieser Kamera auslösen aber nicht senden
|
delete $hash->{HELPER}{ALLSNAPREF}->{$key}; # Snap dieser Kamera auslösen aber nicht senden
|
||||||
$csnap .= $csnap?", $key":$key;
|
$csnap .= $csnap ? ", $key" : $key;
|
||||||
$emtxt = "";
|
$emtxt = "";
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$cmail .= $cmail?", $key":$key;
|
$cmail .= $cmail ? ", $key" : $key;
|
||||||
$emtxt = $rawet;
|
$emtxt = $rawet;
|
||||||
}
|
}
|
||||||
__camSnap("$key!_!$num!_!$lag!_!$ncount!_!$emtxt!_!$teletxt");
|
__camSnap("$key!_!$num!_!$lag!_!$ncount!_!$emtxt!_!$teletxt");
|
||||||
@ -4151,7 +4154,7 @@ sub Get {
|
|||||||
;
|
;
|
||||||
}
|
}
|
||||||
else { # getlist für SVS Devices
|
else { # getlist für SVS Devices
|
||||||
$getlist .= ($hash->{HELPER}{API}{HMODE}{VER}?"homeModeState:noArg ": "").
|
$getlist .= ($hash->{HELPER}{API}{HMODE}{VER} ? "homeModeState:noArg " : "").
|
||||||
"listLog "
|
"listLog "
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
@ -6284,26 +6287,16 @@ sub _parsegethomemodestate { ## no critic "not used"
|
|||||||
my $name = $paref->{name};
|
my $name = $paref->{name};
|
||||||
my $data = $paref->{data};
|
my $data = $paref->{data};
|
||||||
|
|
||||||
my $lang = AttrVal('global', 'language', 'EN');
|
|
||||||
my $hmst = $data->{'data'}{'on'};
|
my $hmst = $data->{'data'}{'on'};
|
||||||
my $hmststr = $hmst == 1 ? "on" : "off";
|
my $hmststr = $hmst == 1 ? "on" : "off";
|
||||||
|
|
||||||
my $update_time;
|
my ($date, $time) = timestampToDateTime ();
|
||||||
|
|
||||||
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime;
|
|
||||||
|
|
||||||
if($lang eq "DE") {
|
|
||||||
$update_time = sprintf "%02d.%02d.%04d / %02d:%02d:%02d" , $mday , $mon+=1 ,$year+=1900 , $hour , $min , $sec ;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$update_time = sprintf "%04d-%02d-%02d / %02d:%02d:%02d" , $year+=1900 , $mon+=1 , $mday , $hour , $min , $sec ;
|
|
||||||
}
|
|
||||||
|
|
||||||
readingsBeginUpdate ($hash);
|
readingsBeginUpdate ($hash);
|
||||||
readingsBulkUpdate ($hash, "HomeModeState", $hmststr );
|
readingsBulkUpdate ($hash, "HomeModeState", $hmststr );
|
||||||
readingsBulkUpdate ($hash, "LastUpdateTime", $update_time );
|
readingsBulkUpdate ($hash, "LastUpdateTime", $date.' / '.$time );
|
||||||
readingsBulkUpdate ($hash, "Errorcode", "none" );
|
readingsBulkUpdate ($hash, "Errorcode", "none" );
|
||||||
readingsBulkUpdate ($hash, "Error", "none" );
|
readingsBulkUpdate ($hash, "Error", "none" );
|
||||||
readingsEndUpdate ($hash, 1);
|
readingsEndUpdate ($hash, 1);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@ -6681,27 +6674,16 @@ sub _parseGetcaminfo { ## no critic "not used"
|
|||||||
my $verbose = $paref->{verbose};
|
my $verbose = $paref->{verbose};
|
||||||
my $camname = $paref->{camname};
|
my $camname = $paref->{camname};
|
||||||
|
|
||||||
my $lang = AttrVal("global","language","EN");
|
my ($date, $time) = timestampToDateTime ();
|
||||||
|
|
||||||
my $update_time;
|
my $camLiveMode = $data->{'data'}->{'cameras'}->[0]->{'camLiveMode'};
|
||||||
|
$camLiveMode = $hrkeys{camLiveMode}{$camLiveMode};
|
||||||
|
|
||||||
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime;
|
my $deviceType = $data->{'data'}->{'cameras'}->[0]->{'deviceType'};
|
||||||
|
$deviceType = $hrkeys{deviceType}{$deviceType};
|
||||||
|
|
||||||
if($lang eq "DE") {
|
my $camStatus = jboolmap($data->{'data'}->{'cameras'}->[0]->{'camStatus'});
|
||||||
$update_time = sprintf "%02d.%02d.%04d / %02d:%02d:%02d" , $mday , $mon+=1 ,$year+=1900 , $hour , $min , $sec ;
|
$camStatus = $hrkeys{camStatus}{$camStatus};
|
||||||
}
|
|
||||||
else {
|
|
||||||
$update_time = sprintf "%04d-%02d-%02d / %02d:%02d:%02d" , $year+=1900 , $mon+=1 , $mday , $hour , $min , $sec ;
|
|
||||||
}
|
|
||||||
|
|
||||||
my $camLiveMode = $data->{'data'}->{'cameras'}->[0]->{'camLiveMode'};
|
|
||||||
$camLiveMode = $hrkeys{camLiveMode}{$camLiveMode};
|
|
||||||
|
|
||||||
my $deviceType = $data->{'data'}->{'cameras'}->[0]->{'deviceType'};
|
|
||||||
$deviceType = $hrkeys{deviceType}{$deviceType};
|
|
||||||
|
|
||||||
my $camStatus = jboolmap($data->{'data'}->{'cameras'}->[0]->{'camStatus'});
|
|
||||||
$camStatus = $hrkeys{camStatus}{$camStatus};
|
|
||||||
|
|
||||||
if ($camStatus eq "enabled") {
|
if ($camStatus eq "enabled") {
|
||||||
if (ReadingsVal("$name", "Record", "Stop") eq "Start") { # falls Aufnahme noch läuft -> STATE = on setzen
|
if (ReadingsVal("$name", "Record", "Stop") eq "Start") { # falls Aufnahme noch läuft -> STATE = on setzen
|
||||||
@ -6772,7 +6754,7 @@ sub _parseGetcaminfo { ## no critic "not used"
|
|||||||
readingsBulkUpdate($hash, "CapPIR", $pdcap);
|
readingsBulkUpdate($hash, "CapPIR", $pdcap);
|
||||||
readingsBulkUpdate($hash, "Availability", $camStatus);
|
readingsBulkUpdate($hash, "Availability", $camStatus);
|
||||||
readingsBulkUpdate($hash, "DeviceType", $deviceType);
|
readingsBulkUpdate($hash, "DeviceType", $deviceType);
|
||||||
readingsBulkUpdate($hash, "LastUpdateTime", $update_time);
|
readingsBulkUpdate($hash, "LastUpdateTime", $date.' / '.$time);
|
||||||
readingsBulkUpdate($hash, "Record", $recStatus);
|
readingsBulkUpdate($hash, "Record", $recStatus);
|
||||||
readingsBulkUpdate($hash, "UsedSpaceMB", $data->{'data'}{'cameras'}[0]{'volume_space'});
|
readingsBulkUpdate($hash, "UsedSpaceMB", $data->{'data'}{'cameras'}[0]{'volume_space'});
|
||||||
readingsBulkUpdate($hash, "VideoFolder", AttrVal($name, "videofolderMap", $data->{'data'}{'cameras'}[0]{'folder'}));
|
readingsBulkUpdate($hash, "VideoFolder", AttrVal($name, "videofolderMap", $data->{'data'}{'cameras'}[0]{'folder'}));
|
||||||
@ -7013,8 +6995,6 @@ sub _parsegeteventlist { ## no critic "not used"
|
|||||||
my $verbose = $paref->{verbose};
|
my $verbose = $paref->{verbose};
|
||||||
my $camname = $paref->{camname};
|
my $camname = $paref->{camname};
|
||||||
|
|
||||||
my $lang = AttrVal("global","language","EN");
|
|
||||||
|
|
||||||
my $eventnum = $data->{'data'}{'total'};
|
my $eventnum = $data->{'data'}{'total'};
|
||||||
my $lrec = $data->{'data'}{'events'}[0]{name};
|
my $lrec = $data->{'data'}{'events'}[0]{name};
|
||||||
my $lrecid = $data->{'data'}{'events'}[0]{'eventId'};
|
my $lrecid = $data->{'data'}{'events'}[0]{'eventId'};
|
||||||
@ -7023,18 +7003,12 @@ sub _parsegeteventlist { ## no critic "not used"
|
|||||||
|
|
||||||
if ($eventnum > 0) {
|
if ($eventnum > 0) {
|
||||||
$lastrecstarttime = $data->{'data'}{'events'}[0]{startTime};
|
$lastrecstarttime = $data->{'data'}{'events'}[0]{startTime};
|
||||||
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($lastrecstarttime);
|
my ($date, $time) = timestampToDateTime ($lastrecstarttime);
|
||||||
|
$lastrecstarttime = $date.' / '.$time;
|
||||||
|
|
||||||
if($lang eq "DE") {
|
$lastrecstoptime = $data->{'data'}{'events'}[0]{stopTime};
|
||||||
$lastrecstarttime = sprintf "%02d.%02d.%04d / %02d:%02d:%02d" , $mday , $mon+=1 ,$year+=1900 , $hour , $min , $sec ;
|
($date, $time) = timestampToDateTime ($lastrecstoptime);
|
||||||
}
|
$lastrecstoptime = $time;
|
||||||
else {
|
|
||||||
$lastrecstarttime = sprintf "%04d-%02d-%02d / %02d:%02d:%02d" , $year+=1900 , $mon+=1 , $mday , $hour , $min , $sec ;
|
|
||||||
}
|
|
||||||
|
|
||||||
$lastrecstoptime = $data->{'data'}{'events'}[0]{stopTime};
|
|
||||||
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($lastrecstoptime);
|
|
||||||
$lastrecstoptime = sprintf "%02d:%02d:%02d" , $hour , $min , $sec ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
readingsBeginUpdate ($hash);
|
readingsBeginUpdate ($hash);
|
||||||
@ -9509,30 +9483,27 @@ sub prepareSendData {
|
|||||||
$dat = $data{SSCam}{RS}; # Referenz zum summarischen Hash einsetzen
|
$dat = $data{SSCam}{RS}; # Referenz zum summarischen Hash einsetzen
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
cache($name, "c_clear");
|
cache ($name, 'c_clear');
|
||||||
|
|
||||||
for my $key (keys%{$asref}) {
|
for my $key (keys%{$asref}) {
|
||||||
cache($name, "c_write", "{RS}{multiple_snapsend}{$key}{createdTm}", delete $asref->{$key}{createdTm});
|
cache($name, "c_write", "{RS}{multiple_snapsend}{$key}{createdTm}", delete $asref->{$key}{createdTm});
|
||||||
cache($name, "c_write", "{RS}{multiple_snapsend}{$key}{imageData}", delete $asref->{$key}{imageData});
|
cache($name, "c_write", "{RS}{multiple_snapsend}{$key}{imageData}", delete $asref->{$key}{imageData});
|
||||||
cache($name, "c_write", "{RS}{multiple_snapsend}{$key}{fileName}", delete $asref->{$key}{fileName});
|
cache($name, "c_write", "{RS}{multiple_snapsend}{$key}{fileName}", delete $asref->{$key}{fileName});
|
||||||
}
|
}
|
||||||
|
|
||||||
$dat = "{RS}{multiple_snapsend}"; # Referenz zum summarischen Hash einsetzen
|
$dat = "{RS}{multiple_snapsend}"; # Referenz zum summarischen Hash einsetzen
|
||||||
}
|
}
|
||||||
|
|
||||||
$calias = AttrVal($name,"alias",$hash->{NAME}); # Alias des SVS-Devices
|
$calias = AttrVal ($name, 'alias', $hash->{NAME}); # Alias des SVS-Devices
|
||||||
$hash->{HELPER}{TRANSACTION} = "multiple_snapsend"; # fake Transaction im SVS Device setzen
|
$hash->{HELPER}{TRANSACTION} = 'multiple_snapsend'; # fake Transaction im SVS Device setzen
|
||||||
last; # Schleife verlassen und mit Senden weiter
|
last; # Schleife verlassen und mit Senden weiter
|
||||||
}
|
}
|
||||||
|
|
||||||
my $sp = AttrVal($name, "smtpPort", 25);
|
my $sp = AttrVal ($name, 'smtpPort', 25);
|
||||||
my $nousessl = AttrVal($name, "smtpNoUseSSL", 0);
|
my $nousessl = AttrVal ($name, 'smtpNoUseSSL', 0);
|
||||||
|
my ($date, $time) = timestampToDateTime ();
|
||||||
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime;
|
my $sslfrominit = 0;
|
||||||
|
my $smtpsslport = 465;
|
||||||
my $date = sprintf "%02d.%02d.%04d" , $mday , $mon+=1 ,$year+=1900;
|
|
||||||
my $time = sprintf "%02d:%02d:%02d" , $hour , $min , $sec;
|
|
||||||
|
|
||||||
my $sslfrominit = 0;
|
|
||||||
my $smtpsslport = 465;
|
|
||||||
|
|
||||||
if(AttrVal($name,"smtpSSLPort",0)) {
|
if(AttrVal($name,"smtpSSLPort",0)) {
|
||||||
$sslfrominit = 1;
|
$sslfrominit = 1;
|
||||||
@ -9619,14 +9590,16 @@ sub prepareSendData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
### Schnappschüsse mit Telegram versenden
|
### Schnappschüsse mit Telegram versenden
|
||||||
#########################################
|
# snapTelegramTxt aus $hash->{HELPER}{TELEMSG}
|
||||||
|
#
|
||||||
|
# Format in $hash->{HELPER}{TELEMSG} muss sein:
|
||||||
|
# tbot => <teleBot Device>, peers => <peer1 peer2 ..>, subject => <Beschreibungstext>
|
||||||
|
################################################################################################
|
||||||
if($OpMode =~ /^getsnap/x && $hash->{HELPER}{CANTELESNAP}) {
|
if($OpMode =~ /^getsnap/x && $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};
|
delete $hash->{HELPER}{CANTELESNAP};
|
||||||
$data{SSCam}{$name}{SENDCOUNT}{$tac}++;
|
$data{SSCam}{$name}{SENDCOUNT}{$tac}++;
|
||||||
|
|
||||||
Log3($name, 1, "$name - Send Counter transaction \"$tac\": ".$data{SSCam}{$name}{SENDCOUNT}{$tac}) if(AttrVal($name,"debugactivetoken",0));
|
Log3 ($name, 1, "$name - Send Counter transaction \"$tac\": ".$data{SSCam}{$name}{SENDCOUNT}{$tac}) if(AttrVal($name,"debugactivetoken",0));
|
||||||
|
|
||||||
my $mt = delete $hash->{HELPER}{TELEMSG};
|
my $mt = delete $hash->{HELPER}{TELEMSG};
|
||||||
|
|
||||||
@ -9647,6 +9620,7 @@ sub prepareSendData {
|
|||||||
'tac' => $tac,
|
'tac' => $tac,
|
||||||
'telebot' => $telemsg->{tbot},
|
'telebot' => $telemsg->{tbot},
|
||||||
'peers' => $telemsg->{peers},
|
'peers' => $telemsg->{peers},
|
||||||
|
'option' => $telemsg->{option}, # Versandoptionen
|
||||||
'MediaStream' => '-1', # Code für MediaStream im TelegramBot (png/jpg = -1)
|
'MediaStream' => '-1', # Code für MediaStream im TelegramBot (png/jpg = -1)
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@ -9655,10 +9629,12 @@ sub prepareSendData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
### Aufnahmen mit Telegram versenden
|
### Aufnahmen mit Telegram versenden
|
||||||
####################################
|
# recTelegramTxt aus $hash->{HELPER}{TELERECMSG}
|
||||||
|
#
|
||||||
|
# Format in $hash->{HELPER}{TELEMSG} muss sein:
|
||||||
|
# tbot => <teleBot Device>, peers => <peer1 peer2 ..>, subject => <Beschreibungstext>
|
||||||
|
#################################################################################################
|
||||||
if($OpMode =~ /^GetRec/x && $hash->{HELPER}{CANTELEREC}) {
|
if($OpMode =~ /^GetRec/x && $hash->{HELPER}{CANTELEREC}) {
|
||||||
# recTelegramTxt aus $hash->{HELPER}{TELERECMSG}
|
|
||||||
# Format in $hash->{HELPER}{TELEMSG} muss sein: tbot => <teleBot Device>, peers => <peer1 peer2 ..>, subject => <Beschreibungstext>
|
|
||||||
delete $hash->{HELPER}{CANTELEREC};
|
delete $hash->{HELPER}{CANTELEREC};
|
||||||
$data{SSCam}{$name}{SENDCOUNT}{$tac}++;
|
$data{SSCam}{$name}{SENDCOUNT}{$tac}++;
|
||||||
|
|
||||||
@ -9682,6 +9658,7 @@ sub prepareSendData {
|
|||||||
'opmode' => $OpMode,
|
'opmode' => $OpMode,
|
||||||
'telebot' => $telemsg->{tbot},
|
'telebot' => $telemsg->{tbot},
|
||||||
'peers' => $telemsg->{peers},
|
'peers' => $telemsg->{peers},
|
||||||
|
'option' => $telemsg->{option}, # Versandoptionen
|
||||||
'tac' => $tac,
|
'tac' => $tac,
|
||||||
'MediaStream' => '-30', # Code für MediaStream im TelegramBot (png/jpg = -1)
|
'MediaStream' => '-30', # Code für MediaStream im TelegramBot (png/jpg = -1)
|
||||||
}
|
}
|
||||||
@ -9691,10 +9668,11 @@ sub prepareSendData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
### Schnappschüsse mit Synology Chat versenden
|
### Schnappschüsse mit Synology Chat versenden
|
||||||
##############################################
|
# snapChatTxt aus $hash->{HELPER}{CHATMSG}
|
||||||
|
# Format in $hash->{HELPER}{CHATMSG} muss sein: snapChatTxt:"chatbot => <SSChatBot Device>,
|
||||||
|
# peers => <peer1 peer2 ..>, subject => <Beschreibungstext>"
|
||||||
|
#############################################################################################
|
||||||
if($OpMode =~ /^getsnap/x && $hash->{HELPER}{CANCHATSNAP}) {
|
if($OpMode =~ /^getsnap/x && $hash->{HELPER}{CANCHATSNAP}) {
|
||||||
# snapChatTxt aus $hash->{HELPER}{CHATMSG}
|
|
||||||
# Format in $hash->{HELPER}{CHATMSG} muss sein: snapChatTxt:"chatbot => <SSChatBot Device>, peers => <peer1 peer2 ..>, subject => <Beschreibungstext>"
|
|
||||||
delete $hash->{HELPER}{CANCHATSNAP};
|
delete $hash->{HELPER}{CANCHATSNAP};
|
||||||
$data{SSCam}{$name}{SENDCOUNT}{$tac}++;
|
$data{SSCam}{$name}{SENDCOUNT}{$tac}++;
|
||||||
|
|
||||||
@ -9725,10 +9703,11 @@ sub prepareSendData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
### Aufnahmen mit Synology Chat versenden
|
### Aufnahmen mit Synology Chat versenden
|
||||||
#########################################
|
# recChatTxt aus $hash->{HELPER}{CHATRECMSG}
|
||||||
|
# Format in $hash->{HELPER}{CHATRECMSG} muss sein: chatbot => <SSChatBot Device>,
|
||||||
|
# peers => <peer1 peer2 ..>, subject => <Beschreibungstext>
|
||||||
|
###################################################################################
|
||||||
if($OpMode =~ /^GetRec/x && $hash->{HELPER}{CANCHATREC}) {
|
if($OpMode =~ /^GetRec/x && $hash->{HELPER}{CANCHATREC}) {
|
||||||
# recChatTxt aus $hash->{HELPER}{CHATRECMSG}
|
|
||||||
# Format in $hash->{HELPER}{CHATRECMSG} muss sein: chatbot => <SSChatBot Device>, peers => <peer1 peer2 ..>, subject => <Beschreibungstext>
|
|
||||||
delete $hash->{HELPER}{CANCHATREC};
|
delete $hash->{HELPER}{CANCHATREC};
|
||||||
$data{SSCam}{$name}{SENDCOUNT}{$tac}++;
|
$data{SSCam}{$name}{SENDCOUNT}{$tac}++;
|
||||||
|
|
||||||
@ -10096,14 +10075,16 @@ sub _prepSendTelegram {
|
|||||||
my $time = $paref->{time};
|
my $time = $paref->{time};
|
||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
|
|
||||||
my ($tbott,$peert,$subjt);
|
my ($tbott,$peert,$subjt,$optt);
|
||||||
|
|
||||||
$mt =~ s/['"]//gx;
|
$mt =~ s/['"]//gx;
|
||||||
|
|
||||||
my ($telebot,$peers,$subj) = split(",", $mt, 3 );
|
my ($telebot, $peers, $subj, $opt) = split ",", $mt, 4;
|
||||||
$tbott = (split("=>", $telebot))[1] if($telebot);
|
|
||||||
$peert = (split("=>", $peers ))[1] if($peers);
|
$tbott = (split "=>", $telebot)[1] if($telebot);
|
||||||
$subjt = (split("=>", $subj ))[1] if($subj);
|
$peert = (split "=>", $peers )[1] if($peers);
|
||||||
|
$subjt = (split "=>", $subj )[1] if($subj);
|
||||||
|
$optt = (split "=>", $opt )[1] if($opt);
|
||||||
|
|
||||||
$tbott = trim($tbott) if($tbott);
|
$tbott = trim($tbott) if($tbott);
|
||||||
$peert = trim($peert) if($peert);
|
$peert = trim($peert) if($peert);
|
||||||
@ -10119,6 +10100,7 @@ sub _prepSendTelegram {
|
|||||||
$telemsg{tbot} = "$tbott" if($tbott);
|
$telemsg{tbot} = "$tbott" if($tbott);
|
||||||
$telemsg{peers} = "$peert" if($peert);
|
$telemsg{peers} = "$peert" if($peert);
|
||||||
$telemsg{subject} = "$subjt" if($subjt);
|
$telemsg{subject} = "$subjt" if($subjt);
|
||||||
|
$telemsg{option} = "$optt" if($optt);
|
||||||
|
|
||||||
return \%telemsg;
|
return \%telemsg;
|
||||||
}
|
}
|
||||||
@ -10150,6 +10132,7 @@ sub _sendTelegram {
|
|||||||
'vdat' => { 'default'=>'', 'required'=>0, 'set'=>1}, # Hashref der Videodaten
|
'vdat' => { 'default'=>'', 'required'=>0, 'set'=>1}, # Hashref der Videodaten
|
||||||
'telebot' => { 'default'=>'', 'required'=>1, 'set'=>1}, # TelegramBot-Device welches zum Senden verwendet werden soll
|
'telebot' => { 'default'=>'', 'required'=>1, 'set'=>1}, # TelegramBot-Device welches zum Senden verwendet werden soll
|
||||||
'peers' => { 'default'=>'', 'required'=>0, 'set'=>1}, # TelegramBot Peers
|
'peers' => { 'default'=>'', 'required'=>0, 'set'=>1}, # TelegramBot Peers
|
||||||
|
'option' => { 'default'=>'', 'required'=>0, 'set'=>1}, # TelegramBot Sendeoptionen
|
||||||
'MediaStream' => { 'default'=>'', 'required'=>0, 'set'=>1}, # Code für MediaStream im TelegramBot (png/jpg = -1)
|
'MediaStream' => { 'default'=>'', 'required'=>0, 'set'=>1}, # Code für MediaStream im TelegramBot (png/jpg = -1)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -10163,8 +10146,8 @@ sub _sendTelegram {
|
|||||||
$data{SSCam}{$name}{PARAMS}{$tac}{$key} = delete $extparamref->{$key} if(exists $extparamref->{$key});
|
$data{SSCam}{$name}{PARAMS}{$tac}{$key} = delete $extparamref->{$key} if(exists $extparamref->{$key});
|
||||||
}
|
}
|
||||||
|
|
||||||
Log3($name, 4, "$name - param $key is set to \"".($data{SSCam}{$name}{PARAMS}{$tac}{$key} // "")."\" ") if($key !~ /[sv]dat/x);
|
Log3 ($name, 4, "$name - param $key is set to \"".($data{SSCam}{$name}{PARAMS}{$tac}{$key} // "")."\" ") if($key !~ /[sv]dat/x);
|
||||||
Log3($name, 4, "$name - param $key is set") if($key =~ /[sv]dat/x && $data{SSCam}{$name}{PARAMS}{$tac}{$key} ne '');
|
Log3 ($name, 4, "$name - param $key is set") if($key =~ /[sv]dat/x && $data{SSCam}{$name}{PARAMS}{$tac}{$key} ne '');
|
||||||
}
|
}
|
||||||
|
|
||||||
$data{SSCam}{$name}{PARAMS}{$tac}{name} = $name;
|
$data{SSCam}{$name}{PARAMS}{$tac}{name} = $name;
|
||||||
@ -10173,12 +10156,16 @@ sub _sendTelegram {
|
|||||||
for my $key (keys(%teleparams)) {
|
for my $key (keys(%teleparams)) {
|
||||||
push(@err, $key) if ($teleparams{$key}->{required} && !$data{SSCam}{$name}{PARAMS}{$tac}{$key});
|
push(@err, $key) if ($teleparams{$key}->{required} && !$data{SSCam}{$name}{PARAMS}{$tac}{$key});
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($#err >= 0) {
|
if ($#err >= 0) {
|
||||||
$ret = "Missing at least one required parameter or attribute: ".join(', ',@err);
|
$ret = "Missing at least one required parameter or attribute: ".join(', ',@err);
|
||||||
Log3($name, 2, "$name - $ret");
|
|
||||||
readingsBeginUpdate($hash);
|
Log3 ($name, 2, "$name - $ret");
|
||||||
readingsBulkUpdate($hash,"sendTeleState",$ret);
|
|
||||||
readingsEndUpdate($hash, 1);
|
readingsBeginUpdate ($hash);
|
||||||
|
readingsBulkUpdate ($hash, 'sendTeleState', $ret);
|
||||||
|
readingsEndUpdate ($hash, 1);
|
||||||
|
|
||||||
$data{SSCam}{$name}{SENDCOUNT}{$tac} -= 1;
|
$data{SSCam}{$name}{SENDCOUNT}{$tac} -= 1;
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
@ -10188,18 +10175,25 @@ sub _sendTelegram {
|
|||||||
|
|
||||||
if(!$defs{$telebot}) {
|
if(!$defs{$telebot}) {
|
||||||
$ret = "No TelegramBot device \"$telebot\" available";
|
$ret = "No TelegramBot device \"$telebot\" available";
|
||||||
|
|
||||||
readingsSingleUpdate($hash, "sendTeleState", $ret, 1);
|
readingsSingleUpdate($hash, "sendTeleState", $ret, 1);
|
||||||
Log3($name, 2, "$name - $ret");
|
|
||||||
|
Log3 ($name, 2, "$name - $ret");
|
||||||
|
|
||||||
$data{SSCam}{$name}{SENDCOUNT}{$tac} -= 1;
|
$data{SSCam}{$name}{SENDCOUNT}{$tac} -= 1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!$peers) {
|
if(!$peers) {
|
||||||
$peers = AttrVal($telebot,"defaultPeer", "");
|
$peers = AttrVal($telebot,"defaultPeer", "");
|
||||||
|
|
||||||
if(!$peers) {
|
if(!$peers) {
|
||||||
$ret = "No peers of TelegramBot device \"$telebot\" found";
|
$ret = "No peers of TelegramBot device \"$telebot\" found";
|
||||||
|
|
||||||
readingsSingleUpdate($hash, "sendTeleState", $ret, 1);
|
readingsSingleUpdate($hash, "sendTeleState", $ret, 1);
|
||||||
|
|
||||||
Log3($name, 2, "$name - $ret");
|
Log3($name, 2, "$name - $ret");
|
||||||
|
|
||||||
$data{SSCam}{$name}{SENDCOUNT}{$tac} -= 1;
|
$data{SSCam}{$name}{SENDCOUNT}{$tac} -= 1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -10207,83 +10201,111 @@ sub _sendTelegram {
|
|||||||
|
|
||||||
if(!$data{SSCam}{$name}{PARAMS}{$tac}{sdat} && !$data{SSCam}{$name}{PARAMS}{$tac}{vdat}) {
|
if(!$data{SSCam}{$name}{PARAMS}{$tac}{sdat} && !$data{SSCam}{$name}{PARAMS}{$tac}{vdat}) {
|
||||||
$ret = "no video or image data existing for send process by TelegramBot \"$telebot\" ";
|
$ret = "no video or image data existing for send process by TelegramBot \"$telebot\" ";
|
||||||
|
|
||||||
readingsSingleUpdate($hash, "sendTeleState", $ret, 1);
|
readingsSingleUpdate($hash, "sendTeleState", $ret, 1);
|
||||||
Log3($name, 2, "$name - $ret");
|
|
||||||
|
Log3 ($name, 2, "$name - $ret");
|
||||||
|
|
||||||
$data{SSCam}{$name}{SENDCOUNT}{$tac} -= 1;
|
$data{SSCam}{$name}{SENDCOUNT}{$tac} -= 1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
my ($msg,$subject,$MediaStream,$fname,@as,%seen,@unique);
|
my $options = '';
|
||||||
|
my @opta = split ' ', $data{SSCam}{$name}{PARAMS}{$tac}{option};
|
||||||
|
|
||||||
$cache = cache($name, "c_init"); # Cache initialisieren
|
if (@opta) {
|
||||||
Log3($name, 1, "$name - Fall back to internal Cache due to preceding failure.") if(!$cache);
|
|
||||||
|
|
||||||
if(!$cache || $cache eq "internal" ) {
|
for my $o (@opta) {
|
||||||
if($data{SSCam}{$name}{PARAMS}{$tac}{sdat}) { # Images liegen in einem Hash (Ref in $sdat) base64-codiert vor
|
$options .= " -$o-"
|
||||||
@as = sort{$b<=>$a}keys%{$data{SSCam}{$name}{PARAMS}{$tac}{sdat}};
|
}
|
||||||
} elsif($data{SSCam}{$name}{PARAMS}{$tac}{vdat}) { # Aufnahmen liegen in einem Hash-Ref in $vdat vor
|
|
||||||
@as = sort{$b<=>$a}keys%{$data{SSCam}{$name}{PARAMS}{$tac}{vdat}};
|
|
||||||
}
|
|
||||||
for my $key (@as) {
|
|
||||||
($msg,$subject,$MediaStream,$fname) = __extractForTelegram($name,$key,$data{SSCam}{$name}{PARAMS}{$tac});
|
|
||||||
$ret = __TBotSendIt($defs{$telebot}, $name, $fname, $peers, $msg, $subject, $MediaStream, undef, "");
|
|
||||||
if($ret) {
|
|
||||||
readingsSingleUpdate($hash, "sendTeleState", $ret, 1);
|
|
||||||
Log3($name, 2, "$name - ERROR: $ret");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$ret = "Telegram message [$key] of transaction \"$tac\" sent to \"$peers\" by \"$telebot\" ";
|
|
||||||
readingsSingleUpdate($hash, "sendTeleState", $ret, 1);
|
|
||||||
Log3($name, 3, "$name - $ret");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$data{SSCam}{$name}{SENDCOUNT}{$tac} -= 1;
|
|
||||||
Log3($name, 1, "$name - Send Counter transaction \"$tac\": ".$data{SSCam}{$name}{SENDCOUNT}{$tac}) if(AttrVal($name,"debugactivetoken",0));
|
|
||||||
|
|
||||||
}
|
$options .= ' ';
|
||||||
else {
|
}
|
||||||
# alle Serial Numbers "{$sn}" der Transaktion ermitteln
|
|
||||||
if($data{SSCam}{$name}{PARAMS}{$tac}{sdat}) { # Images liegen in einem Hash (Ref in $sdat) base64-codiert vor
|
|
||||||
extractTIDfromCache ( { name => $name,
|
|
||||||
tac => $tac,
|
|
||||||
media => "SENDSNAPS",
|
|
||||||
mode => "serial",
|
|
||||||
aref => \@as
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
} elsif($data{SSCam}{$name}{PARAMS}{$tac}{vdat}) { # Aufnahmen liegen in einem Hash-Ref in $vdat vor
|
my ($msg,$subject,$MediaStream,$fname,@as,%seen,@unique);
|
||||||
extractTIDfromCache ( { name => $name,
|
|
||||||
tac => $tac,
|
|
||||||
media => "SENDRECS",
|
|
||||||
mode => "serial",
|
|
||||||
aref => \@as
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@unique = sort{$b<=>$a} grep { !$seen{$_}++ } @as; # distinct / unique the keys
|
$cache = cache($name, "c_init"); # Cache initialisieren
|
||||||
|
|
||||||
for my $key (@unique) {
|
Log3 ($name, 1, "$name - Fall back to internal Cache due to preceding failure.") if(!$cache);
|
||||||
($msg,$subject,$MediaStream,$fname) = __extractForTelegram($name,$key,$data{SSCam}{$name}{PARAMS}{$tac});
|
|
||||||
$ret = __TBotSendIt($defs{$telebot}, $name, $fname, $peers, $msg, $subject, $MediaStream, undef, "");
|
|
||||||
if($ret) {
|
|
||||||
readingsSingleUpdate($hash, "sendTeleState", $ret, 1);
|
|
||||||
Log3($name, 2, "$name - ERROR: $ret");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$ret = "Telegram message [$key] of transaction \"$tac\" sent to \"$peers\" by \"$telebot\" ";
|
|
||||||
readingsSingleUpdate($hash, "sendTeleState", $ret, 1);
|
|
||||||
Log3($name, 3, "$name - $ret");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$data{SSCam}{$name}{SENDCOUNT}{$tac} -= 1;
|
|
||||||
Log3($name, 1, "$name - Send Counter transaction \"$tac\": ".$data{SSCam}{$name}{SENDCOUNT}{$tac}) if(AttrVal($name,"debugactivetoken",0));
|
|
||||||
}
|
|
||||||
|
|
||||||
undef %teleparams;
|
if(!$cache || $cache eq "internal" ) {
|
||||||
undef %{$extparamref};
|
if($data{SSCam}{$name}{PARAMS}{$tac}{sdat}) { # Images liegen in einem Hash (Ref in $sdat) base64-codiert vor
|
||||||
undef $msg;
|
@as = sort{$b<=>$a}keys%{$data{SSCam}{$name}{PARAMS}{$tac}{sdat}};
|
||||||
|
}
|
||||||
|
elsif($data{SSCam}{$name}{PARAMS}{$tac}{vdat}) { # Aufnahmen liegen in einem Hash-Ref in $vdat vor
|
||||||
|
@as = sort{$b<=>$a}keys%{$data{SSCam}{$name}{PARAMS}{$tac}{vdat}};
|
||||||
|
}
|
||||||
|
|
||||||
|
for my $key (@as) {
|
||||||
|
($msg,$subject,$MediaStream,$fname) = __extractForTelegram($name,$key,$data{SSCam}{$name}{PARAMS}{$tac});
|
||||||
|
$ret = __TBotSendIt($defs{$telebot}, $name, $fname, $peers, $msg, $subject, $MediaStream, undef, $options);
|
||||||
|
|
||||||
|
if($ret) {
|
||||||
|
readingsSingleUpdate($hash, "sendTeleState", $ret, 1);
|
||||||
|
|
||||||
|
Log3 ($name, 2, "$name - ERROR: $ret");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$ret = "Telegram message [$key] of transaction \"$tac\" sent to \"$peers\" by \"$telebot\" ";
|
||||||
|
readingsSingleUpdate($hash, "sendTeleState", $ret, 1);
|
||||||
|
|
||||||
|
Log3 ($name, 3, "$name - $ret");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$data{SSCam}{$name}{SENDCOUNT}{$tac} -= 1;
|
||||||
|
|
||||||
|
Log3 ($name, 1, "$name - Send Counter transaction \"$tac\": ".$data{SSCam}{$name}{SENDCOUNT}{$tac}) if(AttrVal($name,"debugactivetoken",0));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
# alle Serial Numbers "{$sn}" der Transaktion ermitteln
|
||||||
|
if($data{SSCam}{$name}{PARAMS}{$tac}{sdat}) { # Images liegen in einem Hash (Ref in $sdat) base64-codiert vor
|
||||||
|
extractTIDfromCache ( { name => $name,
|
||||||
|
tac => $tac,
|
||||||
|
media => "SENDSNAPS",
|
||||||
|
mode => "serial",
|
||||||
|
aref => \@as
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
elsif($data{SSCam}{$name}{PARAMS}{$tac}{vdat}) { # Aufnahmen liegen in einem Hash-Ref in $vdat vor
|
||||||
|
extractTIDfromCache ( { name => $name,
|
||||||
|
tac => $tac,
|
||||||
|
media => "SENDRECS",
|
||||||
|
mode => "serial",
|
||||||
|
aref => \@as
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@unique = sort{$b<=>$a} grep { !$seen{$_}++ } @as; # distinct / unique the keys
|
||||||
|
|
||||||
|
for my $key (@unique) {
|
||||||
|
($msg,$subject,$MediaStream,$fname) = __extractForTelegram($name,$key,$data{SSCam}{$name}{PARAMS}{$tac});
|
||||||
|
$ret = __TBotSendIt($defs{$telebot}, $name, $fname, $peers, $msg, $subject, $MediaStream, undef, $options);
|
||||||
|
|
||||||
|
if($ret) {
|
||||||
|
readingsSingleUpdate($hash, "sendTeleState", $ret, 1);
|
||||||
|
|
||||||
|
Log3 ($name, 2, "$name - ERROR: $ret");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$ret = "Telegram message [$key] of transaction \"$tac\" sent to \"$peers\" by \"$telebot\" ";
|
||||||
|
|
||||||
|
readingsSingleUpdate($hash, "sendTeleState", $ret, 1);
|
||||||
|
|
||||||
|
Log3 ($name, 3, "$name - $ret");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$data{SSCam}{$name}{SENDCOUNT}{$tac} -= 1;
|
||||||
|
|
||||||
|
Log3 ($name, 1, "$name - Send Counter transaction \"$tac\": ".$data{SSCam}{$name}{SENDCOUNT}{$tac}) if(AttrVal($name,"debugactivetoken",0));
|
||||||
|
}
|
||||||
|
|
||||||
|
undef %teleparams;
|
||||||
|
undef %{$extparamref};
|
||||||
|
undef $msg;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -10655,18 +10677,20 @@ return (0,undef);
|
|||||||
###############################################################################
|
###############################################################################
|
||||||
sub _prepSendMail {
|
sub _prepSendMail {
|
||||||
my $paref = shift;
|
my $paref = shift;
|
||||||
|
|
||||||
my $hash = $paref->{hash};
|
my $hash = $paref->{hash};
|
||||||
my $calias = $paref->{calias};
|
my $calias = $paref->{calias};
|
||||||
my $mt = $paref->{mt};
|
my $mt = $paref->{mt};
|
||||||
my $date = $paref->{date};
|
my $date = $paref->{date};
|
||||||
my $time = $paref->{time};
|
my $time = $paref->{time};
|
||||||
|
|
||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
|
|
||||||
$mt =~ s/['"]//gx;
|
$mt =~ s/['"]//gx;
|
||||||
|
|
||||||
my($subj,$body) = split ",", $mt, 2;
|
my ($subj,$body) = split ",", $mt, 2;
|
||||||
my $subjt = (split "=>", $subj)[1];
|
my $subjt = (split "=>", $subj)[1];
|
||||||
my $bodyt = (split "=>", $body)[1];
|
my $bodyt = (split "=>", $body)[1];
|
||||||
|
|
||||||
$subjt = trim($subjt);
|
$subjt = trim($subjt);
|
||||||
$subjt =~ s/[\$#]CAM/$calias/gx;
|
$subjt =~ s/[\$#]CAM/$calias/gx;
|
||||||
@ -10738,9 +10762,9 @@ sub _sendEmail {
|
|||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
Log3($name, 4, "$name - version of loaded module \"$m1\" is \"$vm1\"");
|
Log3 ($name, 4, "$name - version of loaded module \"$m1\" is \"$vm1\"");
|
||||||
Log3($name, 4, "$name - version of \"$m1\" is too old. Use SSL-fallback module \"$m3\" with version \"$vm3\"") if($sslfb && $vm3);
|
Log3 ($name, 4, "$name - version of \"$m1\" is too old. Use SSL-fallback module \"$m3\" with version \"$vm3\"") if($sslfb && $vm3);
|
||||||
Log3($name, 4, "$name - version of loaded module \"$m2\" is \"$vm2\"");
|
Log3 ($name, 4, "$name - version of loaded module \"$m2\" is \"$vm2\"");
|
||||||
|
|
||||||
my %mailparams = (
|
my %mailparams = (
|
||||||
'smtpFrom' => {'attr'=>'smtpFrom', 'default'=>'', 'required'=>1, 'set'=>1},
|
'smtpFrom' => {'attr'=>'smtpFrom', 'default'=>'', 'required'=>1, 'set'=>1},
|
||||||
@ -10775,8 +10799,9 @@ sub _sendEmail {
|
|||||||
$data{SSCam}{$name}{PARAMS}{$tac}{$key} = $mailparams{$key}->{default} if (!$extparamref->{$key} && !$mailparams{$key}->{attr});
|
$data{SSCam}{$name}{PARAMS}{$tac}{$key} = $mailparams{$key}->{default} if (!$extparamref->{$key} && !$mailparams{$key}->{attr});
|
||||||
$data{SSCam}{$name}{PARAMS}{$tac}{$key} = delete $extparamref->{$key} if (exists $extparamref->{$key});
|
$data{SSCam}{$name}{PARAMS}{$tac}{$key} = delete $extparamref->{$key} if (exists $extparamref->{$key});
|
||||||
}
|
}
|
||||||
Log3($name, 4, "$name - param $key is now \"".$data{SSCam}{$name}{PARAMS}{$tac}{$key}."\" ") if($key !~ /sdat/x);
|
|
||||||
Log3($name, 4, "$name - param $key is set") if($key =~ /sdat/x && $data{SSCam}{$name}{PARAMS}{$tac}{$key} ne '');
|
Log3 ($name, 4, "$name - param $key is now \"".$data{SSCam}{$name}{PARAMS}{$tac}{$key}."\" ") if($key !~ /sdat/x);
|
||||||
|
Log3 ($name, 4, "$name - param $key is set") if($key =~ /sdat/x && $data{SSCam}{$name}{PARAMS}{$tac}{$key} ne '');
|
||||||
}
|
}
|
||||||
|
|
||||||
$data{SSCam}{$name}{PARAMS}{$tac}{name} = $name;
|
$data{SSCam}{$name}{PARAMS}{$tac}{name} = $name;
|
||||||
@ -10785,6 +10810,7 @@ sub _sendEmail {
|
|||||||
for my $key (keys(%mailparams)) {
|
for my $key (keys(%mailparams)) {
|
||||||
push(@err, $key) if ($mailparams{$key}->{required} && !$data{SSCam}{$name}{PARAMS}{$tac}{$key});
|
push(@err, $key) if ($mailparams{$key}->{required} && !$data{SSCam}{$name}{PARAMS}{$tac}{$key});
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($#err >= 0) {
|
if ($#err >= 0) {
|
||||||
$ret = "Missing at least one required parameter or attribute: ".join(', ',@err);
|
$ret = "Missing at least one required parameter or attribute: ".join(', ',@err);
|
||||||
Log3($name, 2, "$name - $ret");
|
Log3($name, 2, "$name - $ret");
|
||||||
@ -15545,12 +15571,13 @@ attr <name> genericStrmHtmlTag <img $HTMLATTR
|
|||||||
</li>
|
</li>
|
||||||
|
|
||||||
<a name="recTelegramTxt"></a>
|
<a name="recTelegramTxt"></a>
|
||||||
<li><b>recTelegramTxt tbot => <TelegramBot-Device>, peers => [<peer1 peer2 ...>], subject => [<Betreff-Text>] </b><br>
|
<li><b>recTelegramTxt tbot => <TelegramBot-Device>, peers => [<peer1 peer2 ...>], subject => [<Betreff-Text>], [option => silent] </b><br>
|
||||||
Aktiviert den permanenten Versand von Aufnahmen nach deren Erstellung per TelegramBot. <br>
|
Aktiviert den permanenten Versand von Aufnahmen nach deren Erstellung per TelegramBot. <br>
|
||||||
Das Attribut muß in der angegebenen Form definiert werden. Im Schlüssel "tbot" ist das TelegramBot-Device
|
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.
|
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>
|
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.
|
Die Angabe von "peers" und "subject" ist optional, jedoch muß der Schlüssel (leer) angegeben werden. <br>
|
||||||
|
Durch die optionale Angabe von "option => silent" wird die Signalisierung beim Empfänger unterdrückt. <br>
|
||||||
Wurde "peers" leer gelassen, wird der Default-Peer des TelegramBot-Device verwendet. <br><br>
|
Wurde "peers" leer gelassen, wird der Default-Peer des TelegramBot-Device verwendet. <br><br>
|
||||||
|
|
||||||
Es können die folgenden Platzhalter im subject verwendet werden. <br><br>
|
Es können die folgenden Platzhalter im subject verwendet werden. <br><br>
|
||||||
@ -15573,6 +15600,7 @@ attr <name> genericStrmHtmlTag <img $HTMLATTR
|
|||||||
attr <device> recTelegramTxt tbot => teleBot, peers => #nabugroup, subject => <br>
|
attr <device> recTelegramTxt tbot => teleBot, peers => #nabugroup, subject => <br>
|
||||||
attr <device> recTelegramTxt tbot => teleBot, peers => -123456, subject => <br>
|
attr <device> recTelegramTxt tbot => teleBot, peers => -123456, subject => <br>
|
||||||
attr <device> recTelegramTxt tbot => teleBot, peers => , subject => <br>
|
attr <device> recTelegramTxt tbot => teleBot, peers => , subject => <br>
|
||||||
|
attr <device> recTelegramTxt tbot => teleBot, peers => , subject => ohne Signalisierung, option => silent <br>
|
||||||
attr <device> recTelegramTxt tbot => teleBot, peers => , subject => Bewegungsalarm bei $CAM. Es wurde $CTIME die Aufnahme $FILE erstellt. Jetzt ist es $TIME. <br>
|
attr <device> recTelegramTxt tbot => teleBot, peers => , subject => Bewegungsalarm bei $CAM. Es wurde $CTIME die Aufnahme $FILE erstellt. Jetzt ist es $TIME. <br>
|
||||||
<br>
|
<br>
|
||||||
</li><br>
|
</li><br>
|
||||||
@ -15714,13 +15742,14 @@ attr <name> genericStrmHtmlTag <img $HTMLATTR
|
|||||||
</li>
|
</li>
|
||||||
|
|
||||||
<a name="snapTelegramTxt"></a>
|
<a name="snapTelegramTxt"></a>
|
||||||
<li><b>snapTelegramTxt tbot => <TelegramBot-Device>, peers => [<peer1 peer2 ...>], subject => [<Betreff-Text>] </b><br>
|
<li><b>snapTelegramTxt tbot => <TelegramBot-Device>, peers => [<peer1 peer2 ...>], subject => [<Betreff-Text>], [option => silent] </b><br>
|
||||||
Aktiviert den permanenten Versand von Schnappschüssen nach deren Erstellung per TelegramBot. Wurden mehrere Schnappschüsse ausgelöst,
|
Aktiviert den permanenten Versand von Schnappschüssen nach deren Erstellung per TelegramBot. Wurden mehrere Schnappschüsse ausgelöst,
|
||||||
werden sie sequentiell versendet.<br>
|
werden sie sequentiell versendet.<br>
|
||||||
Das Attribut muß in der angegebenen Form definiert werden. Im Schlüssel "tbot" ist das TelegramBot-Device
|
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.
|
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>
|
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.
|
Die Angabe von "peers" und "subject" ist optional, jedoch muß der Schlüssel (leer) angegeben werden. <br>
|
||||||
|
Durch die optionale Angabe von "option => silent" wird die Signalisierung beim Empfänger unterdrückt. <br>
|
||||||
Wurde "peer" leer gelassen, wird der Default-Peer des TelegramBot-Devices verwendet. <br><br>
|
Wurde "peer" leer gelassen, wird der Default-Peer des TelegramBot-Devices verwendet. <br><br>
|
||||||
|
|
||||||
Es können folgende Platzhalter im subject verwendet werden. <br><br>
|
Es können folgende Platzhalter im subject verwendet werden. <br><br>
|
||||||
@ -15743,6 +15772,7 @@ attr <name> genericStrmHtmlTag <img $HTMLATTR
|
|||||||
attr <device> snapTelegramTxt tbot => teleBot, peers => #nabugroup, subject => <br>
|
attr <device> snapTelegramTxt tbot => teleBot, peers => #nabugroup, subject => <br>
|
||||||
attr <device> snapTelegramTxt tbot => teleBot, peers => -123456, subject => <br>
|
attr <device> snapTelegramTxt tbot => teleBot, peers => -123456, subject => <br>
|
||||||
attr <device> snapTelegramTxt tbot => teleBot, peers => , subject => <br>
|
attr <device> snapTelegramTxt tbot => teleBot, peers => , subject => <br>
|
||||||
|
attr <device> snapTelegramTxt tbot => teleBot, peers => , subject => ohne Signalisierung, option => silent <br>
|
||||||
attr <device> snapTelegramTxt tbot => teleBot, peers => , subject => Bewegungsalarm bei $CAM. Es wurde $CTIME der Schnappschuss $FILE erstellt <br>
|
attr <device> snapTelegramTxt tbot => teleBot, peers => , subject => Bewegungsalarm bei $CAM. Es wurde $CTIME der Schnappschuss $FILE erstellt <br>
|
||||||
<br>
|
<br>
|
||||||
</li><br>
|
</li><br>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user