From d872ed21973f235bdcc2dbc8ab0cccbe48fb0905 Mon Sep 17 00:00:00 2001 From: nasseeder1 Date: Thu, 11 Aug 2022 17:32:07 +0000 Subject: [PATCH] 76_SolarForecast.pm: contrib 0.67.2 git-svn-id: https://svn.fhem.de/fhem/trunk@26310 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/contrib/DS_Starter/76_SolarForecast.pm | 224 ++++++++++---------- 1 file changed, 113 insertions(+), 111 deletions(-) diff --git a/fhem/contrib/DS_Starter/76_SolarForecast.pm b/fhem/contrib/DS_Starter/76_SolarForecast.pm index 80dceb21c..bdf154cd1 100644 --- a/fhem/contrib/DS_Starter/76_SolarForecast.pm +++ b/fhem/contrib/DS_Starter/76_SolarForecast.pm @@ -120,6 +120,7 @@ BEGIN { # Versions History intern my %vNotesIntern = ( + "0.67.2 "=> "11.08.2022 fix no disabled Link after restart and disable=1 ", "0.67.1 "=> "10.08.2022 fix warning, Forum: https://forum.fhem.de/index.php/topic,117864.msg1231050.html#msg1231050 ", "0.67.0 "=> "31.07.2022 change _gethtml, _getftui ", "0.66.0 "=> "24.07.2022 insert function calcPeaklossByTemp to calculate peak power reduction by temperature ", @@ -4548,8 +4549,8 @@ sub entryGraphic { my $hash = $defs{$name}; - # Setup Vollständigkeit prüfen - ############################### + # Setup Vollständigkeit/disabled prüfen + ######################################### my $incomplete = _checkSetupComplete ($hash); return $incomplete if($incomplete); @@ -4617,114 +4618,103 @@ sub entryGraphic { my $ret = q{}; - if(IsDisabled($name)) { - $ret .= ""; - $ret .= ""; - $ret .= ""; + $ret .= "$dlink
" if(AttrVal($name,"showLink",0)); + + $ret .= ""; + $ret .= $html_start if (defined($html_start)); + $ret .= ""; + $ret .= "
"; - $ret .= qq{SolarForecast device $name is disabled}; - $ret .= "
"; + $ret .= ""; + $ret .= ""; + $ret .= ""; + + $paref->{modulo}++; + } + + $m = $paref->{modulo} % 2; + + if($gsel eq "both" || $gsel eq "forecast") { + my %hfch; + my $hfcg = \%hfch; #(hfcg = hash forecast graphic) + + # Werte aktuelle Stunde + ########################## + $paref->{hfcg} = $hfcg; + $paref->{thishour} = _beamGraphicFirstHour ($paref); + + # get consumer list and display it in Graphics + ################################################ + _showConsumerInGraphicBeam ($paref); + + # Werte restliche Stunden + ########################### + my $back = _beamGraphicRemainingHours ($paref); + $paref->{maxVal} = $back->{maxVal}; # Startwert wenn kein Wert bereits via attr vorgegeben ist + $paref->{maxCon} = $back->{maxCon}; + $paref->{maxDif} = $back->{maxDif}; # für Typ diff + $paref->{minDif} = $back->{minDif}; # für Typ diff + + #Log3 ($hash,3,Dumper($hfcg)); + + # Balkengrafik + ################ + $ret .= _beamGraphic ($paref); + } + + $m = $paref->{modulo} % 2; + + if($gsel eq "both" || $gsel eq "flow") { + $ret .= ""; + my $fg = _flowGraphic ($paref); + $ret .= ""; + $ret .= ""; + + $paref->{modulo}++; + } + + $m = $paref->{modulo} % 2; + + # Legende unten + ################# + if ($legendtxt && ($clegend eq 'bottom')) { + $ret .= ""; + $ret .= ""; + } + + $ret .= "
"; + + # Headerzeile generieren + ########################## + my $header = _graphicHeader ($paref); + $paref->{header} = $header; + + # Verbraucherlegende und Steuerung + ################################### + my $legendtxt = _graphicConsumerLegend ($paref); + $paref->{legendtxt} = $legendtxt; + + $ret .= "\n"; # das \n erleichtert das Lesen der debug Quelltextausgabe + my $m = $paref->{modulo} % 2; + + if ($header) { # Header ausgeben + $ret .= ""; + $ret .= ""; $ret .= ""; - $ret .= "
$header
"; - } - else { - $ret .= "$dlink
" if(AttrVal($name,"showLink",0)); - $ret .= ""; - $ret .= $html_start if (defined($html_start)); - $ret .= ""; - $ret .= ""; - $ret .= ""; - $ret .= "
"; - - # Headerzeile generieren - ########################## - my $header = _graphicHeader ($paref); - $paref->{header} = $header; - - # Verbraucherlegende und Steuerung - ################################### - my $legendtxt = _graphicConsumerLegend ($paref); - $paref->{legendtxt} = $legendtxt; - - $ret .= "\n"; # das \n erleichtert das Lesen der debug Quelltextausgabe - my $m = $paref->{modulo} % 2; - - if ($header) { # Header ausgeben - $ret .= ""; - $ret .= ""; - $ret .= ""; - - $paref->{modulo}++; - } - - my $clegend = $paref->{clegend}; - $m = $paref->{modulo} % 2; - - if ($legendtxt && ($clegend eq 'top')) { - $ret .= ""; - $ret .= ""; - $ret .= ""; - - $paref->{modulo}++; - } - - $m = $paref->{modulo} % 2; - - if($gsel eq "both" || $gsel eq "forecast") { - my %hfch; - my $hfcg = \%hfch; #(hfcg = hash forecast graphic) - - # Werte aktuelle Stunde - ########################## - $paref->{hfcg} = $hfcg; - $paref->{thishour} = _beamGraphicFirstHour ($paref); - - # get consumer list and display it in Graphics - ################################################ - _showConsumerInGraphicBeam ($paref); - - # Werte restliche Stunden - ########################### - my $back = _beamGraphicRemainingHours ($paref); - $paref->{maxVal} = $back->{maxVal}; # Startwert wenn kein Wert bereits via attr vorgegeben ist - $paref->{maxCon} = $back->{maxCon}; - $paref->{maxDif} = $back->{maxDif}; # für Typ diff - $paref->{minDif} = $back->{minDif}; # für Typ diff - - #Log3 ($hash,3,Dumper($hfcg)); - - # Balkengrafik - ################ - $ret .= _beamGraphic ($paref); - } - - $m = $paref->{modulo} % 2; - - if($gsel eq "both" || $gsel eq "flow") { - $ret .= ""; - my $fg = _flowGraphic ($paref); - $ret .= ""; - $ret .= ""; - - $paref->{modulo}++; - } - - $m = $paref->{modulo} % 2; - - # Legende unten - ################# - if ($legendtxt && ($clegend eq 'bottom')) { - $ret .= ""; - $ret .= ""; - } - - $ret .= "
$header
$legendtxt
$fg
"; - $ret .= "$legendtxt
"; - - $ret .= "
"; - $ret .= $html_end if (defined($html_end)); - $ret .= ""; + $paref->{modulo}++; } + + my $clegend = $paref->{clegend}; + $m = $paref->{modulo} % 2; + + if ($legendtxt && ($clegend eq 'top')) { + $ret .= "
$legendtxt
$fg
"; + $ret .= "$legendtxt
"; + + $ret .= ""; + $ret .= ""; + $ret .= $html_end if (defined($html_end)); + $ret .= ""; return $ret; } @@ -4747,11 +4737,23 @@ sub _checkSetupComplete { my $dir = ReadingsVal ($name, "moduleDirection", undef); # Modulausrichtung Konfig my $ta = ReadingsVal ($name, "moduleTiltAngle", undef); # Modul Neigungswinkel Konfig - if(!$is || !$fcdev || !$radev || !$indev || !$medev || !$peak || !defined $pv0 || !$dir || !$ta) { - my $link = qq{$name}; - my $height = AttrNum ($name, 'beamHeight', 200); - my $lang = AttrVal ("global", "language", "EN"); + my $link = qq{$name}; + my $height = AttrNum ($name, 'beamHeight', 200); + my $lang = AttrVal ("global", "language", "EN"); + + if(IsDisabled($name)) { + $ret .= ""; + $ret .= ""; + $ret .= ""; + $ret .= ""; + $ret .= "
"; + $ret .= qq{SolarForecast device $link is disabled}; + $ret .= "
"; + return $ret; + } + + if(!$is || !$fcdev || !$radev || !$indev || !$medev || !$peak || !defined $pv0 || !$dir || !$ta) { $ret .= ""; $ret .= ""; $ret .= "
";