76_SolarForecast: contrib Version 1.52.4

git-svn-id: https://svn.fhem.de/fhem/trunk@29978 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
DS_Starter
2025-05-19 20:27:20 +00:00
parent 29c0435974
commit ad773d20fe

View File

@@ -161,7 +161,7 @@ BEGIN {
# Versions History intern # Versions History intern
my %vNotesIntern = ( my %vNotesIntern = (
"1.52.4" => "19.05.2025 commandref edited, setupInverterDevXX: change pv to pvOut, new key pvIn ". "1.52.4" => "19.05.2025 commandref edited, setupInverterDevXX: change pv to pvOut, new key pvIn ".
"fix devision by zero -Forum: https://forum.fhem.de/index.php?msg=1341884 ", "fix devision by zero -Forum: https://forum.fhem.de/index.php?msg=1341884, __calcFcQuality: minor code change ",
"1.52.3" => "17.05.2025 _transferInverterValues: new property itype, graphicControl: new keys beamPaddingBottom, beamPaddingTop ". "1.52.3" => "17.05.2025 _transferInverterValues: new property itype, graphicControl: new keys beamPaddingBottom, beamPaddingTop ".
" setter attrKeyVal has dorp down list of all composite attributes ", " setter attrKeyVal has dorp down list of all composite attributes ",
"1.52.2" => "14.05.2025 _flowGraphic: Discharge the battery directly into the household grid if no battery inverter is defined ". "1.52.2" => "14.05.2025 _flowGraphic: Discharge the battery directly into the household grid if no battery inverter is defined ".
@@ -11035,7 +11035,7 @@ sub _transferBatteryValues {
writeToHistory ( { paref => $paref, key => 'socwhsum', val => (sprintf "%.0f", $socwhsum), hour => $nhour } ); writeToHistory ( { paref => $paref, key => 'socwhsum', val => (sprintf "%.0f", $socwhsum), hour => $nhour } );
if ($bcapsum) { if ($bcapsum) {
my $soctotal = sprintf "%.0f", ($socwhsum / $bcapsum * 100); # resultierender SoC (%) aller Batterien als "eine" my $soctotal = sprintf "%.2f", ($socwhsum / $bcapsum * 100); # resultierender SoC (%) aller Batterien als "eine"
$data{$name}{current}{batsoctotal} = $soctotal; $data{$name}{current}{batsoctotal} = $soctotal;
push @{$data{$name}{current}{batsocslidereg}}, $soctotal; # Schieberegister average SOC aller Batterien push @{$data{$name}{current}{batsocslidereg}}, $soctotal; # Schieberegister average SOC aller Batterien
} }
@@ -14032,8 +14032,8 @@ sub __calcNewFactor_migrated {
## Qualität berechnen ## Qualität berechnen
####################### #######################
$oldfac = sprintf "%.2f", $oldfac; $oldfac = sprintf "%.2f", $oldfac;
$pvrl = sprintf "%.0f", $pvrl; #$pvrl = sprintf "%.0f", $pvrl;
$pvfc = sprintf "%.0f", $pvfc; #$pvfc = sprintf "%.0f", $pvfc;
my $qual = __calcFcQuality ($pvfc, $pvrl); # Qualität der Vorhersage für die vergangene Stunde my $qual = __calcFcQuality ($pvfc, $pvrl); # Qualität der Vorhersage für die vergangene Stunde
debugLog ($paref, 'pvCorrectionWrite', "$calc Corrf -> determined values - hour: $hh, Sun Altitude range: $sabin, Cloud range: $crang, old factor: $oldfac, new factor: $factor, days: $dnum"); debugLog ($paref, 'pvCorrectionWrite', "$calc Corrf -> determined values - hour: $hh, Sun Altitude range: $sabin, Cloud range: $crang, old factor: $oldfac, new factor: $factor, days: $dnum");
@@ -14066,8 +14066,8 @@ sub __calcFcQuality {
return if(!$pvfc || !$pvrl); return if(!$pvfc || !$pvrl);
$pvrl = sprintf "%.0f", $pvrl; #$pvrl = sprintf "%.0f", $pvrl;
$pvfc = sprintf "%.0f", $pvfc; #$pvfc = sprintf "%.0f", $pvfc;
my $diff = $pvfc - $pvrl; my $diff = $pvfc - $pvrl;
my $hdv = 1 - abs ($diff / $pvrl); # Abweichung der Stunde, 1 = bestmöglicher Wert my $hdv = 1 - abs ($diff / $pvrl); # Abweichung der Stunde, 1 = bestmöglicher Wert