mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-12 08:41:41 +00:00
76_SolarForecast: contrib 1.49.5
git-svn-id: https://svn.fhem.de/fhem/trunk@29813 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
22b8b59da1
commit
21622087a8
@ -163,6 +163,8 @@ my %vNotesIntern = (
|
|||||||
"1.49.5" => "29.03.2025 some code changes, Attr affectSolCastPercentile, ctrlSolCastAPIoptimizeReq are obsolete -> SolCast optimze requests is default now ".
|
"1.49.5" => "29.03.2025 some code changes, Attr affectSolCastPercentile, ctrlSolCastAPIoptimizeReq are obsolete -> SolCast optimze requests is default now ".
|
||||||
"attr affectConsForecastIdentWeekdays replaced by plantControl->consForecastIdentWeekdays ".
|
"attr affectConsForecastIdentWeekdays replaced by plantControl->consForecastIdentWeekdays ".
|
||||||
"attr affectConsForecastLastDays replaced by plantControl->consForecastLastDays ".
|
"attr affectConsForecastLastDays replaced by plantControl->consForecastLastDays ".
|
||||||
|
"attr ctrlInterval replaced by plantControl->cycleInterval".
|
||||||
|
"attr ctrlGenPVdeviation replaced by plantControl->genPVdeviation ".
|
||||||
"setupBatteryDevXX: new keys pinmax, poutmax ",
|
"setupBatteryDevXX: new keys pinmax, poutmax ",
|
||||||
"1.49.4" => "28.03.2025 _batChargeRecmd: revert Loading release changes of V 1.49.0, _transferAPIRadiationValues: fix sunalt for next day ".
|
"1.49.4" => "28.03.2025 _batChargeRecmd: revert Loading release changes of V 1.49.0, _transferAPIRadiationValues: fix sunalt for next day ".
|
||||||
"Home Node: Mouse over show Autarky Rate, flowGraphicControl: new key strokeconsumerdyncol ",
|
"Home Node: Mouse over show Autarky Rate, flowGraphicControl: new key strokeconsumerdyncol ",
|
||||||
@ -557,7 +559,7 @@ my @rconfigs = qw( pvCorrectionFactor_Auto
|
|||||||
# Anlagenkonfiguration: maßgebliche Attribute
|
# Anlagenkonfiguration: maßgebliche Attribute
|
||||||
my @aconfigs = qw( aiControl
|
my @aconfigs = qw( aiControl
|
||||||
consumerLegend consumerAdviceIcon consumerLink
|
consumerLegend consumerAdviceIcon consumerLink
|
||||||
ctrlConsRecommendReadings ctrlGenPVdeviation ctrlInterval
|
ctrlConsRecommendReadings
|
||||||
ctrlLanguage ctrlNextDayForecastReadings ctrlNextHoursSoCForecastReadings
|
ctrlLanguage ctrlNextDayForecastReadings ctrlNextHoursSoCForecastReadings
|
||||||
ctrlSolCastAPImaxReq
|
ctrlSolCastAPImaxReq
|
||||||
ctrlSpecialReadings ctrlUserExitFn
|
ctrlSpecialReadings ctrlUserExitFn
|
||||||
@ -1520,8 +1522,6 @@ sub Initialize {
|
|||||||
"consumerLink:0,1 ".
|
"consumerLink:0,1 ".
|
||||||
"ctrlConsRecommendReadings:multiple-strict,$allcs ".
|
"ctrlConsRecommendReadings:multiple-strict,$allcs ".
|
||||||
"ctrlDebug:multiple-strict,$dm,#10 ".
|
"ctrlDebug:multiple-strict,$dm,#10 ".
|
||||||
"ctrlGenPVdeviation:daily,continuously ".
|
|
||||||
"ctrlInterval ".
|
|
||||||
"ctrlLanguage:DE,EN ".
|
"ctrlLanguage:DE,EN ".
|
||||||
"ctrlNextDayForecastReadings:multiple-strict,$hod ".
|
"ctrlNextDayForecastReadings:multiple-strict,$hod ".
|
||||||
"ctrlNextHoursSoCForecastReadings ".
|
"ctrlNextHoursSoCForecastReadings ".
|
||||||
@ -1575,7 +1575,7 @@ sub Initialize {
|
|||||||
##########################################################################################################################
|
##########################################################################################################################
|
||||||
my $av = 'obsolete#-#use#attr#plantControl#instead';
|
my $av = 'obsolete#-#use#attr#plantControl#instead';
|
||||||
my $av1 = 'obsolete#-#will#be#deleted#soon';
|
my $av1 = 'obsolete#-#will#be#deleted#soon';
|
||||||
$hash->{AttrList} .= " affectBatteryPreferredCharge:$av affectConsForecastInPlanning:$av ctrlShowLink:$av ctrlBackupFilesKeep:$av affectConsForecastIdentWeekdays:$av affectConsForecastLastDays:$av"; # 29.03.2025
|
$hash->{AttrList} .= " affectBatteryPreferredCharge:$av affectConsForecastInPlanning:$av ctrlShowLink:$av ctrlBackupFilesKeep:$av affectConsForecastIdentWeekdays:$av affectConsForecastLastDays:$av ctrlInterval:$av ctrlGenPVdeviation:$av"; # 31.03.2025
|
||||||
$hash->{AttrList} .= " affectSolCastPercentile:$av1 ctrlSolCastAPIoptimizeReq:$av1"; # 29.03.2025
|
$hash->{AttrList} .= " affectSolCastPercentile:$av1 ctrlSolCastAPIoptimizeReq:$av1"; # 29.03.2025
|
||||||
##########################################################################################################################
|
##########################################################################################################################
|
||||||
|
|
||||||
@ -5843,7 +5843,7 @@ sub Attr {
|
|||||||
|
|
||||||
### nicht mehr benötigte Daten verarbeiten - Bereich kann später wieder raus !!
|
### nicht mehr benötigte Daten verarbeiten - Bereich kann später wieder raus !!
|
||||||
######################################################################################################################
|
######################################################################################################################
|
||||||
if ($cmd eq 'set' && $aName =~ /^affectBatteryPreferredCharge|affectConsForecastInPlanning|ctrlShowLink|ctrlBackupFilesKeep|affectConsForecastIdentWeekdays|affectConsForecastLastDays$/) { # 29.03.2025
|
if ($cmd eq 'set' && $aName =~ /^affectBatteryPreferredCharge|affectConsForecastInPlanning|ctrlShowLink|ctrlBackupFilesKeep|affectConsForecastIdentWeekdays|affectConsForecastLastDays|ctrlInterval|ctrlGenPVdeviation$/) { # 31.03.2025
|
||||||
my $msg = "The attribute $aName is replaced by 'plantControl'.";
|
my $msg = "The attribute $aName is replaced by 'plantControl'.";
|
||||||
if (!$init_done) {
|
if (!$init_done) {
|
||||||
Log3 ($name, 1, "$name - $msg");
|
Log3 ($name, 1, "$name - $msg");
|
||||||
@ -5907,34 +5907,16 @@ sub Attr {
|
|||||||
delete $data{$name}{circular}{99}{'nextTsMaxSocChge'.$bn};
|
delete $data{$name}{circular}{99}{'nextTsMaxSocChge'.$bn};
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($aName eq 'ctrlGenPVdeviation' && $aVal eq 'daily') {
|
|
||||||
readingsDelete ($hash, 'Today_PVdeviation');
|
|
||||||
delete $data{$name}{circular}{99}{tdayDvtn};
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($aName eq 'graphicHeaderOwnspecValForm') {
|
if ($aName eq 'graphicHeaderOwnspecValForm') {
|
||||||
$err = isGhoValFormValid ($name, $aVal);
|
$err = isGhoValFormValid ($name, $aVal);
|
||||||
return $err if($err);
|
return $err if($err);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($cmd eq 'set') {
|
if ($cmd eq 'set') {
|
||||||
if ($aName eq 'ctrlInterval') {
|
|
||||||
unless ($aVal =~ /^[0-9]+$/x) {
|
|
||||||
return qq{Invalid value for $aName. Use only figures 0-9!};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($init_done && $aName eq 'ctrlUserExitFn') {
|
if ($init_done && $aName eq 'ctrlUserExitFn') {
|
||||||
($err) = checkCode ($name, $aVal, 'cc1');
|
($err) = checkCode ($name, $aVal, 'cc1');
|
||||||
return $err if($err);
|
return $err if($err);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($init_done && $aName eq 'ctrlInterval') {
|
|
||||||
_newCycTime ($hash, time, $aVal);
|
|
||||||
my $nct = CurrentVal ($hash, 'nextCycleTime', 0); # gespeicherte nächste CyleTime
|
|
||||||
readingsSingleUpdate ($hash, 'nextCycletime', (!$nct ? 'Manual / Event-controlled' : FmtTime($nct)), 0);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
my $params = {
|
my $params = {
|
||||||
@ -6338,8 +6320,9 @@ sub _attrplantControl { ## no critic "not used"
|
|||||||
consForecastIdentWeekdays => { comp => '(0|1)', act => 0 },
|
consForecastIdentWeekdays => { comp => '(0|1)', act => 0 },
|
||||||
consForecastLastDays => { comp => '([1-9]|[1-9][0-9]|1[0-7][0-9]|180)', act => 0 },
|
consForecastLastDays => { comp => '([1-9]|[1-9][0-9]|1[0-7][0-9]|180)', act => 0 },
|
||||||
consForecastInPlanning => { comp => '(0|1)', act => 0 },
|
consForecastInPlanning => { comp => '(0|1)', act => 0 },
|
||||||
feedinPowerLimit => { comp => '\d+', act => 0 },
|
|
||||||
cycleInterval => { comp => '\d+', act => 1 },
|
cycleInterval => { comp => '\d+', act => 1 },
|
||||||
|
feedinPowerLimit => { comp => '\d+', act => 0 },
|
||||||
|
genPVdeviation => { comp => '(daily|continuously)', act => 1 },
|
||||||
showLink => { comp => '(0|1)', act => 0 },
|
showLink => { comp => '(0|1)', act => 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -6912,6 +6895,11 @@ sub __attrKeyAction {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($akey eq 'genPVdeviation' && $keyval eq 'daily') {
|
||||||
|
readingsDelete ($hash, 'Today_PVdeviation');
|
||||||
|
delete $data{$name}{circular}{99}{tdayDvtn};
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8069,6 +8057,26 @@ sub centralTask {
|
|||||||
}
|
}
|
||||||
######
|
######
|
||||||
|
|
||||||
|
my $civ = AttrVal ($name, 'ctrlInterval', undef); # 31.03.2025
|
||||||
|
my $pc6 = AttrVal ($name, 'plantControl', '');
|
||||||
|
|
||||||
|
if (defined $civ) {
|
||||||
|
my $newval = $pc6." cycleInterval=$civ";
|
||||||
|
CommandAttr (undef, "$name plantControl $newval");
|
||||||
|
::CommandDeleteAttr (undef, "$name ctrlInterval");
|
||||||
|
}
|
||||||
|
######
|
||||||
|
|
||||||
|
my $cgd = AttrVal ($name, 'ctrlGenPVdeviation', undef); # 31.03.2025
|
||||||
|
my $pc7 = AttrVal ($name, 'plantControl', '');
|
||||||
|
|
||||||
|
if (defined $cgd) {
|
||||||
|
my $newval = $pc7." genPVdeviation=$cgd";
|
||||||
|
CommandAttr (undef, "$name plantControl $newval");
|
||||||
|
::CommandDeleteAttr (undef, "$name ctrlGenPVdeviation");
|
||||||
|
}
|
||||||
|
######
|
||||||
|
|
||||||
my $n = 0; # 01.02.25 -> Datenmigration pvrlsum, pvfcsum, dnumsum in pvrl_*, pvfc_*
|
my $n = 0; # 01.02.25 -> Datenmigration pvrlsum, pvfcsum, dnumsum in pvrl_*, pvfc_*
|
||||||
for my $hh (1..24) {
|
for my $hh (1..24) {
|
||||||
$hh = sprintf "%02d", $hh;
|
$hh = sprintf "%02d", $hh;
|
||||||
@ -12933,7 +12941,7 @@ sub _calcTodayPVdeviation {
|
|||||||
|
|
||||||
my $dp;
|
my $dp;
|
||||||
|
|
||||||
if (AttrVal ($name, 'ctrlGenPVdeviation', 'daily') eq 'daily') {
|
if (CurrentVal ($name, 'genPVdeviation', 'daily') eq 'daily') {
|
||||||
my $sstime = timestringToTimestamp ($date.' '.ReadingsVal ($name, "Today_SunSet", '22:00').':00');
|
my $sstime = timestringToTimestamp ($date.' '.ReadingsVal ($name, "Today_SunSet", '22:00').':00');
|
||||||
return if($t < $sstime);
|
return if($t < $sstime);
|
||||||
|
|
||||||
@ -12943,7 +12951,7 @@ sub _calcTodayPVdeviation {
|
|||||||
my $pvfcd = ReadingsNum ($name, 'RestOfDayPVforecast', 0) - $pvfc; # PV Prognose bis jetzt
|
my $pvfcd = ReadingsNum ($name, 'RestOfDayPVforecast', 0) - $pvfc; # PV Prognose bis jetzt
|
||||||
return if(!$pvfcd); # Illegal division by zero verhindern
|
return if(!$pvfcd); # Illegal division by zero verhindern
|
||||||
|
|
||||||
$dp = sprintf "%.2f", (100 - (100 * $pvre / abs $pvfcd)); # V 1.25.0
|
$dp = sprintf "%.2f", (100 - (100 * $pvre / abs $pvfcd)); # V 1.25.0
|
||||||
}
|
}
|
||||||
|
|
||||||
$data{$name}{circular}{99}{tdayDvtn} = $dp;
|
$data{$name}{circular}{99}{tdayDvtn} = $dp;
|
||||||
@ -13786,7 +13794,7 @@ sub entryGraphic {
|
|||||||
flowgconsTime => CurrentVal ($name, 'showconsumerremaintime', 1), # Verbraucher Restlaufeit in der Energieflußgrafik anzeigen
|
flowgconsTime => CurrentVal ($name, 'showconsumerremaintime', 1), # Verbraucher Restlaufeit in der Energieflußgrafik anzeigen
|
||||||
flowgconsDist => CurrentVal ($name, 'consumerdist', FGCDDEF), # Abstand Verbrauchericons zueinander
|
flowgconsDist => CurrentVal ($name, 'consumerdist', FGCDDEF), # Abstand Verbrauchericons zueinander
|
||||||
flowgh2cDist => CurrentVal ($name, 'h2consumerdist', 0), # Erweiterung des vertikalen Abstandes Haus -> Consumer
|
flowgh2cDist => CurrentVal ($name, 'h2consumerdist', 0), # Erweiterung des vertikalen Abstandes Haus -> Consumer
|
||||||
genpvdva => AttrVal ($name, 'ctrlGenPVdeviation', 'daily'), # Methode der Abweichungsberechnung
|
genpvdva => CurrentVal ($name, 'genPVdeviation', 'daily'), # Methode der Abweichungsberechnung
|
||||||
lang => getLang ($hash),
|
lang => getLang ($hash),
|
||||||
debug => getDebug ($hash), # Debug Module
|
debug => getDebug ($hash), # Debug Module
|
||||||
};
|
};
|
||||||
@ -20847,7 +20855,7 @@ return;
|
|||||||
sub controller {
|
sub controller {
|
||||||
my $name = shift;
|
my $name = shift;
|
||||||
|
|
||||||
my $interval = AttrVal ($name, 'ctrlInterval', DEFINTERVAL); # 0 wenn manuell gesteuert
|
my $interval = CurrentVal ($name, 'cycleInterval', DEFINTERVAL); # 0 wenn manuell gesteuert
|
||||||
my $idval = IsDisabled ($name);
|
my $idval = IsDisabled ($name);
|
||||||
my $disabled = $idval == 1 ? 1 : 0;
|
my $disabled = $idval == 1 ? 1 : 0;
|
||||||
my $inactive = $idval == 3 ? 1 : 0;
|
my $inactive = $idval == 3 ? 1 : 0;
|
||||||
@ -24383,34 +24391,6 @@ to ensure that the system configuration is correct.
|
|||||||
</li>
|
</li>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<a id="SolarForecast-attr-ctrlGenPVdeviation"></a>
|
|
||||||
<li><b>ctrlGenPVdeviation </b><br>
|
|
||||||
Specifies the method for calculating the deviation between predicted and real PV generation.
|
|
||||||
The Reading <b>Today_PVdeviation</b> is created depending on this setting. <br><br>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<table>
|
|
||||||
<colgroup> <col width="15%"> <col width="85%"> </colgroup>
|
|
||||||
<tr><td> <b>daily</b> </td><td>Calculation and creation of Today_PVdeviation is done after sunset (default) </td></tr>
|
|
||||||
<tr><td> <b>continuously</b> </td><td>Calculation and creation of Today_PVdeviation is done continuously </td></tr>
|
|
||||||
</table>
|
|
||||||
</ul>
|
|
||||||
</li><br>
|
|
||||||
|
|
||||||
<a id="SolarForecast-attr-ctrlInterval"></a>
|
|
||||||
<li><b>ctrlInterval <Sekunden> </b><br>
|
|
||||||
Repetition interval of the data collection. <br>
|
|
||||||
If ctrlInterval is explicitly set to “0”, no regular data collection takes place and must be started externally
|
|
||||||
with “get <name> data”. <br>
|
|
||||||
(default: 70)
|
|
||||||
<br><br>
|
|
||||||
|
|
||||||
<b>Note:</b> Regardless of the set interval (even with “0”), data is collected automatically a few seconds
|
|
||||||
before the end and after the start of a full hour. <br>
|
|
||||||
Furthermore, data is collected automatically when an event from a device defined as “asynchron”
|
|
||||||
device (consumer, meter, etc.) is received and processed.
|
|
||||||
</li><br>
|
|
||||||
|
|
||||||
<a id="SolarForecast-attr-ctrlLanguage"></a>
|
<a id="SolarForecast-attr-ctrlLanguage"></a>
|
||||||
<li><b>ctrlLanguage <DE | EN> </b><br>
|
<li><b>ctrlLanguage <DE | EN> </b><br>
|
||||||
Defines the used language of the device. The language definition has an effect on the module graphics and various
|
Defines the used language of the device. The language definition has an effect on the module graphics and various
|
||||||
@ -24513,8 +24493,8 @@ to ensure that the system configuration is correct.
|
|||||||
|
|
||||||
<a id="SolarForecast-attr-ctrlUserExitFn"></a>
|
<a id="SolarForecast-attr-ctrlUserExitFn"></a>
|
||||||
<li><b>ctrlUserExitFn {<Code>} </b><br>
|
<li><b>ctrlUserExitFn {<Code>} </b><br>
|
||||||
After each cycle (see the <a href="#SolarForecast-attr-ctrlInterval">ctrlInterval </a> attribute), the code given
|
After each cycle (see the <a href="#SolarForecast-attr-plantControl">plantControl->cycleInterval </a> attribute),
|
||||||
in this attribute is executed. The code is to be enclosed in curly brackets {...}. <br>
|
the code given in this attribute is executed. The code is to be enclosed in curly brackets {...}. <br>
|
||||||
The code is passed the variables <b>$name</b> and <b>$hash</b>, which contain the name of the SolarForecast
|
The code is passed the variables <b>$name</b> and <b>$hash</b>, which contain the name of the SolarForecast
|
||||||
device and its hash. <br>
|
device and its hash. <br>
|
||||||
In the SolarForecast Device, readings can be created and modified using the <b>storeReading</b> function.
|
In the SolarForecast Device, readings can be created and modified using the <b>storeReading</b> function.
|
||||||
@ -24967,11 +24947,24 @@ to ensure that the system configuration is correct.
|
|||||||
<tr><td> </td><td>For example, if the value is set to ‘8’, the same weekdays of the past 8 weeks are taken into account. </td></tr>
|
<tr><td> </td><td>For example, if the value is set to ‘8’, the same weekdays of the past 8 weeks are taken into account. </td></tr>
|
||||||
<tr><td> </td><td>Value: <b>Integer 0..180</b>, default: 60 </td></tr>
|
<tr><td> </td><td>Value: <b>Integer 0..180</b>, default: 60 </td></tr>
|
||||||
<tr><td> </td><td> </td></tr>
|
<tr><td> </td><td> </td></tr>
|
||||||
|
<tr><td> <b>cycleInterval</b> </td><td>Repetition interval of the data collection in seconds. </td></tr>
|
||||||
|
<tr><td> </td><td>If cycleInterval is explicitly set to ‘0’, there is no regular data collection and must be started externally </td></tr>
|
||||||
|
<tr><td> </td><td>with ‘get <name> data’. </td></tr>
|
||||||
|
<tr><td> </td><td>Value: <b>Integer</b>, default: 70 </td></tr>
|
||||||
|
<tr><td> </td><td><b>Note:</b> Regardless of the interval set (even with ‘0’), data is collected automatically a few seconds before the end </td></tr>
|
||||||
|
<tr><td> </td><td>and after the start of a full hour. Data is also collected automatically when an event from a device defined </td></tr>
|
||||||
|
<tr><td> </td><td>as “asynchronous” (consumer, meter, etc.) is received and processed. </td></tr>
|
||||||
|
<tr><td> </td><td> </td></tr>
|
||||||
<tr><td> <b>feedinPowerLimit</b> </td><td>Feed-in limit of the entire system into the public grid in watts. </td></tr>
|
<tr><td> <b>feedinPowerLimit</b> </td><td>Feed-in limit of the entire system into the public grid in watts. </td></tr>
|
||||||
<tr><td> </td><td>SolarForecast does not limit the feed-in, but uses this information </td></tr>
|
<tr><td> </td><td>SolarForecast does not limit the feed-in, but uses this information </td></tr>
|
||||||
<tr><td> </td><td>within the battery charge management to avoid system curtailment. </td></tr>
|
<tr><td> </td><td>within the battery charge management to avoid system curtailment. </td></tr>
|
||||||
<tr><td> </td><td>Value: <b>Integer</b>, default: unlimited </td></tr>
|
<tr><td> </td><td>Value: <b>Integer</b>, default: unlimited </td></tr>
|
||||||
<tr><td> </td><td> </td></tr>
|
<tr><td> </td><td> </td></tr>
|
||||||
|
<tr><td> <b>genPVdeviation</b> </td><td>Defines the method for calculating the deviation between forecast and actual PV generation. </td></tr>
|
||||||
|
<tr><td> </td><td>The reading <b>Today_PVdeviation</b> is created depending on this setting. </td></tr>
|
||||||
|
<tr><td> </td><td><b>daily</b> - Calculation and creation of Today_PVdeviation takes place after sunset (default) </td></tr>
|
||||||
|
<tr><td> </td><td><b>continuously</b> - Calculation and creation of Today_PVdeviation is continuous </td></tr>
|
||||||
|
<tr><td> </td><td> </td></tr>
|
||||||
<tr><td> <b>showLink</b> </td><td>Display of a link to the detailed view of the device above the graphics area </td></tr>
|
<tr><td> <b>showLink</b> </td><td>Display of a link to the detailed view of the device above the graphics area </td></tr>
|
||||||
<tr><td> </td><td><b>0</b> - Display off, <b>1</b> - Display on, default: 0 </td></tr>
|
<tr><td> </td><td><b>0</b> - Display off, <b>1</b> - Display on, default: 0 </td></tr>
|
||||||
<tr><td> </td><td> </td></tr>
|
<tr><td> </td><td> </td></tr>
|
||||||
@ -24980,7 +24973,7 @@ to ensure that the system configuration is correct.
|
|||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<b>Beispiel: </b> <br>
|
<b>Beispiel: </b> <br>
|
||||||
attr <name> plantControl feedinPowerLimit=4800 consForecastInPlanning=1 showLink=1 backupFilesKeep=2 consForecastIdentWeekdays=1 consForecastLastDays=8
|
attr <name> plantControl feedinPowerLimit=4800 consForecastInPlanning=1 showLink=1 backupFilesKeep=2 consForecastIdentWeekdays=1 consForecastLastDays=8 genPVdeviation=continuously
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
@ -25036,7 +25029,7 @@ to ensure that the system configuration is correct.
|
|||||||
<tr><td> </td><td><b>0</b> - no display of the device (default) </td></tr>
|
<tr><td> </td><td><b>0</b> - no display of the device (default) </td></tr>
|
||||||
<tr><td> </td><td><b>1..3[:top|bottom]</b> - display of the device in level 1,2 or 3 (above|below) the bar </td></tr>
|
<tr><td> </td><td><b>1..3[:top|bottom]</b> - display of the device in level 1,2 or 3 (above|below) the bar </td></tr>
|
||||||
<tr><td> </td><td> </td></tr>
|
<tr><td> </td><td> </td></tr>
|
||||||
<tr><td> <b>asynchron</b> </td><td>Data collection mode according to the ctrlInterval setting (synchronous) or additionally by </td></tr>
|
<tr><td> <b>asynchron</b> </td><td>Data collection mode according to the plantControl->cycleInterval setting (synchronous) or additionally by </td></tr>
|
||||||
<tr><td> </td><td>event processing (asynchronous). </td></tr>
|
<tr><td> </td><td>event processing (asynchronous). </td></tr>
|
||||||
<tr><td> </td><td><b>0</b> - no data collection after receiving an event from the device (default) </td></tr>
|
<tr><td> </td><td><b>0</b> - no data collection after receiving an event from the device (default) </td></tr>
|
||||||
<tr><td> </td><td><b>1</b> - trigger a data collection when an event is received from the device </td></tr>
|
<tr><td> </td><td><b>1</b> - trigger a data collection when an event is received from the device </td></tr>
|
||||||
@ -25108,7 +25101,7 @@ to ensure that the system configuration is correct.
|
|||||||
<tr><td> </td><td><b><Day></b> - Icon and optional color for activity after sunrise </td></tr>
|
<tr><td> </td><td><b><Day></b> - Icon and optional color for activity after sunrise </td></tr>
|
||||||
<tr><td> </td><td><b><Night></b> - Icon and optional color after sunset, otherwise the moon phase is displayed </td></tr>
|
<tr><td> </td><td><b><Night></b> - Icon and optional color after sunset, otherwise the moon phase is displayed </td></tr>
|
||||||
<tr><td> </td><td> </td></tr>
|
<tr><td> </td><td> </td></tr>
|
||||||
<tr><td> <b>asynchron</b> </td><td>Data collection mode according to the ctrlInterval setting (synchronous) or additionally by </td></tr>
|
<tr><td> <b>asynchron</b> </td><td>Data collection mode according to the plantControl->cycleInterval setting (synchronous) or additionally by </td></tr>
|
||||||
<tr><td> </td><td>event processing (asynchronous). (optional) </td></tr>
|
<tr><td> </td><td>event processing (asynchronous). (optional) </td></tr>
|
||||||
<tr><td> </td><td><b>0</b> - no data collection after receiving an event from the device (default) </td></tr>
|
<tr><td> </td><td><b>0</b> - no data collection after receiving an event from the device (default) </td></tr>
|
||||||
<tr><td> </td><td><b>1</b> - trigger a data collection when an event is received from the device </td></tr>
|
<tr><td> </td><td><b>1</b> - trigger a data collection when an event is received from the device </td></tr>
|
||||||
@ -25179,7 +25172,7 @@ to ensure that the system configuration is correct.
|
|||||||
<tr><td> </td><td><Reading>:<Currency> - Reading of the <b>meter device</b> that contains the remuneration : Currency </td></tr>
|
<tr><td> </td><td><Reading>:<Currency> - Reading of the <b>meter device</b> that contains the remuneration : Currency </td></tr>
|
||||||
<tr><td> </td><td><Device>:<Reading>:<Currency> - any device and reading containing the remuneration : Currency </td></tr>
|
<tr><td> </td><td><Device>:<Reading>:<Currency> - any device and reading containing the remuneration : Currency </td></tr>
|
||||||
<tr><td> </td><td> </td></tr>
|
<tr><td> </td><td> </td></tr>
|
||||||
<tr><td> <b>asynchron</b> </td><td>Data collection mode according to the ctrlInterval setting (synchronous) or additionally by </td></tr>
|
<tr><td> <b>asynchron</b> </td><td>Data collection mode according to the plantControl->cycleInterval setting (synchronous) or additionally by </td></tr>
|
||||||
<tr><td> </td><td>event processing (asynchronous). </td></tr>
|
<tr><td> </td><td>event processing (asynchronous). </td></tr>
|
||||||
<tr><td> </td><td><b>0</b> - no data collection after receiving an event from the device (default) </td></tr>
|
<tr><td> </td><td><b>0</b> - no data collection after receiving an event from the device (default) </td></tr>
|
||||||
<tr><td> </td><td><b>1</b> - trigger a data collection when an event is received from the device </td></tr>
|
<tr><td> </td><td><b>1</b> - trigger a data collection when an event is received from the device </td></tr>
|
||||||
@ -26867,34 +26860,6 @@ die ordnungsgemäße Anlagenkonfiguration geprüft werden.
|
|||||||
</li>
|
</li>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<a id="SolarForecast-attr-ctrlGenPVdeviation"></a>
|
|
||||||
<li><b>ctrlGenPVdeviation </b><br>
|
|
||||||
Legt die Methode zur Berechnung der Abweichung von prognostizierter und realer PV Erzeugung fest.
|
|
||||||
Das Reading <b>Today_PVdeviation</b> wird in Abhängigkeit dieser Einstellung erstellt. <br><br>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<table>
|
|
||||||
<colgroup> <col width="15%"> <col width="85%"> </colgroup>
|
|
||||||
<tr><td> <b>daily</b> </td><td>Berechnung und Erstellung von Today_PVdeviation erfolgt nach Sonnenuntergang (default) </td></tr>
|
|
||||||
<tr><td> <b>continuously</b> </td><td>Berechnung und Erstellung von Today_PVdeviation erfolgt fortlaufend </td></tr>
|
|
||||||
</table>
|
|
||||||
</ul>
|
|
||||||
</li><br>
|
|
||||||
|
|
||||||
<a id="SolarForecast-attr-ctrlInterval"></a>
|
|
||||||
<li><b>ctrlInterval <Sekunden> </b><br>
|
|
||||||
Wiederholungsintervall der Datensammlung. <br>
|
|
||||||
Ist ctrlInterval explizit auf "0" gesetzt, erfolgt keine regelmäßige Datensammlung und muss mit
|
|
||||||
"get <name> data" extern gestartet werden. <br>
|
|
||||||
(default: 70)
|
|
||||||
<br><br>
|
|
||||||
|
|
||||||
<b>Hinweis:</b> Unabhängig vom eingestellten Intervall (auch bei "0") erfolgt einige Sekunden vor dem Ende
|
|
||||||
sowie nach dem Beginn einer vollen Stunde eine automatische Datensammlung. <br>
|
|
||||||
Weiterhin erfolgt eine automatische Datensammlung wenn ein Event eines als "asynchron"
|
|
||||||
definierten Gerätes (Consumer, Meter, etc.) empfangen und verarbeitet wird.
|
|
||||||
</li><br>
|
|
||||||
|
|
||||||
<a id="SolarForecast-attr-ctrlLanguage"></a>
|
<a id="SolarForecast-attr-ctrlLanguage"></a>
|
||||||
<li><b>ctrlLanguage <DE | EN> </b><br>
|
<li><b>ctrlLanguage <DE | EN> </b><br>
|
||||||
Legt die benutzte Sprache des Devices fest. Die Sprachendefinition hat Auswirkungen auf die Modulgrafik und
|
Legt die benutzte Sprache des Devices fest. Die Sprachendefinition hat Auswirkungen auf die Modulgrafik und
|
||||||
@ -26997,8 +26962,8 @@ die ordnungsgemäße Anlagenkonfiguration geprüft werden.
|
|||||||
|
|
||||||
<a id="SolarForecast-attr-ctrlUserExitFn"></a>
|
<a id="SolarForecast-attr-ctrlUserExitFn"></a>
|
||||||
<li><b>ctrlUserExitFn {<Code>} </b><br>
|
<li><b>ctrlUserExitFn {<Code>} </b><br>
|
||||||
Nach jedem Zyklus (siehe Attribut <a href="#SolarForecast-attr-ctrlInterval ">ctrlInterval </a>) wird der in diesem
|
Nach jedem Zyklus (siehe Attribut <a href="#SolarForecast-attr-plantControl">plantControl->cycleInterval</a>) wird der in
|
||||||
Attribut abgegebene Code ausgeführt. Der Code ist in geschweifte Klammern {...} einzuschließen. <br>
|
diesem Attribut abgegebene Code ausgeführt. Der Code ist in geschweifte Klammern {...} einzuschließen. <br>
|
||||||
Dem Code werden die Variablen <b>$name</b> und <b>$hash</b> übergeben, die den Namen des SolarForecast Device und
|
Dem Code werden die Variablen <b>$name</b> und <b>$hash</b> übergeben, die den Namen des SolarForecast Device und
|
||||||
dessen Hash enthalten. <br>
|
dessen Hash enthalten. <br>
|
||||||
Im SolarForecast Device können Readings über die Funktion <b>storeReading</b> erzeugt und geändert werden.
|
Im SolarForecast Device können Readings über die Funktion <b>storeReading</b> erzeugt und geändert werden.
|
||||||
@ -27448,11 +27413,24 @@ die ordnungsgemäße Anlagenkonfiguration geprüft werden.
|
|||||||
<tr><td> </td><td>Zum Beispiel werden dann bei einem gesetzten Wert von '8' die gleichen Wochentage der vergangenen 8 Wochen berücksichtigt. </td></tr>
|
<tr><td> </td><td>Zum Beispiel werden dann bei einem gesetzten Wert von '8' die gleichen Wochentage der vergangenen 8 Wochen berücksichtigt. </td></tr>
|
||||||
<tr><td> </td><td>Wert: <b>Ganzzahl 0..180</b>, default: 60 </td></tr>
|
<tr><td> </td><td>Wert: <b>Ganzzahl 0..180</b>, default: 60 </td></tr>
|
||||||
<tr><td> </td><td> </td></tr>
|
<tr><td> </td><td> </td></tr>
|
||||||
|
<tr><td> <b>cycleInterval</b> </td><td>Wiederholungsintervall der Datensammlung in Sekunden. </td></tr>
|
||||||
|
<tr><td> </td><td>Ist cycleInterval explizit auf '0' gesetzt, erfolgt keine regelmäßige Datensammlung und muss mit 'get <name> data' </td></tr>
|
||||||
|
<tr><td> </td><td>extern gestartet werden. </td></tr>
|
||||||
|
<tr><td> </td><td>Wert: <b>Ganzzahl</b>, default: 70 </td></tr>
|
||||||
|
<tr><td> </td><td><b>Hinweis:</b> Unabhängig vom eingestellten Intervall (auch bei '0') erfolgt einige Sekunden vor dem Ende </td></tr>
|
||||||
|
<tr><td> </td><td>sowie nach dem Beginn einer vollen Stunde eine automatische Datensammlung. Weiterhin erfolgt eine automatische Datensammlung </td></tr>
|
||||||
|
<tr><td> </td><td>wenn ein Event eines als "asynchron" definierten Gerätes (Consumer, Meter, etc.) empfangen und verarbeitet wird. </td></tr>
|
||||||
|
<tr><td> </td><td> </td></tr>
|
||||||
<tr><td> <b>feedinPowerLimit</b> </td><td>Einspeiselimit der Gesamtanlage in das öffentliche Netz in Watt. </td></tr>
|
<tr><td> <b>feedinPowerLimit</b> </td><td>Einspeiselimit der Gesamtanlage in das öffentliche Netz in Watt. </td></tr>
|
||||||
<tr><td> </td><td>SolarForecast limitiert die Einspeisung nicht, verwendet diese Angabe jedoch </td></tr>
|
<tr><td> </td><td>SolarForecast limitiert die Einspeisung nicht, verwendet diese Angabe jedoch </td></tr>
|
||||||
<tr><td> </td><td>innerhalb des Batterie-Lademanagements zur Vermeidung einer Anlagenabregelung. </td></tr>
|
<tr><td> </td><td>innerhalb des Batterie-Lademanagements zur Vermeidung einer Anlagenabregelung. </td></tr>
|
||||||
<tr><td> </td><td>Wert: <b>Ganzzahl</b>, default: unbegrent </td></tr>
|
<tr><td> </td><td>Wert: <b>Ganzzahl</b>, default: unbegrent </td></tr>
|
||||||
<tr><td> </td><td> </td></tr>
|
<tr><td> </td><td> </td></tr>
|
||||||
|
<tr><td> <b>genPVdeviation</b> </td><td>Legt die Methode zur Berechnung der Abweichung von prognostizierter und realer PV Erzeugung fest. </td></tr>
|
||||||
|
<tr><td> </td><td>Das Reading <b>Today_PVdeviation</b> wird in Abhängigkeit dieser Einstellung erstellt. </td></tr>
|
||||||
|
<tr><td> </td><td><b>daily</b> - Berechnung und Erstellung von Today_PVdeviation erfolgt nach Sonnenuntergang (default) </td></tr>
|
||||||
|
<tr><td> </td><td><b>continuously</b> - Berechnung und Erstellung von Today_PVdeviation erfolgt fortlaufend </td></tr>
|
||||||
|
<tr><td> </td><td> </td></tr>
|
||||||
<tr><td> <b>showLink</b> </td><td>Anzeige eines Links zur Detailansicht des Device über dem Grafikbereich </td></tr>
|
<tr><td> <b>showLink</b> </td><td>Anzeige eines Links zur Detailansicht des Device über dem Grafikbereich </td></tr>
|
||||||
<tr><td> </td><td><b>0</b> - Anzeige aus, <b>1</b> - Anzeige an, default: 0 </td></tr>
|
<tr><td> </td><td><b>0</b> - Anzeige aus, <b>1</b> - Anzeige an, default: 0 </td></tr>
|
||||||
<tr><td> </td><td> </td></tr>
|
<tr><td> </td><td> </td></tr>
|
||||||
@ -27461,7 +27439,7 @@ die ordnungsgemäße Anlagenkonfiguration geprüft werden.
|
|||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<b>Beispiel: </b> <br>
|
<b>Beispiel: </b> <br>
|
||||||
attr <name> plantControl feedinPowerLimit=4800 consForecastInPlanning=1 showLink=1 backupFilesKeep=2 consForecastIdentWeekdays=1 consForecastLastDays=8
|
attr <name> plantControl feedinPowerLimit=4800 consForecastInPlanning=1 showLink=1 backupFilesKeep=2 consForecastIdentWeekdays=1 consForecastLastDays=8 genPVdeviation=continuously
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
@ -27516,8 +27494,8 @@ die ordnungsgemäße Anlagenkonfiguration geprüft werden.
|
|||||||
<tr><td> </td><td><b>0</b> - keine Anzeige des Gerätes (default) </td></tr>
|
<tr><td> </td><td><b>0</b> - keine Anzeige des Gerätes (default) </td></tr>
|
||||||
<tr><td> </td><td><b>1..3[:top|bottom]</b> - Anzeige des Gerätes in der Ebene 1,2 oder 3 (über|unter) den Balken </td></tr>
|
<tr><td> </td><td><b>1..3[:top|bottom]</b> - Anzeige des Gerätes in der Ebene 1,2 oder 3 (über|unter) den Balken </td></tr>
|
||||||
<tr><td> </td><td> </td></tr>
|
<tr><td> </td><td> </td></tr>
|
||||||
<tr><td> <b>asynchron</b> </td><td>Modus der Datensammlung entsprechend Einstellung ctrlInterval (synchron) oder zusätzlich durch </td></tr>
|
<tr><td> <b>asynchron</b> </td><td>Modus der Datensammlung entsprechend Einstellung plantControl->cycleInterval (synchron) oder </td></tr>
|
||||||
<tr><td> </td><td>Eventverarbeitung (asynchron). </td></tr>
|
<tr><td> </td><td>zusätzlich durch Eventverarbeitung (asynchron). </td></tr>
|
||||||
<tr><td> </td><td><b>0</b> - keine Datensammlung nach Empfang eines Events des Gerätes (default) </td></tr>
|
<tr><td> </td><td><b>0</b> - keine Datensammlung nach Empfang eines Events des Gerätes (default) </td></tr>
|
||||||
<tr><td> </td><td><b>1</b> - auslösen einer Datensammlung bei Empfang eines Events des Gerätes </td></tr>
|
<tr><td> </td><td><b>1</b> - auslösen einer Datensammlung bei Empfang eines Events des Gerätes </td></tr>
|
||||||
</table>
|
</table>
|
||||||
@ -27589,8 +27567,8 @@ die ordnungsgemäße Anlagenkonfiguration geprüft werden.
|
|||||||
<tr><td> </td><td><b><Tag></b> - Icon und ggf. Farbe bei Aktivität nach Sonnenaufgang </td></tr>
|
<tr><td> </td><td><b><Tag></b> - Icon und ggf. Farbe bei Aktivität nach Sonnenaufgang </td></tr>
|
||||||
<tr><td> </td><td><b><Nacht></b> - Icon und ggf. Farbe nach Sonnenuntergang, sonst wird die Mondphase angezeigt </td></tr>
|
<tr><td> </td><td><b><Nacht></b> - Icon und ggf. Farbe nach Sonnenuntergang, sonst wird die Mondphase angezeigt </td></tr>
|
||||||
<tr><td> </td><td> </td></tr>
|
<tr><td> </td><td> </td></tr>
|
||||||
<tr><td> <b>asynchron</b> </td><td>Modus der Datensammlung entsprechend Einstellung ctrlInterval (synchron) oder zusätzlich durch </td></tr>
|
<tr><td> <b>asynchron</b> </td><td>Modus der Datensammlung entsprechend Einstellung plantControl->cycleInterval (synchron) oder </td></tr>
|
||||||
<tr><td> </td><td>Eventverarbeitung (asynchron). (optional) </td></tr>
|
<tr><td> </td><td> zusätzlich durch Eventverarbeitung (asynchron). (optional) </td></tr>
|
||||||
<tr><td> </td><td><b>0</b> - keine Datensammlung nach Empfang eines Events des Gerätes (default) </td></tr>
|
<tr><td> </td><td><b>0</b> - keine Datensammlung nach Empfang eines Events des Gerätes (default) </td></tr>
|
||||||
<tr><td> </td><td><b>1</b> - auslösen einer Datensammlung bei Empfang eines Events des Gerätes </td></tr>
|
<tr><td> </td><td><b>1</b> - auslösen einer Datensammlung bei Empfang eines Events des Gerätes </td></tr>
|
||||||
</table>
|
</table>
|
||||||
@ -27661,7 +27639,7 @@ die ordnungsgemäße Anlagenkonfiguration geprüft werden.
|
|||||||
<tr><td> </td><td><Reading>:<Währung> - Reading des <b>Meter Device</b> das die Vergütung enthält : Währung </td></tr>
|
<tr><td> </td><td><Reading>:<Währung> - Reading des <b>Meter Device</b> das die Vergütung enthält : Währung </td></tr>
|
||||||
<tr><td> </td><td><Device>:<Reading>:<Währung> - beliebiges Device und Reading welches die Vergütung enthält : Währung </td></tr>
|
<tr><td> </td><td><Device>:<Reading>:<Währung> - beliebiges Device und Reading welches die Vergütung enthält : Währung </td></tr>
|
||||||
<tr><td> </td><td> </td></tr>
|
<tr><td> </td><td> </td></tr>
|
||||||
<tr><td> <b>asynchron</b> </td><td>Modus der Datensammlung entsprechend Einstellung ctrlInterval (synchron) oder zusätzlich durch </td></tr>
|
<tr><td> <b>asynchron</b> </td><td>Modus der Datensammlung entsprechend Einstellung plantControl->cycleInterval (synchron) oder zusätzlich durch </td></tr>
|
||||||
<tr><td> </td><td>Eventverarbeitung (asynchron). </td></tr>
|
<tr><td> </td><td>Eventverarbeitung (asynchron). </td></tr>
|
||||||
<tr><td> </td><td><b>0</b> - keine Datensammlung nach Empfang eines Events des Gerätes (default) </td></tr>
|
<tr><td> </td><td><b>0</b> - keine Datensammlung nach Empfang eines Events des Gerätes (default) </td></tr>
|
||||||
<tr><td> </td><td><b>1</b> - auslösen einer Datensammlung bei Empfang eines Events des Gerätes </td></tr>
|
<tr><td> </td><td><b>1</b> - auslösen einer Datensammlung bei Empfang eines Events des Gerätes </td></tr>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user