From fbb3787f61cdb447c403fcc4e858f8dc3481c077 Mon Sep 17 00:00:00 2001 From: nasseeder1 Date: Sun, 3 Feb 2019 09:12:02 +0000 Subject: [PATCH] 49_SSCam: V8.8.0, send snapshots integrated by telegram git-svn-id: https://svn.fhem.de/fhem/trunk@18489 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/CHANGED | 1 + fhem/FHEM/49_SSCam.pm | 535 ++++++++++++++++++++++++++++++++++-------- 2 files changed, 442 insertions(+), 94 deletions(-) diff --git a/fhem/CHANGED b/fhem/CHANGED index e26308655..074dbd698 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,6 @@ # 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: V8.8.0, send snapshots integrated by telegram - change: 93_DbRep: running though tableCurrentFillup if database is closed - new: 70_BOTVAC: initial release - feature: 73_AutoShuttersControl: change blocking handle, add privacy drive diff --git a/fhem/FHEM/49_SSCam.pm b/fhem/FHEM/49_SSCam.pm index e25bb6cd6..aa75797b7 100644 --- a/fhem/FHEM/49_SSCam.pm +++ b/fhem/FHEM/49_SSCam.pm @@ -47,7 +47,9 @@ use Encode; # Versions History intern our %SSCam_vNotesIntern = ( - "8.7.1" => "30.01.2019 fix refresh snapgallery device if snap was done by itself", + "8.8.0" => "03.02.2019 send snapshots integrated 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 ", @@ -123,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 ", @@ -358,6 +361,7 @@ sub SSCam_Initialize($) { "smtpTo ". "smtpNoUseSSL:1,0 ". "snapEmailTxt ". + "snapTelegramTxt ". "snapGalleryBoost:0,1 ". "snapGallerySize:Icon,Full ". "snapGalleryNumber:$SSCAM_snum ". @@ -812,8 +816,7 @@ sub SSCam_Set($@) { } elsif ($opt eq "snap" && 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 $emtxt = ""; + my ($num,$lag,$ncount) = (1,2,1); if($prop && $prop =~ /^\d+$/) { # Anzahl der Schnappschüsse zu triggern (default: 1) $num = $prop; $ncount = $prop; @@ -825,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 => , body => - 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\"";} + # Format $emtxt muss sein: snapEmailTxt:"subject => , body => " + if (!$hash->{SMTPCREDENTIALS}) {return "It seems 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 => , peers => , subject => " + $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; @@ -879,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) = ("",""); @@ -886,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\" "); @@ -1702,7 +1735,9 @@ sub SSCam_FWsummaryFn ($$$$) { $alias = $hash->{HELPER}{ALIAS}; $ret .= "$alias
"; $ret .= "$imgstop "; - + $ret .= $imgblank; + $ret .= "$imgdosnap "; + } elsif($wltype eq "hls") { $alias = $hash->{HELPER}{ALIAS}; $ret .= "