diff --git a/fhem/contrib/DS_Starter/76_SolarForecast.pm b/fhem/contrib/DS_Starter/76_SolarForecast.pm index 80f0893ce..b6397b2a4 100644 --- a/fhem/contrib/DS_Starter/76_SolarForecast.pm +++ b/fhem/contrib/DS_Starter/76_SolarForecast.pm @@ -157,7 +157,8 @@ BEGIN { # Versions History intern my %vNotesIntern = ( "1.34.2" => "06.10.2024 _flowGraphic: replace inverter icon by FHEM SVG-Icon (sun/moon), sun or icon of moon phases according ". - "day/night new optional key 'icon' in attr setupInverterDev, resize all flowgraphic icons to a standard scaling ", + "day/night new optional key 'icon' in attr setupInverterDev, resize all flowgraphic icons to a standard ". + "scaling, __switchConsumer: add ___setConsumerSwitchingState before switch subs ", "1.34.1" => "04.10.2024 _flowGraphic: replace house by FHEM SVG-Icon ", "1.34.0" => "03.10.2024 implement ___areaFactorTrack for calculation of direct area factor and share of direct radiation ". "note in Reading pvCorrectionFactor_XX if AI prediction was used in relevant hour ". @@ -10292,11 +10293,19 @@ return; ################################################################ sub __switchConsumer { my $paref = shift; + my $name = $paref->{name}; + my $c = $paref->{consumer}; + my $debug = $paref->{debug}; my $state = $paref->{state}; + + if ($debug =~ /consumerSwitching${c}/x) { + Log3 ($name, 1, qq{$name DEBUG> ############### consumerSwitching consumer "$c" ###############}); + } - $state = ___switchConsumerOn ($paref); # Verbraucher Einschaltbedingung prüfen + auslösen - $state = ___switchConsumerOff ($paref); # Verbraucher Ausschaltbedingung prüfen + auslösen - $state = ___setConsumerSwitchingState ($paref); # Consumer aktuelle Schaltzustände ermitteln & setzen + $state = ___setConsumerSwitchingState ($paref); # Consumer Schaltzustände ermitteln & setzen + $state = ___switchConsumerOn ($paref); # Verbraucher Einschaltbedingung prüfen + auslösen + $state = ___switchConsumerOff ($paref); # Verbraucher Ausschaltbedingung prüfen + auslösen + $state = ___setConsumerSwitchingState ($paref); # Consumer Schaltzustände nach Switching ermitteln & setzen $paref->{state} = $state; @@ -10347,7 +10356,7 @@ sub ___switchConsumerOn { my $nompow = ConsumerVal ($hash, $c, 'power', '-'); my $sp = CurrentVal ($hash, 'surplus', 0); - Log3 ($name, 1, qq{$name DEBUG> ############### consumerSwitching consumer "$c" ###############}); + #Log3 ($name, 1, qq{$name DEBUG> ############### consumerSwitching consumer "$c" ###############}); Log3 ($name, 1, qq{$name DEBUG> consumer "$c" - general switching parameters => }. qq{auto mode: $auto, Current household consumption: $cons W, nompower: $nompow, surplus: $sp W, }. qq{planstate: $pstate, starttime: }.($startts ? (timestampToTimestring ($startts, $lang))[0] : "undef") @@ -14352,23 +14361,21 @@ END3 # Leistungszahl abhängig von der Größe entsprechend auf der x-Achse verschieben ############################################################################### - $lcp >= 5 ? $pos_left -= 10 : - $lcp == 4 ? $pos_left += 10 : - $lcp == 3 ? $pos_left += 15 : - $lcp == 2 ? $pos_left += 20 : - $lcp == 1 ? $pos_left += 40 : - $pos_left; + if ($lcp >= 5) {$pos_left -= 10} + elsif ($lcp == 4) {$pos_left += 10} + elsif ($lcp == 3) {$pos_left += 15} + elsif ($lcp == 2) {$pos_left += 20} + elsif ($lcp == 1) {$pos_left += 40} $ret .= qq{$currentPower} if($flowgconPower); # Lage producer Consumption # Leistungszahl wieder zurück an den Ursprungspunkt #################################################### - $lcp >= 5 ? $pos_left += 10 : - $lcp == 4 ? $pos_left -= 10 : - $lcp == 3 ? $pos_left -= 15 : - $lcp == 2 ? $pos_left -= 20 : - $lcp == 1 ? $pos_left -= 40 : - $pos_left; + if ($lcp >= 5) {$pos_left += 10} + elsif ($lcp == 4) {$pos_left -= 10} + elsif ($lcp == 3) {$pos_left -= 15} + elsif ($lcp == 2) {$pos_left -= 20} + elsif ($lcp == 1) {$pos_left -= 40} $pos_left += ($consDist * 2); } @@ -14396,24 +14403,22 @@ END3 # Verbrauchszahl abhängig von der Größe entsprechend auf der x-Achse verschieben ################################################################################## - $lcp >= 5 ? $pos_left -= 40 : - $lcp == 4 ? $pos_left -= 25 : - $lcp == 3 ? $pos_left -= 5 : - $lcp == 2 ? $pos_left += 7 : - $lcp == 1 ? $pos_left += 25 : - $pos_left; + if ($lcp >= 5) {$pos_left -= 40} + elsif ($lcp == 4) {$pos_left -= 25} + elsif ($lcp == 3) {$pos_left -= 5 } + elsif ($lcp == 2) {$pos_left += 7 } + elsif ($lcp == 1) {$pos_left += 25} $ret .= qq{$currentPower} if ($flowgconPower); # Lage Consumer Consumption $ret .= qq{$consumerTime} if ($flowgconTime); # Lage Consumer Restlaufzeit # Verbrauchszahl wieder zurück an den Ursprungspunkt ###################################################### - $lcp >= 5 ? $pos_left += 40 : - $lcp == 4 ? $pos_left += 25 : - $lcp == 3 ? $pos_left += 5 : - $lcp == 2 ? $pos_left -= 7 : - $lcp == 1 ? $pos_left -= 25 : - $pos_left; + if ($lcp >= 5) {$pos_left += 40} + elsif ($lcp == 4) {$pos_left += 25} + elsif ($lcp == 3) {$pos_left += 5 } + elsif ($lcp == 2) {$pos_left -= 7 } + elsif ($lcp == 1) {$pos_left -= 25} $pos_left += ($consDist * 2); }