From a8ebb76fd8d45955753478ccc6546909e1e8b1b1 Mon Sep 17 00:00:00 2001 From: nasseeder1 Date: Mon, 7 Oct 2019 05:32:25 +0000 Subject: [PATCH] 49_SSCam: internal code changes/optimization git-svn-id: https://svn.fhem.de/fhem/trunk@20326 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/CHANGED | 1 + fhem/FHEM/49_SSCam.pm | 90 ++++++++++++++++++++++--------------------- 2 files changed, 47 insertions(+), 44 deletions(-) diff --git a/fhem/CHANGED b/fhem/CHANGED index 7dc182da7..ad9cf67bf 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. + - change: 49_SSCam: internal code changes/optimization - bugfix: 73_AutoShuttersControl: add condition to attr ASC_autoShuttersControlEvening to window event - feature: 95_Dashboard: new attribute dashboard_hideGroupHeader, path diff --git a/fhem/FHEM/49_SSCam.pm b/fhem/FHEM/49_SSCam.pm index 00043b21c..3c5551a16 100644 --- a/fhem/FHEM/49_SSCam.pm +++ b/fhem/FHEM/49_SSCam.pm @@ -48,6 +48,8 @@ eval "use FHEM::Meta;1" or my $modMetaAbsent = 1; # Versions History intern our %SSCam_vNotesIntern = ( + "8.19.2" => "06.10.2019 delete key/value pairs in SSCam_extractForTelegram and SSCam_sendEmailblocking, ". + "change datacontainer of SNAPHASH(OLD) from %defs to %data ", "8.19.1" => "26.09.2019 set compatibility to 8.2.6 ", "8.19.0" => "21.09.2019 support attr \"hideAudio\" SSCamSTRM-device ", "8.18.2" => "19.09.2019 sample streams changed in comref, support of attr noLink in Streaming-Device ", @@ -5500,9 +5502,9 @@ sub SSCam_camop_parse ($) { my $i = 0; my $sn = 0; - if($hash->{HELPER}{".SNAPHASH"}) { - foreach my $key (sort(keys%{$hash->{HELPER}{".SNAPHASH"}})) { - $hash->{HELPER}{".SNAPHASHOLD"}{$key} = delete($hash->{HELPER}{".SNAPHASH"}{$key}); + if($data{SSCam}{$name}{SNAPHASH}) { + foreach my $key (sort(keys%{$data{SSCam}{$name}{SNAPHASH}})) { + $data{SSCam}{$name}{SNAPHASHOLD}{$key} = delete($data{SSCam}{$name}{SNAPHASH}); } } @@ -5531,10 +5533,10 @@ sub SSCam_camop_parse ($) { Log3($name,4, "$name - Snap '$sn' added to send gallery hash: ID => $snapid, File => $fileName, Created => $createdTm"); # Snaphash erstellen - $hash->{HELPER}{".SNAPHASH"}{$sn}{snapid} = $snapid; - $hash->{HELPER}{".SNAPHASH"}{$sn}{createdTm} = $createdTm; - $hash->{HELPER}{".SNAPHASH"}{$sn}{fileName} = $fileName; - $hash->{HELPER}{".SNAPHASH"}{$sn}{imageData} = $imageData; + $data{SSCam}{$name}{SNAPHASH}{$sn}{snapid} = $snapid; + $data{SSCam}{$name}{SNAPHASH}{$sn}{createdTm} = $createdTm; + $data{SSCam}{$name}{SNAPHASH}{$sn}{fileName} = $fileName; + $data{SSCam}{$name}{SNAPHASH}{$sn}{imageData} = $imageData; Log3($name,4, "$name - Snap '$sn' added to gallery hash: ID => $snapid, File => $fileName, Created => $createdTm"); $sn += 1; @@ -5545,12 +5547,12 @@ sub SSCam_camop_parse ($) { my $ss = $sn; $sn = 0; - if($hash->{HELPER}{".SNAPHASHOLD"} && $sgn > $ss) { + if($data{SSCam}{$name}{SNAPHASHOLD} && $sgn > $ss) { for my $kn ($ss..($sgn-1)) { - $hash->{HELPER}{".SNAPHASH"}{$kn}{snapid} = delete $hash->{HELPER}{".SNAPHASHOLD"}{$sn}{snapid}; - $hash->{HELPER}{".SNAPHASH"}{$kn}{createdTm} = delete $hash->{HELPER}{".SNAPHASHOLD"}{$sn}{createdTm}; - $hash->{HELPER}{".SNAPHASH"}{$kn}{fileName} = delete $hash->{HELPER}{".SNAPHASHOLD"}{$sn}{fileName}; - $hash->{HELPER}{".SNAPHASH"}{$kn}{imageData} = delete $hash->{HELPER}{".SNAPHASHOLD"}{$sn}{imageData}; + $data{SSCam}{$name}{SNAPHASH}{$kn}{snapid} = delete $data{SSCam}{$name}{SNAPHASHOLD}{$sn}{snapid}; + $data{SSCam}{$name}{SNAPHASH}{$kn}{createdTm} = delete $data{SSCam}{$name}{SNAPHASHOLD}{$sn}{createdTm}; + $data{SSCam}{$name}{SNAPHASH}{$kn}{fileName} = delete $data{SSCam}{$name}{SNAPHASHOLD}{$sn}{fileName}; + $data{SSCam}{$name}{SNAPHASH}{$kn}{imageData} = delete $data{SSCam}{$name}{SNAPHASHOLD}{$sn}{imageData}; $sn += 1; } } @@ -5566,9 +5568,9 @@ sub SSCam_camop_parse ($) { $hash->{HELPER}{TOTALCNT} = $data->{data}{total}; # total Anzahl Schnappschüsse - if($hash->{HELPER}{".SNAPHASH"}) { - foreach my $key (sort(keys%{$hash->{HELPER}{".SNAPHASH"}})) { - $hash->{HELPER}{".SNAPHASHOLD"}{$key} = delete($hash->{HELPER}{".SNAPHASH"}{$key}); + if($data{SSCam}{$name}{SNAPHASH}) { + foreach my $key (sort(keys%{$data{SSCam}{$name}{SNAPHASH}})) { + $data{SSCam}{$name}{SNAPHASHOLD}{$key} = delete($data{SSCam}{$name}{SNAPHASH}{$key}); } } @@ -5591,11 +5593,11 @@ sub SSCam_camop_parse ($) { } # Snaphash erstellen - $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 => $hash->{HELPER}{\".SNAPHASH\"}{$sn}{snapid}, File => $hash->{HELPER}{\".SNAPHASH\"}{$sn}{fileName}, Created => $hash->{HELPER}{\".SNAPHASH\"}{$sn}{createdTm}"); + $data{SSCam}{$name}{SNAPHASH}{$sn}{snapid} = $snapid; + $data{SSCam}{$name}{SNAPHASH}{$sn}{createdTm} = $createdTm; + $data{SSCam}{$name}{SNAPHASH}{$sn}{fileName} = $fileName; + $data{SSCam}{$name}{SNAPHASH}{$sn}{imageData} = $imageData; + Log3($name,4, "$name - Snap '$sn' added to gallery hash: ID => $data{SSCam}{$name}{SNAPHASH}{$sn}{snapid}, File => $data{SSCam}{$name}{SNAPHASH}{$sn}{fileName}, Created => $data{SSCam}{$name}{SNAPHASH}{$sn}{createdTm}"); $sn += 1; $i += 1; @@ -5604,12 +5606,12 @@ sub SSCam_camop_parse ($) { my $sgn = AttrVal($name,"snapGalleryNumber",3); my $ss = $sn; $sn = 0; - if($hash->{HELPER}{".SNAPHASHOLD"} && $sgn > $ss) { + if($data{SSCam}{$name}{SNAPHASHOLD} && $sgn > $ss) { for my $kn ($ss..($sgn-1)) { - $hash->{HELPER}{".SNAPHASH"}{$kn}{snapid} = delete $hash->{HELPER}{".SNAPHASHOLD"}{$sn}{snapid}; - $hash->{HELPER}{".SNAPHASH"}{$kn}{createdTm} = delete $hash->{HELPER}{".SNAPHASHOLD"}{$sn}{createdTm}; - $hash->{HELPER}{".SNAPHASH"}{$kn}{fileName} = delete $hash->{HELPER}{".SNAPHASHOLD"}{$sn}{fileName}; - $hash->{HELPER}{".SNAPHASH"}{$kn}{imageData} = delete $hash->{HELPER}{".SNAPHASHOLD"}{$sn}{imageData}; + $data{SSCam}{$name}{SNAPHASH}{$kn}{snapid} = delete $data{SSCam}{$name}{SNAPHASHOLD}{$sn}{snapid}; + $data{SSCam}{$name}{SNAPHASH}{$kn}{createdTm} = delete $data{SSCam}{$name}{SNAPHASHOLD}{$sn}{createdTm}; + $data{SSCam}{$name}{SNAPHASH}{$kn}{fileName} = delete $data{SSCam}{$name}{SNAPHASHOLD}{$sn}{fileName}; + $data{SSCam}{$name}{SNAPHASH}{$kn}{imageData} = delete $data{SSCam}{$name}{SNAPHASHOLD}{$sn}{imageData}; $sn += 1; } } @@ -5621,7 +5623,7 @@ sub SSCam_camop_parse ($) { for (my $k=1; (defined($hash->{HELPER}{CL}{$k})); $k++ ) { asyncOutput($hash->{HELPER}{CL}{$k},"$htmlCode"); } - delete($hash->{HELPER}{".SNAPHASH"}); # Snaphash Referenz löschen %allsnaps = (); + delete($data{SSCam}{$name}{SNAPHASH}); # Snaphash Referenz löschen %allsnaps = (); delete($hash->{HELPER}{CL}); } } @@ -7717,7 +7719,7 @@ sub SSCam_composegallery ($;$$$) { my ($name,$strmdev,$model,$ftui) = @_; my $hash = $defs{$name}; my $camname = $hash->{CAMNAME}; - my $allsnaps = $hash->{HELPER}{".SNAPHASH"}; # = %allsnaps + # my $allsnaps = $data{SSCam}{$name}{SNAPHASH}; my $sgc = AttrVal($name,"snapGalleryColumns",3); # Anzahl der Images in einer Tabellenzeile my $lss = ReadingsVal($name, "LastSnapTime", ""); # Zeitpunkt neueste Aufnahme my $lang = AttrVal("global","language","EN"); # Systemsprache @@ -7809,10 +7811,10 @@ sub SSCam_composegallery ($;$$$) { $header .= $sgbnote; my $gattr = (AttrVal($name,"snapGallerySize","Icon") eq "Full")?$ha:""; - my @as = sort{$a<=>$b}keys %{$allsnaps}; + my @as = sort{$a<=>$b}keys %{$data{SSCam}{$name}{SNAPHASH}}; # Ausgabetabelle erstellen - my ($htmlCode,$ct); + my ($htmlCode); $htmlCode = ""; $htmlCode .= ""; $htmlCode .= "
$header
"; @@ -7822,12 +7824,12 @@ sub SSCam_composegallery ($;$$$) { my $cell = 1; foreach my $key (@as) { - $ct = $allsnaps->{$key}{createdTm}; + # $ct = $data{SSCam}{$name}{SNAPHASH}{$key}{createdTm}; my $idata = ""; if(!$ftui) { - $idata = "onClick=\"FW_okDialog('{$key}{imageData} $pws>')\"" if(AttrVal($name,"snapGalleryBoost",0)); + $idata = "onClick=\"FW_okDialog('')\"" if(AttrVal($name,"snapGalleryBoost",0)); } - my $html = sprintf("$ct
{$key}{imageData}\" $gattr $idata> " ); + my $html = sprintf("$data{SSCam}{$name}{SNAPHASH}{$key}{createdTm}
" ); $cell++; if ( $cell == $sgc+1 ) { @@ -8311,17 +8313,17 @@ sub SSCam_extractForTelegram($$$) { my ($data,$fname,$ct); if($sdat) { - $ct = $paref->{sdat}{$key}{createdTm}; - my $img = $paref->{sdat}{$key}{".imageData"}; - $fname = SSCam_trim($paref->{sdat}{$key}{fileName}); + $ct = delete $paref->{sdat}{$key}{createdTm}; + my $img = delete $paref->{sdat}{$key}{".imageData"}; + $fname = SSCam_trim(delete $paref->{sdat}{$key}{fileName}); $data = MIME::Base64::decode_base64($img); Log3($name, 4, "$name - image data decoded for TelegramBot prepare"); } if($vdat) { - $ct = $paref->{vdat}{$key}{createdTm}; - $data = $paref->{vdat}{$key}{".imageData"}; - $fname = SSCam_trim($paref->{vdat}{$key}{fileName}); + $ct = delete $paref->{vdat}{$key}{createdTm}; + $data = delete $paref->{vdat}{$key}{".imageData"}; + $fname = SSCam_trim(delete $paref->{vdat}{$key}{fileName}); } $subject =~ s/\$FILE/$fname/g; @@ -8823,9 +8825,9 @@ sub SSCam_sendEmailblocking($) { my ($ct,$img,$decoded); @as = sort{$a<=>$b}keys%{$sdat}; foreach my $key (@as) { - $ct = $sdat->{$key}{createdTm}; - $img = $sdat->{$key}{".imageData"}; - $fname = $sdat->{$key}{fileName}; + $ct = delete $sdat->{$key}{createdTm}; + $img = delete $sdat->{$key}{".imageData"}; + $fname = delete $sdat->{$key}{fileName}; $fh = '$fh'.$key; $decoded = MIME::Base64::decode_base64($img); my $mh = ''; @@ -8855,9 +8857,9 @@ sub SSCam_sendEmailblocking($) { my ($ct,$video); @as = sort{$a<=>$b}keys%{$vdat}; foreach my $key (@as) { - $ct = $vdat->{$key}{createdTm}; - $video = $vdat->{$key}{".imageData"}; - $fname = $vdat->{$key}{fileName}; + $ct = delete $vdat->{$key}{createdTm}; + $video = delete $vdat->{$key}{".imageData"}; + $fname = delete $vdat->{$key}{fileName}; $fh = '$fh'.$key; my $mh = ''; if(open ($fh, '>', \$mh)) { # in-memory IO Handle