76_SolarForecast: contrib Version 1.59.6

git-svn-id: https://svn.fhem.de/fhem/trunk@30448 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
DS_Starter
2025-10-25 15:01:47 +00:00
parent e46b27a343
commit 60d77914b2

View File

@@ -12317,6 +12317,7 @@ return ($hsurp, $otp);
################################################################
# Zielleistung mit Sicherheitszuschlag behandeln
# abfallend proportional zum linearen Rest-Überschuss des Tages
# Forum: https://forum.fhem.de/index.php?msg=1349579
################################################################
sub ___batAdjustPowerByMargin {
my ($name, $target, $pinmax, $runwhneed, $otpMargin) = @_;
@@ -14211,7 +14212,7 @@ sub ___setConsumerSwitchingState {
delete $paref->{supplement};
$state = qq{Consumer '$calias' was external switched on};
$state = qq{Consumer '$calias' was switched on externally};
$dowri = 1;
}
elsif ($oldpsw eq 'on' && isConsumerPhysOff ($hash, $c)) {
@@ -14221,7 +14222,7 @@ sub ___setConsumerSwitchingState {
delete $paref->{supplement};
$state = qq{Consumer '$calias' was external switched off};
$state = qq{Consumer '$calias' was switched off externally};
$dowri = 1;
}
@@ -16928,21 +16929,32 @@ sub __createOwnSpec {
my @fields = split (/\s+/sx, $spec);
my (@cats, @vals);
my (@props, @cats, @vals); # @props - Eigenschaften, @cats - Kategorien, @vals - Label:Werte Paare
for my $f (@fields) {
if ($f =~ /^\#(.*)/xs) {
if ($f =~ /^\#(.*)/xs) { # eine Kategorie erkannt
push @cats, $1;
next;
}
elsif ($f =~ /^\.([^\s]+)/xs) { # eine Eigenschaft erkannt
push @props, $1;
next;
}
push @vals, $f;
}
my ($ownv, $cakey);
my $isize = INPUTSIZE;
if (@props) {
my $properties = join (' ', @props);
my ($pa, $ph) = parseParams ($properties);
$isize = $ph->{inputSize} if(defined $ph->{inputSize});
}
my $rows = ceil (scalar(@vals) / $vinr);
my $col = 0;
my ($ownv, $cakey);
for (my $i = 1 ; $i <= $rows; $i++) {
my ($h, $v, $u);
@@ -16959,9 +16971,7 @@ sub __createOwnSpec {
$col++;
if (!defined $h->{$k}{label}) {
#undef $h->{$k}{label};
$h->{$k}{label} = '';
#next;
$h->{$k}{elm} = '';
}
@@ -27851,21 +27861,42 @@ to ensure that the system configuration is correct.
<a href="#SolarForecast-attr-graphicControl">graphicControl->energyUnit</a>.
<br><br>
Each value must be defined by a label and the element to be displayed (attribute, reading, set command) connected by :. <br>
A single key value of a combined attribute (ctrlBatSocManagementXX, flowGraphicControl, etc.) can be displayed and changed by
adding '->&lt;key&gt;'. <br>
The element can optionally be supplemented with '@&lt;Device&gt;' to display readings, set commands, and attributes of other devices. <br>
The elements to be displayed are separated by spaces or a new line.
Spaces in the label are to be inserted by "&amp;nbsp;", a line break by "&lt;br&gt;". <br>
An empty field in a line is created by ":". <br>
A line title can be inserted by specifying "#:&lt;Text&gt;", an empty title by entering "#".
Each element to be displayed must be defined by a label, the separator :, and the value (attribute, reading, set command). <br>
The input can be entered on multiple lines for a clear structure. <br>
The syntax for inserting elements and defining additional properties is as follows:
<br><br>
<ul>
<table>
<colgroup> <col width="30%"> <col width="70%"> </colgroup>
<tr><td> <b>.inputSize=&lt;Integer&gt; </b> </td><td>sets the width of text input fields (default: 10) </td></tr>
<tr><td> </td><td> </td></tr>
<tr><td> <b>&amp;nbsp; </b> </td><td>inserts a space in the label </td></tr>
<tr><td> </td><td> </td></tr>
<tr><td> <b>&lt;br&gt; </b> </td><td>inserts a line break in the label </td></tr>
<tr><td> </td><td> </td></tr>
<tr><td> <b>#&lt;Text&gt; </b> </td><td>defines a row title </td></tr>
<tr><td> </td><td> </td></tr>
<tr><td> <b># </b> </td><td>creates an empty line title </td></tr>
<tr><td> </td><td> </td></tr>
<tr><td> <b>&lt;Label&gt;:&lt;Value&gt; </b> </td><td>creates the &lt;label&gt;:&lt;value&gt; pair to be displayed. </td></tr>
<tr><td> </td><td>&lt;value&gt; can be an attribute, reading, or set command. </td></tr>
<tr><td> </td><td> </td></tr>
<tr><td> <b>&lt;Label&gt;:&lt;Value&gt;@&lt;Device&gt; </b> </td><td>the value of another &lt;Device&gt; is displayed </td></tr>
<tr><td> </td><td> </td></tr>
<tr><td> <b>&lt;Label&gt;:&lt;Attr&gt;->&lt;Key&gt; </b> </td><td>the key value of a combined attribute (e.g., flowGraphicControl) is displayed </td></tr>
<tr><td> </td><td> </td></tr>
<tr><td> <b>: </b> </td><td>creates a blank space </td></tr>
<tr><td> </td><td> </td></tr>
</table>
</ul>
<ul>
<b>Example: </b> <br>
<table>
<colgroup> <col width="33%"> <col width="67%"> </colgroup>
<tr><td> attr &lt;name&gt; graphicHeaderOwnspec </td><td># </td></tr>
<tr><td> attr &lt;name&gt; graphicHeaderOwnspec </td><td>.inputSize=5 </td></tr>
<tr><td> </td><td># </td></tr>
<tr><td> </td><td>AutarkyRate:Current_AutarkyRate </td></tr>
<tr><td> </td><td>Surplus:Current_Surplus </td></tr>
<tr><td> </td><td>current&amp;nbsp;Gridconsumption:Current_GridConsumption </td></tr>
@@ -27890,8 +27921,8 @@ to ensure that the system configuration is correct.
<tr><td> </td><td>Debug:ctrlDebug : : : </td></tr>
</table>
</ul>
</li>
<br>
</li>
<a id="SolarForecast-attr-graphicHeaderOwnspecValForm"></a>
<li><b>graphicHeaderOwnspecValForm </b> <br><br>
@@ -30569,21 +30600,42 @@ die ordnungsgemäße Anlagenkonfiguration geprüft werden.
des Attributs <a href="#SolarForecast-attr-graphicControl">graphicControl->energyUnit</a> umgerechnet.
<br><br>
Jeder Wert ist jeweils durch ein Label und das anzuzeigende Element (Attribut, Reading, Set-Kommando) verbunden durch ":" zu definieren. <br>
Ein einzelner Schlüsselwert eines kombinierten Attributes (ctrlBatSocManagementXX, flowGraphicControl, etc.) kann durch Ergänzung
von '->&lt;Schlüssel&gt;' angezeigt und geändert werden. <br>
Das Element kann optional mit '@&lt;Device&gt;' ergänzt werden um Readings, Set-Kommandos und Attribute anderer Devices anzuzeigen. <br>
Die anzuzeigenden Elemente werden durch Leerzeichen oder eine neue Zeile getrennt.
Leerzeichen im Label sind durch "&amp;nbsp;" einzufügen, ein Zeilenumbruch durch "&lt;br&gt;". <br>
Ein leeres Feld in einer Zeile wird durch ":" erzeugt. <br>
Ein Zeilentitel kann durch Angabe von "#:&lt;Text&gt;" eingefügt werden, ein leerer Titel durch die Eingabe von "#".
Jedes anzuzeigende Element ist durch ein Label, dem Trenner ":" und dem Wert (Attribut, Reading, Set-Kommando) zu definieren. <br>
Die Eingabe kann für eine übersichtliche Struktur mehrzeilig erfolgen. <br>
Die Syntax um Elemente einzufügen sowie weitere Eigenschaften zu definieren sind:
<br><br>
<ul>
<table>
<colgroup> <col width="30%"> <col width="70%"> </colgroup>
<tr><td> <b>.inputSize=&lt;Ganzzahl&gt; </b> </td><td>legt die Breite von Texteingabefeldern fest (default: 10) </td></tr>
<tr><td> </td><td> </td></tr>
<tr><td> <b>&amp;nbsp; </b> </td><td>fügt ein Leerzeichen im Label ein </td></tr>
<tr><td> </td><td> </td></tr>
<tr><td> <b>&lt;br&gt; </b> </td><td>fügt einen Zeilenumbruch im Label ein </td></tr>
<tr><td> </td><td> </td></tr>
<tr><td> <b>#&lt;Text&gt; </b> </td><td>definiert einen Zeilentitel </td></tr>
<tr><td> </td><td> </td></tr>
<tr><td> <b># </b> </td><td>erzeugt einen leeren Zeilentitel </td></tr>
<tr><td> </td><td> </td></tr>
<tr><td> <b>&lt;Label&gt;:&lt;Wert&gt; </b> </td><td>Erstellt das anzuzeigende &lt;Label&gt;:&lt;Wert&gt; Paar. </td></tr>
<tr><td> </td><td>&lt;Wert&gt; kann ein Attribut, Reading, oder Set-Kommando sein. </td></tr>
<tr><td> </td><td> </td></tr>
<tr><td> <b>&lt;Label&gt;:&lt;Wert&gt;@&lt;Device&gt; </b> </td><td>der Wert eines anderen &lt;Device&gt; wird angezeigt </td></tr>
<tr><td> </td><td> </td></tr>
<tr><td> <b>&lt;Label&gt;:&lt;Attr&gt;->&lt;Key&gt; </b> </td><td>der Schlüsselwert eines kombinierten Attributes (z.B. flowGraphicControl) wird angezeigt </td></tr>
<tr><td> </td><td> </td></tr>
<tr><td> <b>: </b> </td><td>erzeugt ein Leerfeld </td></tr>
<tr><td> </td><td> </td></tr>
</table>
</ul>
<ul>
<b>Beispiel: </b> <br>
<table>
<colgroup> <col width="35%"> <col width="65%"> </colgroup>
<tr><td> attr &lt;name&gt; graphicHeaderOwnspec </td><td># </td></tr>
<tr><td> attr &lt;name&gt; graphicHeaderOwnspec </td><td>.inputSize=5 </td></tr>
<tr><td> </td><td># </td></tr>
<tr><td> </td><td>AutarkyRate:Current_AutarkyRate </td></tr>
<tr><td> </td><td>Überschuß:Current_Surplus </td></tr>
<tr><td> </td><td>aktueller&amp;nbsp;Netzbezug:Current_GridConsumption </td></tr>
@@ -30608,8 +30660,8 @@ die ordnungsgemäße Anlagenkonfiguration geprüft werden.
<tr><td> </td><td>Debug:ctrlDebug : : : </td></tr>
</table>
</ul>
</li>
<br>
</li>
<a id="SolarForecast-attr-graphicHeaderOwnspecValForm"></a>
<li><b>graphicHeaderOwnspecValForm </b> <br><br>