2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-29 23:47:10 +00:00

49_SSCam: contrib 9.11.0

git-svn-id: https://svn.fhem.de/fhem/trunk@27223 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2023-02-14 12:37:28 +00:00
parent 0160d76b08
commit b2fdf2c67b

View File

@ -1,5 +1,5 @@
########################################################################################################################
# $Id: 49_SSCam.pm 27103 2023-02-13 17:50:30Z DS_Starter $
# $Id: 49_SSCam.pm 27103 2023-02-14 17:50:30Z DS_Starter $
#########################################################################################################################
# 49_SSCam.pm
#
@ -31,6 +31,12 @@
# Example of defining a Cam-device: define CamCP1 SSCAM Carport 192.168.2.20 [5000] [HTTP(S)]
# Example of defining a SVS-device: define SDS1 SSCAM SVS 192.168.2.20 [5000] [HTTP(S)]
#
#########################################################################################################################
#
# Leerzeichen entfernen: sed -i 's/[[:space:]]*$//' FHEM/49_SSCam.pm
# Commandref prüfen: sudo perl contrib/commandref_join.pl FHEM/49_SSCam.pm
#
#########################################################################################################################
package FHEM::SSCam; ## no critic 'package'
@ -186,7 +192,7 @@ BEGIN {
# Versions History intern
my %vNotesIntern = (
"9.11.0" => "13.02.2023 Telegram send attributes extended by key option => silent ",
"9.11.0" => "14.02.2023 Telegram send attributes extended by key option => silent, peer can be fetch from r:<reading> ",
"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.7" => "02.08.2022 allow placeholders #CAM, #DATE, #TIME, #FILE, #CTIME (also for Email) ",
@ -9816,7 +9822,7 @@ sub _sendChat {
$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 '');
}
@ -10068,11 +10074,13 @@ return ($subject,$fname);
###############################################################################
sub _prepSendTelegram {
my $paref = shift;
my $hash = $paref->{hash};
my $calias = $paref->{calias};
my $mt = $paref->{mt};
my $date = $paref->{date};
my $time = $paref->{time};
my $name = $hash->{NAME};
my ($tbott,$peert,$subjt,$optt);
@ -10086,8 +10094,8 @@ sub _prepSendTelegram {
$subjt = (split "=>", $subj )[1] if($subj);
$optt = (split "=>", $opt )[1] if($opt);
$tbott = trim($tbott) if($tbott);
$peert = trim($peert) if($peert);
$tbott = trim ($tbott) if($tbott);
$peert = trim ($peert) if($peert);
if($subjt) {
$subjt = trim($subjt);
@ -10119,34 +10127,34 @@ sub _sendTelegram {
Log3($name, 4, "$name - ####################################################");
my %teleparams = (
'subject' => { 'default'=>'', 'required'=>0, 'set'=>1},
'part1type' => { 'default'=>'text/html; 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}, # Hashref der Bilddaten (Bilddaten 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'=>'', '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}, # Hashref der Videodaten
'telebot' => { 'default'=>'', 'required'=>1, 'set'=>1}, # TelegramBot-Device welches zum Senden verwendet werden soll
'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)
'subject' => {'attr'=>'', 'default'=>'', 'required'=>0, 'set'=>1},
'part1type' => {'attr'=>'', 'default'=>'text/html; charset=UTF-8', 'required'=>1, 'set'=>1},
'part1txt' => {'attr'=>'', 'default'=>'', 'required'=>0, 'set'=>1},
'part2type' => {'attr'=>'', 'default'=>'', 'required'=>0, 'set'=>1},
'sdat' => {'attr'=>'', 'default'=>'', 'required'=>0, 'set'=>1}, # Hashref der Bilddaten (Bilddaten base64 codiert), wenn gesetzt muss 'part2type' auf 'image/jpeg' gesetzt sein
'image' => {'attr'=>'', 'default'=>'', 'required'=>0, 'set'=>1}, # Daten als File, wenn gesetzt muss 'part2type' auf 'image/jpeg' gesetzt sein
'fname' => {'attr'=>'', 'default'=>'', 'required'=>0, 'set'=>1}, # Filename für "image"
'lsnaptime' => {'attr'=>'', 'default'=>'', 'required'=>0, 'set'=>1}, # Zeitstempel der Bilddaten
'opmode' => {'attr'=>'', 'default'=>'', 'required'=>1, 'set'=>1}, # OpMode muss gesetzt sein
'tac' => {'attr'=>'', 'default'=>'', 'required'=>0, 'set'=>1}, # übermittelter Transaktionscode der ausgewerteten Transaktion
'vdat' => {'attr'=>'', 'default'=>'', 'required'=>0, 'set'=>1}, # Hashref der Videodaten
'telebot' => {'attr'=>'', 'default'=>'', 'required'=>1, 'set'=>1}, # TelegramBot-Device welches zum Senden verwendet werden soll
'peers' => {'attr'=>'', 'default'=>'', 'required'=>0, 'set'=>1}, # TelegramBot Peers
'option' => {'attr'=>'', 'default'=>'', 'required'=>0, 'set'=>1}, # TelegramBot Sendeoptionen
'MediaStream' => {'attr'=>'', 'default'=>'', 'required'=>0, 'set'=>1}, # Code für MediaStream im TelegramBot (png/jpg = -1)
);
my $tac = $extparamref->{tac};
for my $key (keys %teleparams) {
$data{SSCam}{$name}{PARAMS}{$tac}{$key} = AttrVal($name, $teleparams{$key}->{attr}, $teleparams{$key}->{default})
if(exists $teleparams{$key}->{attr});
$data{SSCam}{$name}{PARAMS}{$tac}{$key} = AttrVal ($name, $teleparams{$key}->{attr}, $teleparams{$key}->{default})
if($teleparams{$key}->{attr});
if($teleparams{$key}->{set}) {
$data{SSCam}{$name}{PARAMS}{$tac}{$key} = $teleparams{$key}->{default} if (!$extparamref->{$key} && !$teleparams{$key}->{attr});
$data{SSCam}{$name}{PARAMS}{$tac}{$key} = delete $extparamref->{$key} if(exists $extparamref->{$key});
$data{SSCam}{$name}{PARAMS}{$tac}{$key} = $teleparams{$key}->{default} if(!$extparamref->{$key} && !$teleparams{$key}->{attr});
$data{SSCam}{$name}{PARAMS}{$tac}{$key} = delete $extparamref->{$key} if($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 '');
}
@ -10171,7 +10179,6 @@ sub _sendTelegram {
}
my $telebot = $data{SSCam}{$name}{PARAMS}{$tac}{telebot};
my $peers = $data{SSCam}{$name}{PARAMS}{$tac}{peers};
if(!$defs{$telebot}) {
$ret = "No TelegramBot device \"$telebot\" available";
@ -10184,15 +10191,24 @@ sub _sendTelegram {
return;
}
my $peers = $data{SSCam}{$name}{PARAMS}{$tac}{peers};
if ($peers =~ /^r:/xs) { # Reading mit Empfängern ist hinterlegt
my $pr = (split ':', $peers)[1];
$peers = ReadingsVal ($name, $pr, '');
Log3 ($name, 4, "$name - peers was fetched from reading >$pr<: $peers");
}
if(!$peers) {
$peers = AttrVal($telebot,"defaultPeer", "");
$peers = AttrVal ($telebot, 'defaultPeer', '');
if(!$peers) {
$ret = "No peers of TelegramBot device \"$telebot\" found";
readingsSingleUpdate($hash, "sendTeleState", $ret, 1);
Log3($name, 2, "$name - $ret");
Log3 ($name, 2, "$name - $ret");
$data{SSCam}{$name}{SENDCOUNT}{$tac} -= 1;
return;
@ -10214,7 +10230,6 @@ sub _sendTelegram {
my @opta = split ' ', $data{SSCam}{$name}{PARAMS}{$tac}{option};
if (@opta) {
for my $o (@opta) {
$options .= " -$o-"
}
@ -10800,7 +10815,7 @@ sub _sendEmail {
$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 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 '');
}
@ -13553,6 +13568,7 @@ attr &lt;name&gt; genericStrmHtmlTag &lt;img $HTMLATTR
<colgroup> <col width=20%> <col width=80%> </colgroup>
<tr><td> tbot </td><td> Name of the <a href="http://fhem.de/commandref.html#TelegramBot">TelegramBot-Device</a> </td></tr>
<tr><td> peers </td><td> List of recipients separated by spaces (optional). </td></tr>
<tr><td> </td><td> It can be specified <b>r:&lt;Reading&gt;</b> to read the recipients from the &lt;Reading&gt;. </td></tr>
<tr><td> </td><td> If peers is not specified, the default peer of the TelegramBot device is used. </td></tr>
<tr><td> subject </td><td> the text to be transmitted (optional) </td></tr>
<tr><td> option </td><td> possible TelegramBot sending options described below (optional) </td></tr>
@ -13581,6 +13597,7 @@ attr &lt;name&gt; genericStrmHtmlTag &lt;img $HTMLATTR
attr &lt;device&gt; recTelegramTxt tbot =&gt; teleBot, peers =&gt; #nabugroup, subject =&gt; <br>
attr &lt;device&gt; recTelegramTxt tbot =&gt; teleBot, peers =&gt; -123456, subject =&gt; <br>
attr &lt;device&gt; recTelegramTxt tbot =&gt; teleBot, peers =&gt; , subject =&gt; <br>
attr &lt;device&gt; recTelegramTxt tbot =&gt; teleBot, peers =&gt; r:peerTelegram, subject =&gt; <br>
attr &lt;device&gt; recTelegramTxt tbot =&gt; teleBot, peers =&gt; , subject =&gt; without signalization, option =&gt; silent <br>
attr &lt;device&gt; recTelegramTxt tbot =&gt; teleBot, peers =&gt; , subject =&gt; Motion alarm from $CAM. At $CTIME the recording $FILE was created. Now it is $TIME. <br>
<br>
@ -13734,6 +13751,7 @@ attr &lt;name&gt; genericStrmHtmlTag &lt;img $HTMLATTR
<colgroup> <col width=20%> <col width=80%> </colgroup>
<tr><td> tbot </td><td> Name of the <a href="http://fhem.de/commandref.html#TelegramBot">TelegramBot-Device</a> </td></tr>
<tr><td> peers </td><td> List of recipients separated by spaces (optional). </td></tr>
<tr><td> </td><td> It can be specified <b>r:&lt;Reading&gt;</b> to read the recipients from the &lt;Reading&gt;. </td></tr>
<tr><td> </td><td> If peers is not specified, the default peer of the TelegramBot device is used. </td></tr>
<tr><td> subject </td><td> the text to be transmitted (optional) </td></tr>
<tr><td> option </td><td> possible TelegramBot sending options described below (optional) </td></tr>
@ -13762,6 +13780,7 @@ attr &lt;name&gt; genericStrmHtmlTag &lt;img $HTMLATTR
attr &lt;device&gt; snapTelegramTxt tbot =&gt; teleBot, peers =&gt; #nabugroup, subject =&gt; <br>
attr &lt;device&gt; snapTelegramTxt tbot =&gt; teleBot, peers =&gt; -123456, subject =&gt; <br>
attr &lt;device&gt; snapTelegramTxt tbot =&gt; teleBot, peers =&gt; , subject =&gt; <br>
attr &lt;device&gt; snapTelegramTxt tbot =&gt; teleBot, peers =&gt; r:peerTelegram, subject =&gt; <br>
attr &lt;device&gt; snapTelegramTxt tbot =&gt; teleBot, peers =&gt; , subject =&gt; without signalization, option =&gt; silent <br>
attr &lt;device&gt; snapTelegramTxt tbot =&gt; teleBot, peers =&gt; , subject =&gt; Motion alarm from $CAM. At $CTIME the snapshot $FILE was created <br>
<br>
@ -15619,6 +15638,7 @@ attr &lt;name&gt; genericStrmHtmlTag &lt;img $HTMLATTR
<colgroup> <col width=20%> <col width=80%> </colgroup>
<tr><td> tbot </td><td> Name des <a href="http://fhem.de/commandref_DE.html#TelegramBot">TelegramBot-Device</a> </td></tr>
<tr><td> peers </td><td> Durch Leerzeichen getrennte Liste der Empfänger (optional). </td></tr>
<tr><td> </td><td> Es kann <b>r:&lt;Reading&gt;</b> angegeben werden um die Empfänger aus dem &lt;Reading&gt; zu lesen. </td></tr>
<tr><td> </td><td> Ist peers nicht angegeben, wird der Default-Peer des TelegramBot-Device verwendet. </td></tr>
<tr><td> subject </td><td> der zu übermittelnde Text (optional) </td></tr>
<tr><td> option </td><td> mögliche nachfolgend beschriebene TelegramBot Sendeoptionen (optional) </td></tr>
@ -15647,6 +15667,7 @@ attr &lt;name&gt; genericStrmHtmlTag &lt;img $HTMLATTR
attr &lt;device&gt; recTelegramTxt tbot =&gt; teleBot, peers =&gt; #nabugroup, subject =&gt; <br>
attr &lt;device&gt; recTelegramTxt tbot =&gt; teleBot, peers =&gt; -123456, subject =&gt; <br>
attr &lt;device&gt; recTelegramTxt tbot =&gt; teleBot, peers =&gt; , subject =&gt; <br>
attr &lt;device&gt; recTelegramTxt tbot =&gt; teleBot, peers =&gt; r:peerTelegram, subject =&gt; <br>
attr &lt;device&gt; recTelegramTxt tbot =&gt; teleBot, peers =&gt; , subject =&gt; ohne Signalisierung, option =&gt; silent <br>
attr &lt;device&gt; recTelegramTxt tbot =&gt; teleBot, peers =&gt; , subject =&gt; Bewegungsalarm bei $CAM. Es wurde $CTIME die Aufnahme $FILE erstellt. Jetzt ist es $TIME. <br>
<br>
@ -15802,6 +15823,7 @@ attr &lt;name&gt; genericStrmHtmlTag &lt;img $HTMLATTR
<colgroup> <col width=20%> <col width=80%> </colgroup>
<tr><td> tbot </td><td> Name des <a href="http://fhem.de/commandref_DE.html#TelegramBot">TelegramBot-Device</a> </td></tr>
<tr><td> peers </td><td> Durch Leerzeichen getrennte Liste der Empfänger (optional). </td></tr>
<tr><td> </td><td> Es kann <b>r:&lt;Reading&gt;</b> angegeben werden um die Empfänger aus dem &lt;Reading&gt; zu lesen. </td></tr>
<tr><td> </td><td> Ist peers nicht angegeben, wird der Default-Peer des TelegramBot-Device verwendet. </td></tr>
<tr><td> subject </td><td> der zu übermittelnde Text (optional) </td></tr>
<tr><td> option </td><td> mögliche nachfolgend beschriebene TelegramBot Sendeoptionen (optional) </td></tr>
@ -15830,6 +15852,7 @@ attr &lt;name&gt; genericStrmHtmlTag &lt;img $HTMLATTR
attr &lt;device&gt; snapTelegramTxt tbot =&gt; teleBot, peers =&gt; #nabugroup, subject =&gt; <br>
attr &lt;device&gt; snapTelegramTxt tbot =&gt; teleBot, peers =&gt; -123456, subject =&gt; <br>
attr &lt;device&gt; snapTelegramTxt tbot =&gt; teleBot, peers =&gt; , subject =&gt; <br>
attr &lt;device&gt; snapTelegramTxt tbot =&gt; teleBot, peers =&gt; r:peerTelegram, subject =&gt; <br>
attr &lt;device&gt; snapTelegramTxt tbot =&gt; teleBot, peers =&gt; , subject =&gt; ohne Signalisierung, option =&gt; silent <br>
attr &lt;device&gt; snapTelegramTxt tbot =&gt; teleBot, peers =&gt; , subject =&gt; Bewegungsalarm bei $CAM. Es wurde $CTIME der Schnappschuss $FILE erstellt <br>
<br>