diff --git a/fhem/CHANGED b/fhem/CHANGED index f2f435f33..2fbca7de5 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,6 @@ # Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Do not insert empty lines here, update check depends on it + - feature: 76_SolarForecast: show surplus method/result in clegend mouse-over - feature: 93_DbRep: attr device/reading can now be entered in multiple lines - change: 76_SolarForecast: minor debug info change - feature: 76_SolarForecast: Version 1.54.4 diff --git a/fhem/FHEM/76_SolarForecast.pm b/fhem/FHEM/76_SolarForecast.pm index ef8bf7407..84a398802 100644 --- a/fhem/FHEM/76_SolarForecast.pm +++ b/fhem/FHEM/76_SolarForecast.pm @@ -160,6 +160,7 @@ BEGIN { # Versions History intern my %vNotesIntern = ( + "1.54.6" => "29.07.2025 _graphicConsumerLegend: show surplus method and result in consumer legend hoover ", "1.54.5" => "24.07.2025 isAddSwitchOnCond/isAddSwitchOffCond: change debug info ", "1.54.4" => "22.07.2025 replace length by new sub strlength, Consumer attr new key 'aliasshort', change code of medianArray ". "medianArray: can optional use newest 3..20 elements, avgArray: use the newest elements if num is set ". @@ -13001,11 +13002,11 @@ sub __setConsRcmdState { my $debug = $paref->{debug}; my $hash = $defs{$name}; - my $nompower = ConsumerVal ($hash, $c, 'power', 0); # Consumer nominale Leistungsaufnahme (W) + my $nompower = ConsumerVal ($name, $c, 'power', 0); # Consumer nominale Leistungsaufnahme (W) my $ccr = AttrVal ($name, 'ctrlConsRecommendReadings', ''); # Liste der Consumer für die ConsumptionRecommended-Readings erstellt werden sollen my $rescons = isConsumerPhysOn ($hash, $c) ? 0 : $nompower; # resultierender Verbauch nach Einschaltung Consumer - my ($method, $surplus) = determSurplus ($hash, $c); # Consumer spezifische Ermittlung des Energieüberschußes + my ($method, $surplus) = determSurplus ($name, $c); # Consumer spezifische Ermittlung des Energieüberschußes $data{$name}{consumers}{$c}{surpmethResult} = $surplus; # Ergebnis der Surplus Ermittlung im Consumerstammsatz speichern, Forum: https://forum.fhem.de/index.php?msg=1345058 @@ -16559,12 +16560,12 @@ sub _graphicConsumerLegend { my $caicon = $paref->{caicon}; # Consumer AdviceIcon my ($err, $cname, $dswname) = getCDnames ($hash, $c); # Consumer und Switch Device Name - my $calias = ConsumerVal ($hash, $c, 'alias', $cname); # Alias des Consumerdevices - my $cicon = ConsumerVal ($hash, $c, 'icon', ''); # Icon des Consumerdevices - my $oncom = ConsumerVal ($hash, $c, 'oncom', ''); # Consumer Einschaltkommando - my $offcom = ConsumerVal ($hash, $c, 'offcom', ''); # Consumer Ausschaltkommando - my $autord = ConsumerVal ($hash, $c, 'autoreading', ''); # Readingname f. Automatiksteuerung - my $auto = ConsumerVal ($hash, $c, 'auto', 1); # Automatic Mode + my $calias = ConsumerVal ($name, $c, 'alias', $cname); # Alias des Consumerdevices + my $cicon = ConsumerVal ($name, $c, 'icon', ''); # Icon des Consumerdevices + my $oncom = ConsumerVal ($name, $c, 'oncom', ''); # Consumer Einschaltkommando + my $offcom = ConsumerVal ($name, $c, 'offcom', ''); # Consumer Ausschaltkommando + my $autord = ConsumerVal ($name, $c, 'autoreading', ''); # Readingname f. Automatiksteuerung + my $auto = ConsumerVal ($name, $c, 'auto', 1); # Automatic Mode my $cmdon = qq{"FW_cmd('$::FW_ME$::FW_subdir?XHR=1&cmd=set $name clientAction $c 0 set $dswname $oncom')"}; my $cmdoff = qq{"FW_cmd('$::FW_ME$::FW_subdir?XHR=1&cmd=set $name clientAction $c 0 set $dswname $offcom')"}; @@ -16596,8 +16597,12 @@ sub _graphicConsumerLegend { my ($iilt,$rlt) = isInLocktime ($paref); # Sperrzeit Status ermitteln my $mode = getConsumerPlanningMode ($hash, $c); # Planungsmode 'can' oder 'must' + my $sm = ConsumerVal ($name, $c, 'surpmeth', 'default'); + $sm = $sm eq 'default' || $sm =~ /_/ ? $sm : $sm.'_all'; + my $smr = ConsumerVal ($name, $c, 'surpmethResult', 0); my $pstate = $caicon eq "times" ? $hqtxt{pstate}{$lang} : $htitles{pstate}{$lang}; my $surplusinfo = isConsRcmd($hash, $c) ? $htitles{splus}{$lang} : $htitles{nosplus}{$lang}; + $surplusinfo .= " (${sm}: $smr W)"; $pstate =~ s//$mode/xs; $pstate =~ s//$planstate/xs; @@ -22057,12 +22062,11 @@ return $out; # ##################################################################### sub determSurplus { - my $hash = shift; + my $name = shift; my $c = shift; - my $surpmeth = ConsumerVal ($hash, $c, 'surpmeth', 'default'); - my $splref = CurrentVal ($hash, 'surplusslidereg', ''); - my $name = $hash->{NAME}; + my $surpmeth = ConsumerVal ($name, $c, 'surpmeth', 'default'); + my $splref = CurrentVal ($name, 'surplusslidereg', ''); my $method = 'default'; my ($surplus, $fallback); @@ -22078,7 +22082,7 @@ sub determSurplus { $method = $num ? "average:$num" : "average:all"; } elsif ($surpmeth eq 'default') { # aktueller Energieüberschuß - $surplus = CurrentVal ($hash, 'surplus', 0); + $surplus = CurrentVal ($name, 'surplus', 0); $method = 'default'; } elsif ($surpmeth =~ /.*:.*/xs) { @@ -22101,7 +22105,7 @@ sub determSurplus { } if ($fallback) { # Fall Back - $surplus = CurrentVal ($hash, 'surplus', 0); + $surplus = CurrentVal ($name, 'surplus', 0); $method = $method." but fallback to 'default'"; }