76_SolarForecast: contrib version 1.58.3

git-svn-id: https://svn.fhem.de/fhem/trunk@30300 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
DS_Starter
2025-09-16 12:26:10 +00:00
parent e28f8cc106
commit cc0ab03458

View File

@@ -160,7 +160,7 @@ BEGIN {
# Versions History intern # Versions History intern
my %vNotesIntern = ( my %vNotesIntern = (
"1.58.3" => "16.09.2025 __batChargeOptTargetPower: minor code change, consider bpinmax ", "1.58.3" => "16.09.2025 __batChargeOptTargetPower: minor code change, consider bpinmax & lcintime ",
"1.58.2" => "11.09.2025 __batChargeOptTargetPower: a lot of Code improvements, Attr flowGraphicControl->shiftx: unrestrict possible values ", "1.58.2" => "11.09.2025 __batChargeOptTargetPower: a lot of Code improvements, Attr flowGraphicControl->shiftx: unrestrict possible values ",
"1.58.1" => "08.09.2025 edit comref, ctrlBatSocManagementXX->safetyMargin: Separate specification of surcharges for calculation of load ". "1.58.1" => "08.09.2025 edit comref, ctrlBatSocManagementXX->safetyMargin: Separate specification of surcharges for calculation of load ".
"clearance and performance optimization ", "clearance and performance optimization ",
@@ -11828,6 +11828,7 @@ sub _batChargeMgmt {
$hsurp->{$hod}{$bn}{batinstcap} = $batinstcap; $hsurp->{$hod}{$bn}{batinstcap} = $batinstcap;
$hsurp->{$hod}{$bn}{bpinmax} = $bpinmax; # max. mögliche Ladeleistung $hsurp->{$hod}{$bn}{bpinmax} = $bpinmax; # max. mögliche Ladeleistung
$hsurp->{$hod}{$bn}{otpMargin} = $otpMargin; # Sicherheitszuschlag für Berechnungen $hsurp->{$hod}{$bn}{otpMargin} = $otpMargin; # Sicherheitszuschlag für Berechnungen
$hsurp->{$hod}{$bn}{lcintime} = $lcintime; # Ladesteuerung "In Time" oder "nicht In Time"
} }
# prognostizierten Daten in pvHistory speichern # prognostizierten Daten in pvHistory speichern
@@ -11912,7 +11913,12 @@ sub __batChargeOptTargetPower {
$sphrs-- if($spls); # Reststunden mit Überschuß $sphrs-- if($spls); # Reststunden mit Überschuß
for my $sbn (sort @batteries) { # jede Batterie for my $sbn (sort @batteries) { # jede Batterie
my $runwh = defined $hsurp->{$shod}{$sbn}{fcnextwh} ? # Auswahl des zu verwenden Prognose-SOC (Wh) if (!$hsurp->{$shod}{$sbn}{lcintime}) { # Ladesteuerung nicht "In Time"
$hsurp->{$shod}{$sbn}{pneedmin} = $hsurp->{$shod}{$sbn}{bpinmax};
next;
}
my $runwh = defined $hsurp->{$shod}{$sbn}{fcnextwh} ? # Auswahl des zu verwendenden Prognose-SOC (Wh)
$hsurp->{$shod}{$sbn}{fcnextwh} : $hsurp->{$shod}{$sbn}{fcnextwh} :
( $hsurp->{$shod}{nhr} eq '00' ? ( $hsurp->{$shod}{nhr} eq '00' ?
BatteryVal ($name, $sbn, 'bchargewh', 0) : BatteryVal ($name, $sbn, 'bchargewh', 0) :
@@ -11923,7 +11929,7 @@ sub __batChargeOptTargetPower {
if (!$spls) { # auf kleine Sollladeleistung setzen wenn kein Überschuß if (!$spls) { # auf kleine Sollladeleistung setzen wenn kein Überschuß
$hsurp->{$shod}{$sbn}{pneedmin} = $bpinreduced; $hsurp->{$shod}{$sbn}{pneedmin} = $bpinreduced;
storeReading ('Battery_ChargeOptTargetPower_'.$sbn, $bpinreduced.' W') if($hsurp->{$shod}{nhr} eq '00'); #storeReading ('Battery_ChargeOptTargetPower_'.$sbn, $bpinreduced.' W') if($hsurp->{$shod}{nhr} eq '00');
next; next;
} }
@@ -11972,8 +11978,8 @@ sub __batChargeOptTargetPower {
$avg = sprintf "%.0f", ($sn / $mv) if($mv); $avg = sprintf "%.0f", ($sn / $mv) if($mv);
$target = max ($avg, $target); $target = max ($avg, $target);
my $gfeedin = CurrentVal ($name, 'gridfeedin', 0); # aktuelle Netzeinspeisung my $gfeedin = CurrentVal ($name, 'gridfeedin', 0); # aktuelle Netzeinspeisung
my $bpin = CurrentVal ($name, 'batpowerinsum', 0); # aktuelle Batterie Ladeleistung (Summe über alle Batterien) my $bpin = CurrentVal ($name, 'batpowerinsum', 0); # aktuelle Batterie Ladeleistung (Summe über alle Batterien)
my $inc = 0; my $inc = 0;
if ( !$bpin && $gfeedin > $fipl ) {$inc = $gfeedin - $fipl} # Ladefreigabe wenn akt. keine Bat-Ladung UND akt. Einspeisung > Einspeiselimit der Anlage if ( !$bpin && $gfeedin > $fipl ) {$inc = $gfeedin - $fipl} # Ladefreigabe wenn akt. keine Bat-Ladung UND akt. Einspeisung > Einspeiselimit der Anlage