76_SMAPortal: contrib 2.6.1

git-svn-id: https://svn.fhem.de/fhem/trunk@21737 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
DS_Starter
2020-04-21 11:37:45 +00:00
parent 2eb593661c
commit 3593fcf12d

View File

@@ -1,5 +1,5 @@
######################################################################################################################### #########################################################################################################################
# $Id: 76_SMAPortal.pm 20064 2019-08-26 17:22:39Z DS_Starter $ # $Id: 76_SMAPortal.pm 21735 2020-04-20 20:53:24Z DS_Starter $
######################################################################################################################### #########################################################################################################################
# 76_SMAPortal.pm # 76_SMAPortal.pm
# #
@@ -131,11 +131,9 @@ BEGIN {
} }
# Standardvariablen und Forward-Deklaration
# use vars qw($FW_ME); # webname (default is fhem)
# Versions History intern # Versions History intern
my %vNotesIntern = ( my %vNotesIntern = (
"2.6.1" => "21.04.2020 update time in portalgraphics changed to last successful live data retrieval ",
"2.6.0" => "20.04.2020 change package config, improve cookie management, decouple switch consumers from livedata retrieval ". "2.6.0" => "20.04.2020 change package config, improve cookie management, decouple switch consumers from livedata retrieval ".
"some improvements according to PBP ", "some improvements according to PBP ",
"2.5.0" => "25.08.2019 change switch consumer to on<->automatic only in graphic overview, Forum: https://forum.fhem.de/index.php/topic,102112.msg969002.html#msg969002", "2.5.0" => "25.08.2019 change switch consumer to on<->automatic only in graphic overview, Forum: https://forum.fhem.de/index.php/topic,102112.msg969002.html#msg969002",
@@ -678,10 +676,10 @@ sub GetSetData { ## no cri
my $useragent = AttrVal($name, "userAgent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)"); my $useragent = AttrVal($name, "userAgent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)");
my $cookieLocation = AttrVal($name, "cookieLocation", "./log/mycookies.txt"); my $cookieLocation = AttrVal($name, "cookieLocation", "./log/mycookies.txt");
my $v5d = AttrVal($name, "verbose5Data", "none"); my $v5d = AttrVal($name, "verbose5Data", "none");
my ($forecast_content,$weatherdata_content,$consumerlivedata_content,$ccdaydata_content,$ccmonthdata_content) = ("","","","","");
my ($ccyeardata_content) = (""); my ($ccyeardata_content) = ("");
my $state = "ok"; my $state = "ok";
my ($reread,$retry) = (0,0); my ($reread,$retry) = (0,0);
my ($forecast_content,$weatherdata_content,$consumerlivedata_content,$ccdaydata_content,$ccmonthdata_content) = ("","","","","");
my ($livedata_content,$d,$op); my ($livedata_content,$d,$op);
if($setp ne "none") { if($setp ne "none") {
@@ -1082,6 +1080,8 @@ sub ParseData { ## no critic
# keine Anlagendaten vorhanden # keine Anlagendaten vorhanden
$state = "Data can't be retrieved from SMA-Portal. Reread at next scheduled cycle."; $state = "Data can't be retrieved from SMA-Portal. Reread at next scheduled cycle.";
Log3 ($name, 2, "$name - $state"); Log3 ($name, 2, "$name - $state");
} else {
$hash->{HELPER}{LASTLDSUCCTIME} = FmtDateTime(time());
} }
readingsBeginUpdate($hash); readingsBeginUpdate($hash);
@@ -1529,7 +1529,6 @@ sub extractConsumerLiveData {
$i = 0; $i = 0;
foreach my $c (@{$clivedata->{'ParameterData'}}) { foreach my $c (@{$clivedata->{'ParameterData'}}) {
my $tkind = $c->{'Parameters'}[0]{'Timestamp'}{'Kind'}; # Zeitart: Unspecified, Utc my $tkind = $c->{'Parameters'}[0]{'Timestamp'}{'Kind'}; # Zeitart: Unspecified, Utc
# Log3 ($name, 1, "$name - $tkind");
my $GriSwStt = $c->{'Parameters'}[0]{'Value'}; # on: 1, off: 0 my $GriSwStt = $c->{'Parameters'}[0]{'Value'}; # on: 1, off: 0
my $GriSwAuto = $c->{'Parameters'}[1]{'Value'}; # automatic = 1 my $GriSwAuto = $c->{'Parameters'}[1]{'Value'}; # automatic = 1
my $OperationAutoEna = $c->{'Parameters'}[2]{'Value'}; # Automatic Betrieb erlaubt ? my $OperationAutoEna = $c->{'Parameters'}[2]{'Value'}; # Automatic Betrieb erlaubt ?
@@ -1667,12 +1666,12 @@ sub setVersionInfo {
if($modules{$type}{META}{x_prereqs_src} && !$hash->{HELPER}{MODMETAABSENT}) { if($modules{$type}{META}{x_prereqs_src} && !$hash->{HELPER}{MODMETAABSENT}) {
# META-Daten sind vorhanden # META-Daten sind vorhanden
$modules{$type}{META}{version} = "v".$v; # Version aus META.json überschreiben, Anzeige mit {Dumper $modules{SMAPortal}{META}} $modules{$type}{META}{version} = "v".$v; # Version aus META.json überschreiben, Anzeige mit {Dumper $modules{SMAPortal}{META}}
if($modules{$type}{META}{x_version}) { # {x_version} ( nur gesetzt wenn $Id: 76_SMAPortal.pm 20064 2019-08-26 17:22:39Z DS_Starter $ im Kopf komplett! vorhanden ) if($modules{$type}{META}{x_version}) { # {x_version} ( nur gesetzt wenn $Id: 76_SMAPortal.pm 21735 2020-04-20 20:53:24Z DS_Starter $ im Kopf komplett! vorhanden )
$modules{$type}{META}{x_version} =~ s/1\.1\.1/$v/gx; $modules{$type}{META}{x_version} =~ s/1\.1\.1/$v/gx;
} else { } else {
$modules{$type}{META}{x_version} = $v; $modules{$type}{META}{x_version} = $v;
} }
return $@ unless (FHEM::Meta::SetInternals($hash)); # FVERSION wird gesetzt ( nur gesetzt wenn $Id: 76_SMAPortal.pm 20064 2019-08-26 17:22:39Z DS_Starter $ im Kopf komplett! vorhanden ) return $@ unless (FHEM::Meta::SetInternals($hash)); # FVERSION wird gesetzt ( nur gesetzt wenn $Id: 76_SMAPortal.pm 21735 2020-04-20 20:53:24Z DS_Starter $ im Kopf komplett! vorhanden )
if(__PACKAGE__ eq "FHEM::$type" || __PACKAGE__ eq $type) { if(__PACKAGE__ eq "FHEM::$type" || __PACKAGE__ eq $type) {
# es wird mit Packages gearbeitet -> Perl übliche Modulversion setzen # es wird mit Packages gearbeitet -> Perl übliche Modulversion setzen
# mit {<Modul>->VERSION()} im FHEMWEB kann Modulversion abgefragt werden # mit {<Modul>->VERSION()} im FHEMWEB kann Modulversion abgefragt werden
@@ -1888,6 +1887,7 @@ sub PortalAsHtml {
my $dl = AttrVal ($name, "detailLevel", 1); my $dl = AttrVal ($name, "detailLevel", 1);
my $pv0 = ReadingsNum($name, "L2_ThisHour_PvMeanPower", undef); my $pv0 = ReadingsNum($name, "L2_ThisHour_PvMeanPower", undef);
my $pv1 = ReadingsNum($name, "L4_NextHour01_PvMeanPower", undef); my $pv1 = ReadingsNum($name, "L4_NextHour01_PvMeanPower", undef);
if(!$hash || !defined($defs{$wlname}) || $dl != 4 || !defined $pv0 || !defined $pv1) { if(!$hash || !defined($defs{$wlname}) || $dl != 4 || !defined $pv0 || !defined $pv1) {
$height = AttrNum($wlname, 'beamHeight', 200); $height = AttrNum($wlname, 'beamHeight', 200);
$ret .= "<table class='roomoverview'>"; $ret .= "<table class='roomoverview'>";
@@ -1982,7 +1982,6 @@ sub PortalAsHtml {
# Beispiel mit Farbe: $icon = FW_makeImage('light_light_dim_100.svg@green'); # Beispiel mit Farbe: $icon = FW_makeImage('light_light_dim_100.svg@green');
$icon = FW_makeImage($icon) if (defined($icon)); $icon = FW_makeImage($icon) if (defined($icon));
my $co4h = ReadingsNum ($name,"L2_Next04Hours_Consumption", 0); my $co4h = ReadingsNum ($name,"L2_Next04Hours_Consumption", 0);
my $coRe = ReadingsNum ($name,"L2_RestOfDay_Consumption", 0); my $coRe = ReadingsNum ($name,"L2_RestOfDay_Consumption", 0);
my $coTo = ReadingsNum ($name,"L2_Tomorrow_Consumption", 0); my $coTo = ReadingsNum ($name,"L2_Tomorrow_Consumption", 0);
@@ -2013,7 +2012,7 @@ sub PortalAsHtml {
my $lang = AttrVal("global","language","EN"); my $lang = AttrVal("global","language","EN");
my $alias = AttrVal($name, "alias", "SMA Sunny Portal"); # Linktext als Aliasname oder "SMA Sunny Portal" my $alias = AttrVal($name, "alias", "SMA Sunny Portal"); # Linktext als Aliasname oder "SMA Sunny Portal"
my $dlink = "<a href=\"/fhem?detail=$name\">$alias</a>"; my $dlink = "<a href=\"/fhem?detail=$name\">$alias</a>";
my $lup = ReadingsTimestamp($name, "state", "0000-00-00 00:00:00"); # letzte Updatezeit my $lup = $hash->{HELPER}{LASTLDSUCCTIME} // "0000-00-00 00:00:00"; # letzte erfolgreiche Updatezeit Live Daten
my $lupt = "last update:"; my $lupt = "last update:";
my $lblPv4h = "4h:"; my $lblPv4h = "4h:";