76_SolarForecast: Version 1.60.5
git-svn-id: https://svn.fhem.de/fhem/trunk@30532 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
@@ -12417,6 +12417,7 @@ sub __batChargeOptTargetPower {
|
|||||||
Ereq => $runwhneed,
|
Ereq => $runwhneed,
|
||||||
replacement => $replacement,
|
replacement => $replacement,
|
||||||
achievable => $achievable,
|
achievable => $achievable,
|
||||||
|
befficiency => $befficiency,
|
||||||
minute => $minute
|
minute => $minute
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@@ -12457,7 +12458,7 @@ sub __batChargeOptTargetPower {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
$pneedmin = ___batAdjustEfficiencyAndLimits ($pneedmin, $befficiency, $bpinmax, 0); # Apply Bat Effizienz und Ladeleistungsbegrenzungen
|
$pneedmin = ___batAdjustLimits ($pneedmin, $bpinmax, 0); # Ladeleistungsbegrenzungen
|
||||||
|
|
||||||
$hsurp->{$hod}{$sbn}{pneedmin} = $pneedmin;
|
$hsurp->{$hod}{$sbn}{pneedmin} = $pneedmin;
|
||||||
|
|
||||||
@@ -12505,7 +12506,7 @@ sub __batChargeOptTargetPower {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
$target = ___batAdjustEfficiencyAndLimits ($target, $befficiency, $bpinmax, $bpinreduced); # Apply Bat Effizienz und Ladeleistungsbegrenzungen
|
$target = ___batAdjustLimits ($target, $bpinmax, $bpinreduced); # Ladeleistungsbegrenzungen
|
||||||
|
|
||||||
$otp->{$sbn}{target} = $target;
|
$otp->{$sbn}{target} = $target;
|
||||||
}
|
}
|
||||||
@@ -12643,15 +12644,14 @@ return $ph;
|
|||||||
|
|
||||||
################################################################
|
################################################################
|
||||||
# Endbehandlung einer Leistungsvorgabe für Batterieladung
|
# Endbehandlung einer Leistungsvorgabe für Batterieladung
|
||||||
################################################################
|
################################################################
|
||||||
sub ___batAdjustEfficiencyAndLimits {
|
sub ___batAdjustLimits {
|
||||||
my ($ph, $eff, $max, $min) = @_;
|
my ($ph, $max, $min) = @_;
|
||||||
|
|
||||||
$ph /= $eff;
|
|
||||||
$ph = min ($ph, $max); # Begrenzung auf max. mögliche Batterieladeleistung
|
$ph = min ($ph, $max); # Begrenzung auf max. mögliche Batterieladeleistung
|
||||||
$ph = max ($ph, $min); # Begrenzung auf min. gewünschte Batterieladeleistung
|
$ph = max ($ph, $min); # Begrenzung auf min. gewünschte Batterieladeleistung
|
||||||
$ph = sprintf "%.0f", $ph;
|
$ph = sprintf "%.0f", $ph;
|
||||||
|
|
||||||
return $ph;
|
return $ph;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -12702,6 +12702,7 @@ sub ___batFindMinPhWh {
|
|||||||
my $Ereq = $paref->{Ereq};
|
my $Ereq = $paref->{Ereq};
|
||||||
my $replacement = $paref->{replacement};
|
my $replacement = $paref->{replacement};
|
||||||
my $achievable = $paref->{achievable};
|
my $achievable = $paref->{achievable};
|
||||||
|
my $befficiency = $paref->{befficiency};
|
||||||
my $minute = $paref->{minute};
|
my $minute = $paref->{minute};
|
||||||
|
|
||||||
my @hods = @$hodsref;
|
my @hods = @$hodsref;
|
||||||
@@ -12710,6 +12711,7 @@ sub ___batFindMinPhWh {
|
|||||||
my $eps = 0.5; # minimale Genauigkeit in Wh (1e-3)
|
my $eps = 0.5; # minimale Genauigkeit in Wh (1e-3)
|
||||||
my $max_iter = 100; # Zwangsabbruch nach X Durchläufen
|
my $max_iter = 100; # Zwangsabbruch nach X Durchläufen
|
||||||
my $loop = 0;
|
my $loop = 0;
|
||||||
|
$Ereq /= $befficiency;
|
||||||
my $cap;
|
my $cap;
|
||||||
|
|
||||||
if (!$achievable) {
|
if (!$achievable) {
|
||||||
@@ -12735,7 +12737,7 @@ sub ___batFindMinPhWh {
|
|||||||
|
|
||||||
if ($nhr eq '00') { $cap = min ($mid, $hsurp->{$hod}{surplswh}) / 60 * (60 - int $minute) } # Zeitgewichtung aktuelle Stunde
|
if ($nhr eq '00') { $cap = min ($mid, $hsurp->{$hod}{surplswh}) / 60 * (60 - int $minute) } # Zeitgewichtung aktuelle Stunde
|
||||||
else { $cap = min ($mid, $hsurp->{$hod}{surplswh}) }
|
else { $cap = min ($mid, $hsurp->{$hod}{surplswh}) }
|
||||||
|
|
||||||
$charged += $cap // 0;
|
$charged += $cap // 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12417,6 +12417,7 @@ sub __batChargeOptTargetPower {
|
|||||||
Ereq => $runwhneed,
|
Ereq => $runwhneed,
|
||||||
replacement => $replacement,
|
replacement => $replacement,
|
||||||
achievable => $achievable,
|
achievable => $achievable,
|
||||||
|
befficiency => $befficiency,
|
||||||
minute => $minute
|
minute => $minute
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@@ -12457,7 +12458,7 @@ sub __batChargeOptTargetPower {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
$pneedmin = ___batAdjustEfficiencyAndLimits ($pneedmin, $befficiency, $bpinmax, 0); # Apply Bat Effizienz und Ladeleistungsbegrenzungen
|
$pneedmin = ___batAdjustLimits ($pneedmin, $bpinmax, 0); # Ladeleistungsbegrenzungen
|
||||||
|
|
||||||
$hsurp->{$hod}{$sbn}{pneedmin} = $pneedmin;
|
$hsurp->{$hod}{$sbn}{pneedmin} = $pneedmin;
|
||||||
|
|
||||||
@@ -12505,7 +12506,7 @@ sub __batChargeOptTargetPower {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
$target = ___batAdjustEfficiencyAndLimits ($target, $befficiency, $bpinmax, $bpinreduced); # Apply Bat Effizienz und Ladeleistungsbegrenzungen
|
$target = ___batAdjustLimits ($target, $bpinmax, $bpinreduced); # Ladeleistungsbegrenzungen
|
||||||
|
|
||||||
$otp->{$sbn}{target} = $target;
|
$otp->{$sbn}{target} = $target;
|
||||||
}
|
}
|
||||||
@@ -12643,15 +12644,14 @@ return $ph;
|
|||||||
|
|
||||||
################################################################
|
################################################################
|
||||||
# Endbehandlung einer Leistungsvorgabe für Batterieladung
|
# Endbehandlung einer Leistungsvorgabe für Batterieladung
|
||||||
################################################################
|
################################################################
|
||||||
sub ___batAdjustEfficiencyAndLimits {
|
sub ___batAdjustLimits {
|
||||||
my ($ph, $eff, $max, $min) = @_;
|
my ($ph, $max, $min) = @_;
|
||||||
|
|
||||||
$ph /= $eff;
|
|
||||||
$ph = min ($ph, $max); # Begrenzung auf max. mögliche Batterieladeleistung
|
$ph = min ($ph, $max); # Begrenzung auf max. mögliche Batterieladeleistung
|
||||||
$ph = max ($ph, $min); # Begrenzung auf min. gewünschte Batterieladeleistung
|
$ph = max ($ph, $min); # Begrenzung auf min. gewünschte Batterieladeleistung
|
||||||
$ph = sprintf "%.0f", $ph;
|
$ph = sprintf "%.0f", $ph;
|
||||||
|
|
||||||
return $ph;
|
return $ph;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -12702,6 +12702,7 @@ sub ___batFindMinPhWh {
|
|||||||
my $Ereq = $paref->{Ereq};
|
my $Ereq = $paref->{Ereq};
|
||||||
my $replacement = $paref->{replacement};
|
my $replacement = $paref->{replacement};
|
||||||
my $achievable = $paref->{achievable};
|
my $achievable = $paref->{achievable};
|
||||||
|
my $befficiency = $paref->{befficiency};
|
||||||
my $minute = $paref->{minute};
|
my $minute = $paref->{minute};
|
||||||
|
|
||||||
my @hods = @$hodsref;
|
my @hods = @$hodsref;
|
||||||
@@ -12710,6 +12711,7 @@ sub ___batFindMinPhWh {
|
|||||||
my $eps = 0.5; # minimale Genauigkeit in Wh (1e-3)
|
my $eps = 0.5; # minimale Genauigkeit in Wh (1e-3)
|
||||||
my $max_iter = 100; # Zwangsabbruch nach X Durchläufen
|
my $max_iter = 100; # Zwangsabbruch nach X Durchläufen
|
||||||
my $loop = 0;
|
my $loop = 0;
|
||||||
|
$Ereq /= $befficiency;
|
||||||
my $cap;
|
my $cap;
|
||||||
|
|
||||||
if (!$achievable) {
|
if (!$achievable) {
|
||||||
@@ -12735,7 +12737,7 @@ sub ___batFindMinPhWh {
|
|||||||
|
|
||||||
if ($nhr eq '00') { $cap = min ($mid, $hsurp->{$hod}{surplswh}) / 60 * (60 - int $minute) } # Zeitgewichtung aktuelle Stunde
|
if ($nhr eq '00') { $cap = min ($mid, $hsurp->{$hod}{surplswh}) / 60 * (60 - int $minute) } # Zeitgewichtung aktuelle Stunde
|
||||||
else { $cap = min ($mid, $hsurp->{$hod}{surplswh}) }
|
else { $cap = min ($mid, $hsurp->{$hod}{surplswh}) }
|
||||||
|
|
||||||
$charged += $cap // 0;
|
$charged += $cap // 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user