From f836d5b8359f4897fe2558837a77f90755e935a1 Mon Sep 17 00:00:00 2001 From: nasseeder1 Date: Sun, 20 Oct 2024 12:10:25 +0000 Subject: [PATCH] 76_SolarForecast: contrib 1.37.0 git-svn-id: https://svn.fhem.de/fhem/trunk@29266 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/contrib/DS_Starter/76_SolarForecast.pm | 492 ++++++++++---------- 1 file changed, 245 insertions(+), 247 deletions(-) diff --git a/fhem/contrib/DS_Starter/76_SolarForecast.pm b/fhem/contrib/DS_Starter/76_SolarForecast.pm index f44538fad..affef573c 100644 --- a/fhem/contrib/DS_Starter/76_SolarForecast.pm +++ b/fhem/contrib/DS_Starter/76_SolarForecast.pm @@ -156,8 +156,10 @@ BEGIN { # Versions History intern my %vNotesIntern = ( - "1.37.0" => "18.10.2024 attr setupInverterDevXX up to 03 inverters with accorded strings, setupInverterDevXX: keys strings and feed ". - "_flowGraphic: controlhash for producer, prepare new attr flowGraphicControl ", + "1.37.0" => "20.10.2024 attr setupInverterDevXX up to 03 inverters with accorded strings, setupInverterDevXX: keys strings and feed ". + "_flowGraphic: controlhash for producer, new attr flowGraphicControl and replace the attributes: ". + "flowGraphicAnimate flowGraphicConsumerDistance flowGraphicShowConsumer flowGraphicShowConsumerDummy ". + "flowGraphicShowConsumerPower flowGraphicShowConsumerRemainTime flowGraphicShift ", "1.36.1" => "14.10.2024 _flowGraphic: consumer distance modified by kask, Coloring of icons corrected when creating 0 ", "1.36.0" => "13.10.2024 new Getter valInverter, valStrings and valProducer, preparation for multiple inverters ". "rename setupInverterDev to setupInverterDev01, new attr affectConsForecastLastDays ". @@ -552,8 +554,7 @@ my @aconfigs = qw( affect70percentRule affectBatteryPreferredCharge affectConsFo ctrlSolCastAPIoptimizeReq ctrlStatisticReadings ctrlUserExitFn setupWeatherDev1 setupWeatherDev2 setupWeatherDev3 disable - flowGraphicSize flowGraphicAnimate flowGraphicConsumerDistance flowGraphicShowConsumer - flowGraphicShowConsumerDummy flowGraphicShowConsumerPower flowGraphicShowConsumerRemainTime + flowGraphicControl flowGraphicCss graphicBeamWidth graphicBeamHeightLevel1 graphicBeamHeightLevel2 graphicBeam1Content graphicBeam2Content graphicBeam3Content graphicBeam4Content @@ -1267,15 +1268,7 @@ sub Initialize { "ctrlStatisticReadings:multiple-strict,$srd ". "ctrlUserExitFn:textField-long ". "disable:1,0 ". - # "flowGraphicControl:textField-long ". - "flowGraphicSize ". - "flowGraphicAnimate:1,0 ". - "flowGraphicConsumerDistance:slider,80,10,500 ". - "flowGraphicShift:slider,-80,5,80 ". - "flowGraphicShowConsumer:1,0 ". - "flowGraphicShowConsumerDummy:1,0 ". - "flowGraphicShowConsumerPower:0,1 ". - "flowGraphicShowConsumerRemainTime:0,1 ". + "flowGraphicControl:textField-long ". "flowGraphicCss:textField-long ". "graphicBeamHeightLevel1 ". "graphicBeamHeightLevel2 ". @@ -1324,6 +1317,12 @@ sub Initialize { $setupprod. $consumer. $readingFnAttributes; + + ### nicht mehr benötigte Daten verarbeiten - Bereich kann später wieder raus !! + ########################################################################################################################## + $hash->{AttrList} .= " flowGraphicSize flowGraphicAnimate flowGraphicConsumerDistance flowGraphicShowConsumer flowGraphicShowConsumerDummy flowGraphicShowConsumerPower flowGraphicShowConsumerRemainTime flowGraphicShift "; + + ########################################################################################################################## $hash->{FW_hideDisplayName} = 1; # Forum 88667 @@ -5360,14 +5359,15 @@ sub Attr { ### nicht mehr benötigte Daten verarbeiten - Bereich kann später wieder raus !! ###################################################################################################################### - #if ($cmd eq 'set' && $aName eq 'affectMaxDayVariance') { - # if (!$init_done) { - # return qq{Device "$name" -> The attribute '$aName' is obsolete and will be deleted soon. Please press "save config" when restart is finished.}; - # } - # else { - # return qq{The attribute '$aName' is obsolete and will be deleted soon.}; - # } - #} + # 20.10.2024 + if ($cmd eq 'set' && $aName =~ /^flowGraphicSize|flowGraphicAnimate|flowGraphicConsumerDistance|flowGraphicShowConsumer|flowGraphicShowConsumerDummy|flowGraphicShowConsumerPower|flowGraphicShowConsumerRemainTime|flowGraphicShift$/) { + if (!$init_done) { + return qq{Device "$name" -> The attribute '$aName' is replaced by 'flowGraphicControl'. Please press "save config" when restart is finished.}; + } + else { + return qq{The attribute '$aName' is obsolete and replaced by 'flowGraphicControl'.}; + } + } ###################################################################################################################### if ($aName eq 'disable') { @@ -5684,14 +5684,14 @@ sub _attrflowGraphicControl { ## no critic "not used" my $hash = $defs{$name}; - for my $av ( qw( flowGraphicAnimate - flowGraphicConsumerDistance - flowGraphicShift - flowGraphicShowConsumer - flowGraphicShowConsumerRemainTime - flowGraphicSize - flowGraphicShowConsumerDummy - flowGraphicShowConsumerPower + for my $av ( qw( animate + consumerdist + shift + showconsumer + showconsumerremaintime + size + showconsumerdummy + showconsumerpower ) ) { delete $data{$type}{$name}{current}{$av}; @@ -5713,6 +5713,7 @@ sub _attrflowGraphicControl { ## no critic "not used" for my $key (keys %{$h}) { my $comp = $valid->{$key}; + next if(!$comp); if ($h->{$key} =~ /^$comp$/xs) { $data{$type}{$name}{current}{$key} = $h->{$key}; @@ -6919,6 +6920,28 @@ sub centralTask { $n = sprintf "%02d", $n; readingsDelete ($hash, "pvCorrectionFactor_${n}_autocalc"); } + + my $fg1 = AttrVal ($name, 'flowGraphicSize', undef); # 20.10.2024 + my $fg2 = AttrVal ($name, 'flowGraphicAnimate', undef); + my $fg3 = AttrVal ($name, 'flowGraphicConsumerDistance', undef); + my $fg4 = AttrVal ($name, 'flowGraphicShowConsumer', undef); + my $fg5 = AttrVal ($name, 'flowGraphicShowConsumerDummy', undef); + my $fg6 = AttrVal ($name, 'flowGraphicShowConsumerPower', undef); + my $fg7 = AttrVal ($name, 'flowGraphicShowConsumerRemainTime', undef); + my $fg8 = AttrVal ($name, 'flowGraphicShift', undef); + + my $newval; + $newval .= "size=$fg1 " if(defined $fg1); + $newval .= "animate=$fg2 " if(defined $fg2); + $newval .= "consumerdist=$fg3 " if(defined $fg3); + $newval .= "showconsumer=$fg4 " if(defined $fg4); + $newval .= "showconsumerdummy=$fg5 " if(defined $fg5); + $newval .= "showconsumerpower=$fg6 " if(defined $fg6); + $newval .= "showconsumerremaintime=$fg7 " if(defined $fg7); + $newval .= "shift=$fg8 " if(defined $fg8); + + CommandAttr (undef, "$name flowGraphicControl $newval") if($newval); + ########################################################################################################################## setModel ($hash); # Model setzen @@ -12098,44 +12121,44 @@ sub entryGraphic { modulo => 1, dstyle => qq{style='padding-left: 10px; padding-right: 10px; padding-top: 3px; padding-bottom: 3px; white-space:nowrap;'}, # TD-Style offset => $offset, - hourstyle => AttrVal ($name, 'graphicHourStyle', ''), - colorb1 => AttrVal ($name, 'graphicBeam1Color', $b1coldef), - colorb2 => AttrVal ($name, 'graphicBeam2Color', $b2coldef), - fcolor1 => AttrVal ($name, 'graphicBeam1FontColor', $b1fontcoldef), - fcolor2 => AttrVal ($name, 'graphicBeam2FontColor', $b2fontcoldef), - beam1cont => AttrVal ($name, 'graphicBeam1Content', 'pvReal'), - beam2cont => AttrVal ($name, 'graphicBeam2Content', 'pvForecast'), - beam3cont => AttrVal ($name, 'graphicBeam3Content', ''), - beam4cont => AttrVal ($name, 'graphicBeam4Content', ''), - caicon => AttrVal ($name, 'consumerAdviceIcon', $caicondef), # Consumer AdviceIcon - clegend => AttrVal ($name, 'consumerLegend', 'icon_top'), # Lage und Art Cunsumer Legende - clink => AttrVal ($name, 'consumerLink' , 1), # Detail-Link zum Verbraucher - lotype => AttrVal ($name, 'graphicLayoutType', 'double'), - kw => AttrVal ($name, 'graphicEnergyUnit', 'Wh'), - height => AttrNum ($name, 'graphicBeamHeightLevel1', 200), + hourstyle => AttrVal ($name, 'graphicHourStyle', ''), + colorb1 => AttrVal ($name, 'graphicBeam1Color', $b1coldef), + colorb2 => AttrVal ($name, 'graphicBeam2Color', $b2coldef), + fcolor1 => AttrVal ($name, 'graphicBeam1FontColor', $b1fontcoldef), + fcolor2 => AttrVal ($name, 'graphicBeam2FontColor', $b2fontcoldef), + beam1cont => AttrVal ($name, 'graphicBeam1Content', 'pvReal'), + beam2cont => AttrVal ($name, 'graphicBeam2Content', 'pvForecast'), + beam3cont => AttrVal ($name, 'graphicBeam3Content', ''), + beam4cont => AttrVal ($name, 'graphicBeam4Content', ''), + caicon => AttrVal ($name, 'consumerAdviceIcon', $caicondef), # Consumer AdviceIcon + clegend => AttrVal ($name, 'consumerLegend', 'icon_top'), # Lage und Art Cunsumer Legende + clink => AttrVal ($name, 'consumerLink' , 1), # Detail-Link zum Verbraucher + lotype => AttrVal ($name, 'graphicLayoutType', 'double'), + kw => AttrVal ($name, 'graphicEnergyUnit', 'Wh'), + height => AttrNum ($name, 'graphicBeamHeightLevel1', 200), width => $width, - fsize => AttrNum ($name, 'graphicSpaceSize', 24), - maxVal => AttrNum ($name, 'graphicBeam1MaxVal', 0), # dyn. Anpassung der Balkenhöhe oder statisch ? - show_night => AttrNum ($name, 'graphicShowNight', 0), # alle Balken (Spalten) anzeigen ? - show_diff => AttrVal ($name, 'graphicShowDiff', 'no'), # zusätzliche Anzeige $di{} in allen Typen - weather => AttrNum ($name, 'graphicShowWeather', 1), # Wetter Icons anzeigen - colorw => AttrVal ($name, 'graphicWeatherColor', $wthcolddef), # Wetter Icon Farbe Tag - colorwn => AttrVal ($name, 'graphicWeatherColorNight', $wthcolndef), # Wetter Icon Farbe Nacht - wlalias => AttrVal ($name, 'alias', $name), - sheader => AttrNum ($name, 'graphicHeaderShow', 1), # Anzeigen des Grafik Headers - hdrDetail => AttrVal ($name, 'graphicHeaderDetail', 'all'), # ermöglicht den Inhalt zu begrenzen, um bspw. passgenau in ftui einzubetten - flowgsize => AttrVal ($name, 'flowGraphicSize', $flowGSizedef), # Größe Energieflußgrafik - flowgani => AttrVal ($name, 'flowGraphicAnimate', 0), # Animation Energieflußgrafik - flowgshift => AttrVal ($name, 'flowGraphicShift', 0), # Verschiebung der Flußgrafikbox (muß negiert werden) - flowgcons => AttrVal ($name, 'flowGraphicShowConsumer', 1), # Verbraucher in der Energieflußgrafik anzeigen - flowgconX => AttrVal ($name, 'flowGraphicShowConsumerDummy', 1), # Dummyverbraucher in der Energieflußgrafik anzeigen - flowgconsPower => AttrVal ($name, 'flowGraphicShowConsumerPower' , 1), # Verbraucher Leistung in der Energieflußgrafik anzeigen - flowgconsTime => AttrVal ($name, 'flowGraphicShowConsumerRemainTime', 1), # Verbraucher Restlaufeit in der Energieflußgrafik anzeigen - flowgconsDist => AttrVal ($name, 'flowGraphicConsumerDistance', $fgCDdef), # Abstand Verbrauchericons zueinander - css => AttrVal ($name, 'flowGraphicCss', $cssdef), # flowGraphicCss Styles - genpvdva => AttrVal ($name, 'ctrlGenPVdeviation', 'daily'), # Methode der Abweichungsberechnung - lang => getLang ($hash), - debug => getDebug ($hash), # Debug Module + fsize => AttrNum ($name, 'graphicSpaceSize', 24), + maxVal => AttrNum ($name, 'graphicBeam1MaxVal', 0), # dyn. Anpassung der Balkenhöhe oder statisch ? + show_night => AttrNum ($name, 'graphicShowNight', 0), # alle Balken (Spalten) anzeigen ? + show_diff => AttrVal ($name, 'graphicShowDiff', 'no'), # zusätzliche Anzeige $di{} in allen Typen + weather => AttrNum ($name, 'graphicShowWeather', 1), # Wetter Icons anzeigen + colorw => AttrVal ($name, 'graphicWeatherColor', $wthcolddef), # Wetter Icon Farbe Tag + colorwn => AttrVal ($name, 'graphicWeatherColorNight', $wthcolndef), # Wetter Icon Farbe Nacht + wlalias => AttrVal ($name, 'alias', $name), + sheader => AttrNum ($name, 'graphicHeaderShow', 1), # Anzeigen des Grafik Headers + hdrDetail => AttrVal ($name, 'graphicHeaderDetail', 'all'), # ermöglicht den Inhalt zu begrenzen, um bspw. passgenau in ftui einzubetten + flowgsize => CurrentVal ($hash, 'size', $flowGSizedef), # Größe Energieflußgrafik + flowgani => CurrentVal ($hash, 'animate', 0), # Animation Energieflußgrafik + flowgshift => CurrentVal ($hash, 'shift', 0), # Verschiebung der Flußgrafikbox (muß negiert werden) + flowgcons => CurrentVal ($hash, 'showconsumer', 1), # Verbraucher in der Energieflußgrafik anzeigen + flowgconX => CurrentVal ($hash, 'showconsumerdummy', 1), # Dummyverbraucher in der Energieflußgrafik anzeigen + flowgconsPower => CurrentVal ($hash, 'showconsumerpower', 1), # Verbraucher Leistung in der Energieflußgrafik anzeigen + flowgconsTime => CurrentVal ($hash, 'showconsumerremaintime', 1), # Verbraucher Restlaufeit in der Energieflußgrafik anzeigen + flowgconsDist => CurrentVal ($hash, 'consumerdist', $fgCDdef), # Abstand Verbrauchericons zueinander + css => AttrVal ($name, 'flowGraphicCss', $cssdef), # flowGraphicCss Styles + genpvdva => AttrVal ($name, 'ctrlGenPVdeviation', 'daily'), # Methode der Abweichungsberechnung + lang => getLang ($hash), + debug => getDebug ($hash), # Debug Module }; my $ret = q{}; @@ -14174,24 +14197,29 @@ sub __weatherOnBeam { return $ret; } -################################################################ +###################################################################################### # Energieflußgrafik -################################################################ +# M - MoveTo setzt den aktuellen Punkt fest, von dem aus der Pfad starten soll +# (https://wiki.selfhtml.org/wiki/SVG/Tutorials/Pfade#MoveTo) +# L - LineTo zeichnet eine Linie vom aktuellen zum angegebenen Punkt +# (https://wiki.selfhtml.org/wiki/SVG/Tutorials/Pfade#LineTo) +###################################################################################### sub _flowGraphic { - my $paref = shift; - my $hash = $paref->{hash}; - my $name = $paref->{name}; - my $type = $paref->{type}; - my $flowgsize = $paref->{flowgsize}; - my $flowgani = $paref->{flowgani}; - my $flowgshift = $paref->{flowgshift}; # Verschiebung der Flußgrafikbox (muß negiert werden) - my $flowgcons = $paref->{flowgcons}; # Verbraucher in der Energieflußgrafik anzeigen - my $flowgconTime = $paref->{flowgconsTime}; # Verbraucher Restlaufeit in der Energieflußgrafik anzeigen - my $flowgconX = $paref->{flowgconX}; - my $flowgconPower = $paref->{flowgconsPower}; - my $cdist = $paref->{flowgconsDist}; # Abstand Consumer zueinander - my $css = $paref->{css}; - my $lang = $paref->{lang}; + my $paref = shift; + my $hash = $paref->{hash}; + my $name = $paref->{name}; + my $type = $paref->{type}; + my $flowgsize = $paref->{flowgsize}; + my $flowgani = $paref->{flowgani}; + my $flowgshift = $paref->{flowgshift}; # Verschiebung der Flußgrafikbox (muß negiert werden) + my $flowgcons = $paref->{flowgcons}; # Verbraucher in der Energieflußgrafik anzeigen + my $flowgconsTime = $paref->{flowgconsTime}; # Verbraucher Restlaufeit in der Energieflußgrafik anzeigen + my $flowgconX = $paref->{flowgconX}; + my $flowgconsPower = $paref->{flowgconsPower}; + my $flowgPrdsPower = 1; # initial Producer akt. Erzeugung anzeigen + my $cdist = $paref->{flowgconsDist}; # Abstand Consumer zueinander + my $css = $paref->{css}; + my $lang = $paref->{lang}; my $style = 'width:98%; height:'.$flowgsize.'px;'; my $animation = $flowgani ? '@keyframes dash { to { stroke-dashoffset: 0; } }' : ''; # Animation Ja/Nein @@ -14200,7 +14228,7 @@ sub _flowGraphic { my $cself = ReadingsNum ($name, 'Current_SelfConsumption', 0); my $cc = CurrentVal ($hash, 'consumption', 0); my $batin = ReadingsNum ($name, 'Current_PowerBatIn', undef); - my $batout = ReadingsNum ($name, 'Current_PowerBatOut', undef); + my $bat2home = ReadingsNum ($name, 'Current_PowerBatOut', undef); my $soc = ReadingsNum ($name, 'Current_BatCharge', 100); my $cc_dummy = $cc; @@ -14254,11 +14282,10 @@ sub _flowGraphic { } } - my $pnodesum = __normDecPlaces ($ppall + $pv2node); # Erzeugung Summe im Knoten - my ($togrid, $tonode, $tobat) = __sortProducer ($pdcr); # lfn Producer sortiert nach ptyp und feed - ## Producer Koordninaten Steuerhash ##################################### + my ($togrid, $tonode, $tobat) = __sortProducer ($pdcr); # lfn Producer sortiert nach ptyp und feed + my $psorted = { '1togrid' => { xicon => -100, xchain => 350, ychain => 420, step => 70, count => scalar @{$togrid}, sorted => $togrid }, # Producer/PV nur zu Grid '2tonode' => { xicon => 350, xchain => 700, ychain => 200, step => $pdist, count => scalar @{$tonode}, sorted => $tonode }, # Producer/PV zum Knoten @@ -14284,22 +14311,21 @@ sub _flowGraphic { $soc < 76 ? 'flowg bat50' : 'flowg bat75'; - if (!defined $batin && !defined $batout) { - $hasbat = 0; - $batin = 0; - $batout = 0; - $soc = 0; + if (!defined $batin && !defined $bat2home) { + $hasbat = 0; + $batin = 0; + $bat2home = 0; + $soc = 0; } - my $node2bat = $batin; + my $node2bat = $batin; + my $grid_color = $node2grid ? 'flowg grid_color1' : 'flowg grid_color2'; # green : red + my $cgc_style = $cgc ? 'flowg active_in' : 'flowg inactive_in'; # cgc current GridConsumption + my $bat2home_style = $bat2home ? 'flowg active_out active_bat_out' : 'flowg inactive_in'; + $grid_color = 'flowg grid_color3' if(!$node2grid && !$cgc && $bat2home); # gray + my $cgc_direction = 'M490,515 L670,590'; - my $grid_color = $node2grid ? 'flowg grid_color1' : 'flowg grid_color2'; - my $cgc_style = $cgc ? 'flowg active_in' : 'flowg inactive_in'; - my $batout_style = $batout ? 'flowg active_out active_bat_out' : 'flowg inactive_in'; - $grid_color = 'flowg grid_color3' if(!$node2grid && !$cgc && $batout); # dritte Farbe - my $cgc_direction = 'M490,515 L670,590'; # Batterie wird geladen - - if ($batout) { # Batterie wird entladen + if ($bat2home) { # Batterie wird entladen my $cgfo = $node2grid - $pv2node; if ($cgfo > 1) { @@ -14310,35 +14336,36 @@ sub _flowGraphic { } } - my $batout_direction = 'M902,515 L730,590'; + my $bat2home_direction = 'M902,515 L730,590'; - if ($node2bat) { # Batterie wird geladen + if ($node2bat) { # Batterie wird geladen my $home2bat = $node2bat - $pv2node; - if ($home2bat > 1) { # Batterieladung anteilig aus Hausnetz geladen - $node2bat -= $home2bat; - $batout_style = 'flowg active_in'; - $batout_direction = 'M730,590 L902,515'; - $batout = $home2bat; + if ($home2bat > 1) { # Batterieladung anteilig aus Hausnetz geladen + $node2bat -= $home2bat; + $bat2home_style = 'flowg active_in'; + $bat2home_direction = 'M730,590 L902,515'; + $bat2home = $home2bat; } } - - $node2bat -= $pv2bat; # abzüglich Direktladung - $pnodesum += abs $node2bat if($node2bat < 0); # Batterie ist voll und SolarLader liefert an Knoten ## Werte / SteuerungVars anpassen ################################### - $flowgcons = 0 if(!$consumercount); # Consumer Anzeige ausschalten wenn keine Consumer definiert - my $pv2home = __normDecPlaces ($cself + $ppall); # Energiefluß vom Knoten zum Haus: Selbstverbrauch + alle Producer (Batterie-In/Solar-Ladegeräte sind nicht in SelfConsumtion enthalten) + my $pnodesum = __normDecPlaces ($ppall + $pv2node); # Erzeugung Summe im Knoten + $pnodesum += abs $node2bat if($node2bat < 0); # Batterie ist voll und SolarLader liefert an Knoten + $node2bat -= $pv2bat; # Knoten -> Bat : abzüglich Direktladung + $flowgcons = 0 if(!$consumercount); # Consumer Anzeige ausschalten wenn keine Consumer definiert + my $pv2home = __normDecPlaces ($cself + $ppall); # Energiefluß vom Knoten zum Haus: Selbstverbrauch + alle Producer (Batterie-In/Solar-Ladegeräte sind nicht in SelfConsumtion enthalten) + ## SVG Box initialisieren mit Grid-Icon ######################################### - my $vbwidth = 800; # width and height specify the viewBox size - my $vbminx = -10 * $flowgshift; # min-x and min-y represent the smallest X and Y coordinates that the viewBox may have + my $vbwidth = 800; # width and height specify the viewBox size + my $vbminx = -10 * $flowgshift; # min-x and min-y represent the smallest X and Y coordinates that the viewBox may have my $vbminy = -25; - my $vbhight = !$flowgcons ? 380 : - !$flowgconTime ? 590 : + my $vbhight = !$flowgcons ? 380 : + !$flowgconsTime ? 590 : 610; $vbhight += 100; @@ -14512,9 +14539,10 @@ END2 if ($hasbat) { my $node2bat_style = $node2bat ? 'flowg active_in active_bat_in' : 'flowg inactive_out'; my $batin_direction = $node2bat < 0 ? 'M910,480 L730,400' : 'M730,400 L910,480'; + $node2bat = abs $node2bat; $ret .= << "END3"; - + END3 } @@ -14613,14 +14641,14 @@ END3 ################################### $cc_dummy = sprintf("%.0f", $cc_dummy); # Verbrauch Dummy-Consumer $ret .= qq{$pnodesum} if ($pnodesum > 0); - $ret .= qq{$soc %} if ($hasbat); # Lage Text Batterieladungszustand + $ret .= qq{$soc %} if ($hasbat); # Lage Text Batterieladungszustand $ret .= qq{$pv2home} if ($pv2home); $ret .= qq{$node2grid} if ($node2grid); $ret .= qq{$cgc} if ($cgc); - $ret .= qq{$batout} if ($batout && $hasbat); + $ret .= qq{$bat2home} if ($bat2home && $hasbat); $ret .= qq{$node2bat} if ($node2bat && $hasbat); - $ret .= qq{$cc}; # Current_Consumption Anlage - $ret .= qq{$cc_dummy} if ($flowgconX && $flowgconPower); # Current_Consumption Dummy + $ret .= qq{$cc}; # Current_Consumption Anlage + $ret .= qq{$cc_dummy} if ($flowgconX && $flowgconsPower); # Current_Consumption Dummy ## Textangabe Producer - in Reihenfolge: zum Grid - zum Knoten - zur Batterie ############################################################################### @@ -14641,7 +14669,7 @@ END3 elsif ($lcp == 2) {$left += 20} elsif ($lcp == 1) {$left += 40} - $ret .= qq{$currentPower} if($flowgconPower); # Lage producer Consumption + $ret .= qq{$currentPower} if($flowgPrdsPower); # Leistungszahl wieder zurück an den Ursprungspunkt #################################################### @@ -14672,8 +14700,8 @@ END3 $lcp = length $currentPower; - #$ret .= qq{$currentPower} if ($flowgconPower); # Lage Consumer Consumption - #$ret .= qq{$consumerTime} if ($flowgconTime); # Lage Consumer Restlaufzeit + #$ret .= qq{$currentPower} if ($flowgconsPower); # Lage Consumer Consumption + #$ret .= qq{$consumerTime} if ($flowgconsTime); # Lage Consumer Restlaufzeit # Verbrauchszahl abhängig von der Größe entsprechend auf der x-Achse verschieben ################################################################################## @@ -14683,8 +14711,8 @@ END3 elsif ($lcp == 2) {$cons_left += 7 } elsif ($lcp == 1) {$cons_left += 25} - $ret .= qq{$currentPower} if ($flowgconPower); # Lage Consumer Consumption - $ret .= qq{$consumerTime} if ($flowgconTime); # Lage Consumer Restlaufzeit + $ret .= qq{$currentPower} if ($flowgconsPower); # Lage Consumer Consumption + $ret .= qq{$consumerTime} if ($flowgconsTime); # Lage Consumer Restlaufzeit # Verbrauchszahl wieder zurück an den Ursprungspunkt ###################################################### @@ -20984,6 +21012,52 @@ to ensure that the system configuration is correct.
+ + +
  • flowGraphicControl <Key1=Value1> <Key2=Value2> ...
    + By optionally specifying the key=value pairs listed below, various display properties of the energy flow + graph can be influenced.
    + The entry can be made in several lines. +

    + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      animate Animates the energy flow graphic if displayed. (graphicSelect)
      0 - Animation off, 1 - Animation on, default: 0
      consumerdist Controls the distance between the consumer icons in the energy flow graphic.
      Value: 80 ... 500, default: 130
      shift Horizontal shift of the energy flow graph.
      Value: -80 ... 80, default: 0
      showconsumer Display of consumers in the energy flow chart.
      0 - Display off, 1 - Display on, default: 1
      showconsumerdummy Controls the display of the dummy consumer. The dummy consumer is assigned the
      energy consumption that cannot be assigned to other consumers.
      0 - Display off, 1 - Display on, default: 1
      showconsumerpower Controls the display of the consumers' energy consumption.
      0 - Display off, 1 - Display on, default: 1
      showconsumerremaintime Controls the display of the remaining running time (minutes) of the loads.
      0 - Display off, 1 - Display on, default: 1
      size Size of the energy flow graphic in pixels if displayed. (graphicSelect)
      Value: Integer, default: 400
      +
    + +
      + Example:
      + attr <name> flowGraphicControl size=300 animate=0 consumerdist=100 showconsumer=1 showconsumerdummy=0 shift=-20 +
    + +
  • +
  • flowGraphicCss
    @@ -21009,66 +21083,6 @@ to ensure that the system configuration is correct.

  • - -
  • flowGraphicAnimate
    - Animates the energy flow graph if displayed. - Siehe auch Attribut graphicSelect.
    - (default: 0) -
  • -
    - - -
  • flowGraphicConsumerDistance
    - Controls the spacing between consumer icons in the energy flow graph if displayed. - Siehe auch Attribut flowGraphicShowConsumer.
    - (default: 130) -
  • -
    - - -
  • flowGraphicShowConsumer
    - Suppresses the display of loads in the energy flow graph when set to "0".
    - (default: 1) -
  • -
    - - -
  • flowGraphicShift <Pixel/10>
    - Horizontal shift of the energy flow graph.
    - (default: 0) -
  • -
    - - -
  • flowGraphicShowConsumerDummy
    - Shows or suppresses the dummy consumer in the energy flow graph.
    - The dummy consumer is assigned the energy consumption that could not be assigned to other consumers.
    - (default: 1) -
  • -
    - - -
  • flowGraphicShowConsumerPower
    - Shows or suppresses the energy consumption of the loads in the energy flow graph.
    - (default: 1) -
  • -
    - - -
  • flowGraphicShowConsumerRemainTime
    - Shows or suppresses the remaining time (in minutes) of the loads in the energy flow graph.
    - (default: 1) -
  • -
    - - -
  • flowGraphicSize <Pixel>
    - Size of the energy flow graph if displayed. - Siehe auch Attribut graphicSelect.
    - (default: 400) -
  • -
    -
  • graphicBeam1Color
    Color selection of the primary bar of the first level.
    @@ -21251,7 +21265,6 @@ to ensure that the system configuration is correct. Consumer<br>Quickstart:consumerImmediatePlanning : : : Weather:graphicShowWeather : : : History:graphicHistoryHour : : : - GraphicSize:flowGraphicSize : : : ShowNight:graphicShowNight : : : Debug:ctrlDebug : : : @@ -23418,6 +23431,52 @@ die ordnungsgemäße Anlagenkonfiguration geprüft werden.

  • + + +
  • flowGraphicControl <Schlüssel1=Wert1> <Schlüssel2=Wert2> ...
    + Durch die optionale Angabe der nachfolgend aufgeführten Schlüssel=Wert Paare können verschiedene + Anzeigeeigenschaften der Energieflußgrafik beeinflusst werden.
    + Die Eingabe kann mehrzeilig erfolgen. +

    + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      animate Animiert die Energieflußgrafik sofern angezeigt. (graphicSelect)
      0 - Animation aus, 1 - Animation an, default: 0
      consumerdist Steuert den Abstand zwischen den Consumer-Icons in der Energieflußgrafik.
      Wert: 80 ... 500, default: 130
      shift Horizontale Verschiebung der Energieflußgrafik.
      Wert: -80 ... 80, default: 0
      showconsumer Anzeige der Verbraucher in der Energieflußgrafik.
      0 - Anzeige aus, 1 - Anzeige an, default: 1
      showconsumerdummy Steuert die Anzeige des Dummy-Verbrauchers. Dem Dummy-Verbraucher wird der
      Energieverbrauch zugewiesen der anderen Verbrauchern nicht zugeordnet werden kann.
      0 - Anzeige aus, 1 - Anzeige an, default: 1
      showconsumerpower Steuert die Anzeige des Energieverbrauchs der Verbraucher.
      0 - Anzeige aus, 1 - Anzeige an, default: 1
      showconsumerremaintime Steuert die Anzeige der Restlaufzeit (Minuten) der Verbraucher.
      0 - Anzeige aus, 1 - Anzeige an, default: 1
      size Größe der Energieflußgrafik in Pixel sofern angezeigt. (graphicSelect)
      Wert: Ganzzahl, default: 400
      +
    + +
      + Beispiel:
      + attr <name> flowGraphicControl size=300 animate=0 consumerdist=100 showconsumer=1 showconsumerdummy=0 shift=-20 +
    + +
  • +
  • flowGraphicCss
    @@ -23443,66 +23502,6 @@ die ordnungsgemäße Anlagenkonfiguration geprüft werden.

  • - -
  • flowGraphicAnimate
    - Animiert die Energieflußgrafik sofern angezeigt. - Siehe auch Attribut graphicSelect.
    - (default: 0) -
  • -
    - - -
  • flowGraphicConsumerDistance
    - Steuert den Abstand zwischen den Consumer-Icons in der Energieflußgrafik sofern angezeigt. - Siehe auch Attribut flowGraphicShowConsumer.
    - (default: 130) -
  • -
    - - -
  • flowGraphicShowConsumer
    - Unterdrückt die Anzeige der Verbraucher in der Energieflußgrafik wenn auf "0" gesetzt.
    - (default: 1) -
  • -
    - - -
  • flowGraphicShift <Pixel/10>
    - Horizontale Verschiebung der Energieflußgrafik.
    - (default: 0) -
  • -
    - - -
  • flowGraphicShowConsumerDummy
    - Zeigt bzw. unterdrückt den Dummy-Verbraucher in der Energieflußgrafik.
    - Dem Dummy-Verbraucher wird der Energieverbrauch zugewiesen der anderen Verbrauchern nicht zugeordnet werden konnte.
    - (default: 1) -
  • -
    - - -
  • flowGraphicShowConsumerPower
    - Zeigt bzw. unterdrückt den Energieverbrauch der Verbraucher in der Energieflußgrafik.
    - (default: 1) -
  • -
    - - -
  • flowGraphicShowConsumerRemainTime
    - Zeigt bzw. unterdrückt die Restlaufzeit (in Minuten) der Verbraucher in der Energieflußgrafik.
    - (default: 1) -
  • -
    - - -
  • flowGraphicSize <Pixel>
    - Größe der Energieflußgrafik sofern angezeigt. - Siehe auch Attribut graphicSelect.
    - (default: 400) -
  • -
    -
  • graphicBeam1Color
    Farbauswahl des primären Balken der ersten Ebene.
    @@ -23685,7 +23684,6 @@ die ordnungsgemäße Anlagenkonfiguration geprüft werden. Consumer<br>Sofortstart:consumerImmediatePlanning : : : Wetter:graphicShowWeather : : : History:graphicHistoryHour : : : - GraphicSize:flowGraphicSize : : : ShowNight:graphicShowNight : : : Debug:ctrlDebug : : :