diff --git a/fhem/contrib/DS_Starter/76_SolarForecast.pm b/fhem/contrib/DS_Starter/76_SolarForecast.pm
index 86c49a926..cef6baabf 100644
--- a/fhem/contrib/DS_Starter/76_SolarForecast.pm
+++ b/fhem/contrib/DS_Starter/76_SolarForecast.pm
@@ -166,7 +166,7 @@ my %vNotesIntern = (
"__calcPVestimates: pv power summary of all strings connected to inverter limited to inverter capacity summary ".
"_batChargeRecmd: fix calc if more than one batteries are installed, set aiDecTree: new option rawDataGHIreplace ".
"new Attr plantControl with keys feedinPowerLimit, batteryPreferredCharge, consForecastInPlanning ".
- "Attr affectBatteryPreferredCharge, affectConsForecastInPlanning are obsolete ",
+ "Attr affectBatteryPreferredCharge, affectConsForecastInPlanning, ctrlShowLink are obsolete ",
"1.48.0" => "14.03.2025 edit commandref, add graphicBeam layer 5 and 6, attr ctrlAIdataStorageDuration, ctrlAIshiftTrainStart removed ",
"1.47.3" => "11.03.2025 adjust weather_ids and management of significant weather, _calcDataEveryFullHour: change attrInvChangedTs Management ".
"split __batteryOnBeam into _beamFillupBatValues and itself, expand bat key 'show' by top, bottom ".
@@ -575,7 +575,7 @@ my @aconfigs = qw( affectConsForecastIdentWeekdays
ctrlBackupFilesKeep
ctrlConsRecommendReadings ctrlGenPVdeviation ctrlInterval
ctrlLanguage ctrlNextDayForecastReadings ctrlNextHoursSoCForecastReadings
- ctrlShowLink ctrlSolCastAPImaxReq
+ ctrlSolCastAPImaxReq
ctrlSolCastAPIoptimizeReq ctrlSpecialReadings ctrlUserExitFn
disable
flowGraphicControl graphicBeamWidth
@@ -1543,7 +1543,6 @@ sub Initialize {
"ctrlLanguage:DE,EN ".
"ctrlNextDayForecastReadings:multiple-strict,$hod ".
"ctrlNextHoursSoCForecastReadings ".
- "ctrlShowLink:1,0 ".
"ctrlSolCastAPImaxReq:selectnumbers,5,5,60,0,lin ".
"ctrlSolCastAPIoptimizeReq:1,0 ".
"ctrlSpecialReadings:multiple-strict,$srd ".
@@ -1594,7 +1593,7 @@ sub Initialize {
### nicht mehr benötigte Daten verarbeiten - Bereich kann später wieder raus !!
##########################################################################################################################
my $av = 'obsolete#-#use#attr#plantControl#instead';
- $hash->{AttrList} .= " affectBatteryPreferredCharge:$av affectConsForecastInPlanning:$av"; # 22.03.2025
+ $hash->{AttrList} .= " affectBatteryPreferredCharge:$av affectConsForecastInPlanning:$av ctrlShowLink:$av"; # 22.03.2025
##########################################################################################################################
$hash->{FW_hideDisplayName} = 1; # Forum 88667
@@ -5874,7 +5873,7 @@ sub Attr {
### nicht mehr benötigte Daten verarbeiten - Bereich kann später wieder raus !!
######################################################################################################################
- if ($cmd eq 'set' && $aName =~ /^affectBatteryPreferredCharge|affectConsForecastInPlanning$/) { # 22.03.2025
+ if ($cmd eq 'set' && $aName =~ /^affectBatteryPreferredCharge|affectConsForecastInPlanning|ctrlShowLink$/) { # 22.03.2025
#my $msg = "The attribute $aName is obsolete and will be deleted soon. Please press 'save config' when restart is finished.";
my $msg = "The attribute $aName is replaced by 'plantControl'.";
if (!$init_done) {
@@ -6352,6 +6351,7 @@ sub _attrplantControl { ## no critic "not used"
for my $av ( qw( batteryPreferredCharge
consForecastInPlanning
feedinPowerLimit
+ showLink
) ) {
delete $data{$name}{current}{$av};
@@ -6362,6 +6362,7 @@ sub _attrplantControl { ## no critic "not used"
batteryPreferredCharge => '([0-9]|[1-9][0-9]|100)',
consForecastInPlanning => '0|1',
feedinPowerLimit => '\d+',
+ showLink => '0|1',
};
my ($a, $h) = parseParams ($aVal);
@@ -7996,12 +7997,22 @@ sub centralTask {
my $pc1 = AttrVal ($name, 'plantControl', '');
if (defined $afp) {
- my $newval = $apc." consForecastInPlanning=$afp";
+ my $newval = $pc1." consForecastInPlanning=$afp";
CommandAttr (undef, "$name plantControl $newval");
::CommandDeleteAttr (undef, "$name affectConsForecastInPlanning");
}
######
+ my $csl = AttrVal ($name, 'ctrlShowLink', undef); # 22.03.2025
+ my $pc2 = AttrVal ($name, 'plantControl', '');
+
+ if (defined $csl) {
+ my $newval = $pc2." showLink=$csl";
+ CommandAttr (undef, "$name plantControl $newval");
+ ::CommandDeleteAttr (undef, "$name ctrlShowLink");
+ }
+ ######
+
my $n = 0; # 01.02.25 -> Datenmigration pvrlsum, pvfcsum, dnumsum in pvrl_*, pvfc_*
for my $hh (1..24) {
$hh = sprintf "%02d", $hh;
@@ -13711,7 +13722,7 @@ sub entryGraphic {
my $colspan = $maxhours + 2;
my $ret = q{};
- $ret .= "$dlink
" if(AttrVal($name, 'ctrlShowLink', 0));
+ $ret .= "$dlink
" if(CurrentVal ($name, 'showLink', 0));
#$ret .= "";
$ret .= "";
@@ -23999,12 +24010,6 @@ to ensure that the system configuration is correct.
-
-