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 : : : |