2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-03 16:56:54 +00:00

76_SMAPortal: contrib 3.6.2

git-svn-id: https://svn.fhem.de/fhem/trunk@23095 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2020-11-04 16:55:41 +00:00
parent 78227aec3b
commit caa9a2fa65

View File

@ -137,7 +137,7 @@ BEGIN {
# Versions History intern
my %vNotesIntern = (
"3.6.2" => "03.11.2020 new function _detailViewOn to Switch the detail view on SMA energy balance site ",
"3.6.2" => "03.11.2020 new function _detailViewOn to Switch the detail view on SMA energy balance site, new default userAgent ",
"3.6.1" => "31.10.2020 adjust anchortime in getBalanceMonthData ",
"3.6.0" => "11.10.2020 new relative time arguments for attr balanceDay, balanceMonth, balanceYear, new attribute useRelativeNames ",
"3.5.0" => "10.10.2020 _getLiveData: get data from Dashboard instead of homemanager site depending of attr noHomeManager, ".
@ -238,9 +238,9 @@ my %statkeys = ( # Statistikdaten auszulesende Schlüs
);
my %hset = ( # Hash der Set-Funktion
credentials => { fn => "_setCredentials" },
getData => { fn => "_setGetData" },
createPortalGraphic => { fn => "_setCreatePortalGraphic" },
credentials => { fn => \&_setCredentials },
getData => { fn => \&_setGetData },
createPortalGraphic => { fn => \&_setCreatePortalGraphic },
);
my %mandatory; # Arbeitskopie von %stpl -> abzurufenden Datenprovider Stammdaten nach Login
@ -279,7 +279,7 @@ my @pd = qw( plantMasterData
plantLogbook
);
my $defuseragent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0";
###############################################################
# SMAPortal Initialize
@ -373,7 +373,7 @@ return;
###############################################################
# SMAPortal Set
###############################################################
sub Set { ## no critic 'complexity'
sub Set {
my ($hash, @a) = @_;
return "\"set X\" needs at least an argument" if ( @a < 2 );
my $name = $a[0];
@ -429,14 +429,12 @@ sub Set { ## no critic 'complexity'
prop1 => $prop1,
aref => \@a,
};
no strict "refs"; ## no critic 'NoStrict'
if($hset{$opt}) {
my $ret = "";
$ret = &{$hset{$opt}{fn}} ($params) if(defined &{$hset{$opt}{fn}});
if($hset{$opt} && defined &{$hset{$opt}{fn}}) {
my $ret = q{};
$ret = &{$hset{$opt}{fn}} ($params);
return $ret;
}
use strict "refs";
return "$setlist";
}
@ -892,7 +890,7 @@ sub GetSetData { ## no critic 'complexity'
my ($string) = @_;
my ($name,$getp,$setp) = split("\\|",$string);
my $hash = $defs{$name};
my $useragent = AttrVal($name, "userAgent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)");
my $useragent = AttrVal($name, "userAgent", $defuseragent);
my $cookieLocation = AttrVal($name, "cookieLocation", "./log/".$name."_cookie.txt");
my $v5d = AttrVal($name, "verbose5Data", "none");
my $verbose = AttrVal($name, "verbose", 3);
@ -1006,13 +1004,22 @@ sub GetSetData { ## no critic 'complexity'
#############################
if($getp ne "none") {
_detailViewOn ({ name => $name,
ua => $ua,
state => $state,
daref => \@da
}); # Detailanzeige einschalten
for my $k (keys %{$subs{$name}}) {
next if(!$subs{$name}{$k}{doit});
no strict "refs"; ## no critic 'NoStrict'
if(!defined &{$subs{$name}{$k}{func}}) {
Log3 ($name, 2, qq{$name - WARNING - data provider '$k' call function '$subs{$name}{$k}{func}' doesn't exist and is ignored });
next;
}
($errstate,$state,$reread,$retry) = &{$subs{$name}{$k}{func}} ({ name => $name,
ua => $ua,
state => $state,
@ -1527,7 +1534,7 @@ sub _getBalanceDayData { ## no critic "not used"
my $state = $paref->{state};
my $daref = $paref->{daref}; # Referenz zum Datenarray
_detailViewOn ($paref); # Detailanzeige einschalten
# _detailViewOn ($paref); # Detailanzeige einschalten
my ($reread,$retry,$errstate) = (0,0,0);
@ -1611,7 +1618,7 @@ sub _getBalanceMonthData { ## no critic "not used"
my $state = $paref->{state};
my $daref = $paref->{daref}; # Referenz zum Datenarray
_detailViewOn ($paref); # Detailanzeige einschalten
# _detailViewOn ($paref); # Detailanzeige einschalten
my ($reread,$retry,$errstate) = (0,0,0);
@ -1709,7 +1716,7 @@ sub _getBalanceYearData { ## no critic "not used"
my $state = $paref->{state};
my $daref = $paref->{daref}; # Referenz zum Datenarray
_detailViewOn ($paref); # Detailanzeige einschalten
# _detailViewOn ($paref); # Detailanzeige einschalten
my ($reread,$retry,$errstate) = (0,0,0);
@ -1862,7 +1869,7 @@ return ($errstate,$state,$reread,$retry);
# Detailanzeige einschalten
# vor dem eigentlichen Datenabruf
################################################################
sub _detailViewOn { ## no critic "not used"
sub _detailViewOn {
my $paref = shift;
my $name = $paref->{name};
my $ua = $paref->{ua}; # LWP Useragent
@ -2178,7 +2185,7 @@ sub ___extractCookie {
my $ua = $paref->{ua};
my $data = $paref->{data}; # empfangene Rohdaten
eval { $ua->cookie_jar->extract_cookies($data) };
eval { $ua->cookie_jar->extract_cookies($data) } or return;
return;
}
@ -2186,7 +2193,7 @@ return;
################################################################
## Verarbeitung empfangene Daten, setzen Readings
################################################################
sub ParseData { ## no critic 'complexity'
sub ParseData {
my $string = shift;
my @a = split("\\|",$string);
my $hash = $defs{$a[0]};