From 0a0d3bc8d2e12bc230a207d1ead87d9a7b8bc3b6 Mon Sep 17 00:00:00 2001 From: nasseeder1 Date: Sat, 4 Sep 2021 10:54:49 +0000 Subject: [PATCH] 76_SolarForecast.pm: contrib 0.55.0 git-svn-id: https://svn.fhem.de/fhem/trunk@24913 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/contrib/DS_Starter/76_SolarForecast.pm | 68 +++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/fhem/contrib/DS_Starter/76_SolarForecast.pm b/fhem/contrib/DS_Starter/76_SolarForecast.pm index 9d25220c4..d02bd3ea7 100644 --- a/fhem/contrib/DS_Starter/76_SolarForecast.pm +++ b/fhem/contrib/DS_Starter/76_SolarForecast.pm @@ -3655,6 +3655,7 @@ sub collectAllRegConsumers { my $type = $hash->{TYPE}; + delete $data{$type}{$name}{consumers}; delete $data{$type}{$name}{current}{consumerdevs}; for my $c (1..$maxconsumer) { @@ -5020,6 +5021,7 @@ return $ret; ################################################################ sub _flowGraphic { my $paref = shift; + my $hash = $paref->{hash}; my $name = $paref->{name}; my $flowgh = $paref->{flowgh}; my $flowgani = $paref->{flowgani}; @@ -5112,6 +5114,39 @@ sub _flowGraphic { END0 + ## get consumer list and display it in Graphics + ################################################ + my $type = $hash->{TYPE}; + my @consumers = sort{$a<=>$b} keys %{$data{$type}{$name}{consumers}}; # definierte Verbraucher ermitteln + my $consumercount = scalar @consumers; + my $consumer_start = 0; + my $consumer_distance = 100; + + if ($consumercount % 2) { + $consumer_start = 250 - ($consumer_distance * (($consumercount -1) / 2)); + } + else { + $consumer_start = 250 - ((($consumer_distance ) / 2) * ($consumercount-1)); + } + + $consumer_start = 0 if ($consumer_start < 0); + my $pos_left = $consumer_start; + + for my $c0 (@consumers) { + next if (!$c0); + my ($cons,$im,$start,$end) = split (':', $c0); + #Log3 ($name, 1, "$name - Energieflussgrafik, Consumer to show a -> $cons"); + + my $cname = ConsumerVal ($hash, $c0, "name", ""); # Name des Consumerdevices + my $cicon = ConsumerVal ($hash, $c0, "icon", ""); # Icon des Consumerdevices + + $ret .= ''; + #$ret .= FW_makeImage($cicon,$cname); + $ret .= ''; + $ret .= ' '; + $pos_left = $pos_left + $consumer_distance; + } + if ($hasbat) { $ret .= << "END1"; @@ -5140,6 +5175,23 @@ END2 END3 } + + ## get consumer list and display it in Graphics + ################################################ + $pos_left = $consumer_start * 2; + + for my $c1 (@consumers) { + next if(!$c1); + my ($cons,$im,$start,$end) = split (':', $c1); + #Log3 ($name, 1, "$name - Energieflussgrafik, Consumer to show b -> $cons"); + + my $consumer_style = 'flowg inactive_out'; + $consumer_style = 'flowg active_out' if(ReadingsNum($name, "consumer${cons}_currentPower", 0) > 0); + + $ret .= qq{}; + + $pos_left = $pos_left + ($consumer_distance * 2); + } $ret .= qq{$cpv} if ($cpv); $ret .= qq{$soc %} if ($hasbat); @@ -5149,6 +5201,22 @@ END3 $ret .= qq{$batout} if ($batout && $hasbat); $ret .= qq{$batin} if ($batin && $hasbat); + ## get consumer list and display it in Graphics + ################################################ + $pos_left = $consumer_start * 2; + + for my $c2 (@consumers) { + next if(!$c2); + my ($cons,$im,$start,$end) = split (':', $c2); + #Log3 ($name, 1, "$name - Energieflussgrafik, Consumer to show c -> $cons"); + + my $power = ReadingsNum($name, "consumer${cons}_currentPower", 0); + + $ret .= qq{$power}; + + $pos_left = $pos_left + ($consumer_distance * 2); + } + $ret .= qq{}; return $ret;