2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-19 12:46:03 +00:00

76_SolarForecast.pm: contrib 0.29.0

git-svn-id: https://svn.fhem.de/fhem/trunk@24152 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2021-04-05 06:20:53 +00:00
parent 6c686e1571
commit a10ebadd7a

View File

@ -1804,32 +1804,29 @@ sub _evaluateThresholds {
return if(!$pt); return if(!$pt);
my $aaref = CurrentVal ($hash, "genslidereg", ""); my $aaref = CurrentVal ($hash, "genslidereg", "");
my @aa = @{$aaref} if (ref $aaref eq "ARRAY"); my @aa = ();
@aa = @{$aaref} if (ref $aaref eq "ARRAY");
return if(scalar @aa < $defslidenum); return if(scalar @aa < $defslidenum);
my $gen = $aa[0]; my $gen1 = $aa[0];
my ($gt,$lt) = (1,1); my $gen2 = $aa[1];
my $gen3 = $aa[2];
for my $elem (@aa) {
if($elem < $gen) {
$gt = 0;
}
if($elem > $gen) {
$lt = 0;
}
}
my ($a,$h) = parseParams ($pt); my ($a,$h) = parseParams ($pt);
for my $key (keys %{$h}) { for my $key (keys %{$h}) {
my ($knum,$cond) = $key =~ /^([0-9]+)(on|off)$/x; my ($knum,$cond) = $key =~ /^([0-9]+)(on|off)$/x;
if($cond eq "on" && $gt && $gen > $h->{$key}) { if($cond eq "on" && $gen1 > $h->{$key}) {
next if($gen2 < $h->{$key});
next if($gen3 < $h->{$key});
push @$daref, "powerTrigger_${knum}<>on" if(ReadingsVal($name, "powerTrigger_${knum}", "off") eq "off"); push @$daref, "powerTrigger_${knum}<>on" if(ReadingsVal($name, "powerTrigger_${knum}", "off") eq "off");
} }
if($cond eq "off" && $lt && $gen < $h->{$key}) { if($cond eq "off" && $gen1 < $h->{$key}) {
next if($gen2 > $h->{$key});
next if($gen3 > $h->{$key});
push @$daref, "powerTrigger_${knum}<>off" if(ReadingsVal($name, "powerTrigger_${knum}", "on") eq "on"); push @$daref, "powerTrigger_${knum}<>off" if(ReadingsVal($name, "powerTrigger_${knum}", "on") eq "on");
} }
} }
@ -3739,7 +3736,8 @@ werden weitere SolarForecast Devices zugeordnet.
<ul> <ul>
<ul> <ul>
<a name="currentForecastDev"></a> <a name="currentForecastDev"></a>
<li><b>currentForecastDev </b> <br> <li><b>currentForecastDev </b> <br><br>
Legt das Device (Typ DWD_OpenData) fest, welches die Daten der solaren Vorhersage liefert. Ist noch kein Device dieses Typs Legt das Device (Typ DWD_OpenData) fest, welches die Daten der solaren Vorhersage liefert. Ist noch kein Device dieses Typs
vorhanden, muß es manuell definiert werden (siehe <a href="http://fhem.de/commandref.html#DWD_OpenData">DWD_OpenData Commandref</a>). <br> vorhanden, muß es manuell definiert werden (siehe <a href="http://fhem.de/commandref.html#DWD_OpenData">DWD_OpenData Commandref</a>). <br>
Im ausgewählten DWD_OpenData Device müssen mindestens diese Attribute gesetzt sein: <br><br> Im ausgewählten DWD_OpenData Device müssen mindestens diese Attribute gesetzt sein: <br><br>
@ -3760,7 +3758,8 @@ werden weitere SolarForecast Devices zugeordnet.
<ul> <ul>
<a name="currentInverterDev"></a> <a name="currentInverterDev"></a>
<li><b>currentInverterDev &lt;Inverter Device Name&gt; pv=&lt;Reading aktuelle PV-Leistung&gt;:&lt;Einheit&gt; etotal=&lt;Reading Summe Energieerzeugung&gt;:&lt;Einheit&gt; </b> <br> <li><b>currentInverterDev &lt;Inverter Device Name&gt; pv=&lt;Reading aktuelle PV-Leistung&gt;:&lt;Einheit&gt; etotal=&lt;Reading Summe Energieerzeugung&gt;:&lt;Einheit&gt; </b> <br><br>
Legt ein beliebiges Device zur Lieferung der aktuellen PV Erzeugungswerte fest. Es kann auch ein Dummy Device mit Legt ein beliebiges Device zur Lieferung der aktuellen PV Erzeugungswerte fest. Es kann auch ein Dummy Device mit
entsprechenden Readings sein. Die Werte mehrerer Inverterdevices führt man z.B. in einem Dummy Device zusammen und gibt entsprechenden Readings sein. Die Werte mehrerer Inverterdevices führt man z.B. in einem Dummy Device zusammen und gibt
dieses Device mit den entsprechenden Readings an. dieses Device mit den entsprechenden Readings an.
@ -3788,7 +3787,8 @@ werden weitere SolarForecast Devices zugeordnet.
<ul> <ul>
<a name="currentMeterDev"></a> <a name="currentMeterDev"></a>
<li><b>currentMeterDev &lt;Meter Device Name&gt; gcon=&lt;Reading aktueller Netzbezug&gt;:&lt;Einheit&gt; contotal=&lt;Reading Summe Netzbezug&gt;:&lt;Einheit&gt;</b> <br> <li><b>currentMeterDev &lt;Meter Device Name&gt; gcon=&lt;Reading aktueller Netzbezug&gt;:&lt;Einheit&gt; contotal=&lt;Reading Summe Netzbezug&gt;:&lt;Einheit&gt;</b> <br><br>
Legt ein beliebiges Device zur Messung des Energiebezugs fest. Es kann auch ein Dummy Device mit entsprechenden Readings Legt ein beliebiges Device zur Messung des Energiebezugs fest. Es kann auch ein Dummy Device mit entsprechenden Readings
sein. sein.
<br> <br>
@ -3814,7 +3814,8 @@ werden weitere SolarForecast Devices zugeordnet.
<ul> <ul>
<a name="inverterStrings"></a> <a name="inverterStrings"></a>
<li><b>inverterStrings &lt;Stringname1&gt;[,&lt;Stringname2&gt;,&lt;Stringname3&gt;,...] </b> <br> <li><b>inverterStrings &lt;Stringname1&gt;[,&lt;Stringname2&gt;,&lt;Stringname3&gt;,...] </b> <br><br>
Bezeichnungen der am Wechselrichter aktiven Strings. Diese Bezeichnungen werden als Schlüssel in den weiteren Bezeichnungen der am Wechselrichter aktiven Strings. Diese Bezeichnungen werden als Schlüssel in den weiteren
Settings verwendet. <br><br> Settings verwendet. <br><br>
@ -3828,7 +3829,8 @@ werden weitere SolarForecast Devices zugeordnet.
<ul> <ul>
<a name="modulePeakString"></a> <a name="modulePeakString"></a>
<li><b>modulePeakString &lt;Stringname1&gt;=&lt;Peak&gt; [&lt;Stringname2&gt;=&lt;Peak&gt; &lt;Stringname3&gt;=&lt;Peak&gt; ...] </b> <br> <li><b>modulePeakString &lt;Stringname1&gt;=&lt;Peak&gt; [&lt;Stringname2&gt;=&lt;Peak&gt; &lt;Stringname3&gt;=&lt;Peak&gt; ...] </b> <br><br>
Die Peakleistung des Strings "StringnameX" in kWp. Der Stringname ist ein Schlüsselwert des Die Peakleistung des Strings "StringnameX" in kWp. Der Stringname ist ein Schlüsselwert des
Readings <b>inverterStrings</b>. <br><br> Readings <b>inverterStrings</b>. <br><br>
@ -3842,7 +3844,8 @@ werden weitere SolarForecast Devices zugeordnet.
<ul> <ul>
<a name="moduleDirection"></a> <a name="moduleDirection"></a>
<li><b>moduleDirection &lt;Stringname1&gt;=&lt;dir&gt; [&lt;Stringname2&gt;=&lt;dir&gt; &lt;Stringname3&gt;=&lt;dir&gt; ...] </b> <br> <li><b>moduleDirection &lt;Stringname1&gt;=&lt;dir&gt; [&lt;Stringname2&gt;=&lt;dir&gt; &lt;Stringname3&gt;=&lt;dir&gt; ...] </b> <br><br>
Ausrichtung &lt;dir&gt; der Solarmodule im String "StringnameX". Der Stringname ist ein Schlüsselwert des Ausrichtung &lt;dir&gt; der Solarmodule im String "StringnameX". Der Stringname ist ein Schlüsselwert des
Readings <b>inverterStrings</b>. <br> Readings <b>inverterStrings</b>. <br>
Die Richtungsangabe &lt;dir&gt; kann eine der folgenden Werte sein: <br><br> Die Richtungsangabe &lt;dir&gt; kann eine der folgenden Werte sein: <br><br>
@ -3872,7 +3875,8 @@ werden weitere SolarForecast Devices zugeordnet.
<ul> <ul>
<a name="moduleTiltAngle"></a> <a name="moduleTiltAngle"></a>
<li><b>moduleTiltAngle &lt;Stringname1&gt;=&lt;Winkel&gt; [&lt;Stringname2&gt;=&lt;Winkel&gt; &lt;Stringname3&gt;=&lt;Winkel&gt; ...] </b> <br> <li><b>moduleTiltAngle &lt;Stringname1&gt;=&lt;Winkel&gt; [&lt;Stringname2&gt;=&lt;Winkel&gt; &lt;Stringname3&gt;=&lt;Winkel&gt; ...] </b> <br><br>
Neigungswinkel der Solarmodule. Der Stringname ist ein Schlüsselwert des Readings <b>inverterStrings</b>. <br> Neigungswinkel der Solarmodule. Der Stringname ist ein Schlüsselwert des Readings <b>inverterStrings</b>. <br>
Mögliche Neigungswinkel sind: 0,10,20,30,40,45,50,60,70,80,90 (0 = waagerecht, 90 = senkrecht). <br><br> Mögliche Neigungswinkel sind: 0,10,20,30,40,45,50,60,70,80,90 (0 = waagerecht, 90 = senkrecht). <br><br>
@ -3886,8 +3890,9 @@ werden weitere SolarForecast Devices zugeordnet.
<ul> <ul>
<a name="powerTrigger"></a> <a name="powerTrigger"></a>
<li><b>powerTrigger &lt;1on&gt;=&lt;Wert&gt; &lt;1off&gt;=&lt;Wert&gt; [&lt;2on&gt;=&lt;Wert&gt; &lt;2off&gt;=&lt;Wert&gt; ...] </b> <br> <li><b>powerTrigger &lt;1on&gt;=&lt;Wert&gt; &lt;1off&gt;=&lt;Wert&gt; [&lt;2on&gt;=&lt;Wert&gt; &lt;2off&gt;=&lt;Wert&gt; ...] </b> <br><br>
Generiert Trigger bei Über- bzw. Unterschreitung bestimmter PV Erzeugungswerte. <br>
Generiert Trigger bei Über- bzw. Unterschreitung bestimmter PV Erzeugungswerte (Current_PV). <br>
Überschreiten die letzten drei Messungen der PV Erzeugung eine definierte <b>Xon-Bedingung</b>, wird das Reading Überschreiten die letzten drei Messungen der PV Erzeugung eine definierte <b>Xon-Bedingung</b>, wird das Reading
<b>powerTrigger_X = on</b> erstellt/gesetzt. <b>powerTrigger_X = on</b> erstellt/gesetzt.
Unterschreiten die letzten drei Messungen der PV Erzeugung eine definierte <b>Xoff-Bedingung</b>, wird das Reading Unterschreiten die letzten drei Messungen der PV Erzeugung eine definierte <b>Xoff-Bedingung</b>, wird das Reading
@ -3906,7 +3911,8 @@ werden weitere SolarForecast Devices zugeordnet.
<ul> <ul>
<a name="pvCorrectionFactor_Auto"></a> <a name="pvCorrectionFactor_Auto"></a>
<li><b>pvCorrectionFactor_Auto &lt;on | off&gt; </b> <br> <li><b>pvCorrectionFactor_Auto &lt;on | off&gt; </b> <br><br>
Schaltet die automatische Vorhersagekorrektur ein / aus. <br> Schaltet die automatische Vorhersagekorrektur ein / aus. <br>
Ist die Automatik eingeschaltet, wird nach einer Mindestlaufzeit von FHEM bzw. des Moduls von 24 Stunden für jede Stunde Ist die Automatik eingeschaltet, wird nach einer Mindestlaufzeit von FHEM bzw. des Moduls von 24 Stunden für jede Stunde
ein Korrekturfaktor der Solarvorhersage berechnet und auf die Erwartung des kommenden Tages angewendet. ein Korrekturfaktor der Solarvorhersage berechnet und auf die Erwartung des kommenden Tages angewendet.
@ -3919,7 +3925,8 @@ werden weitere SolarForecast Devices zugeordnet.
<ul> <ul>
<a name="pvCorrectionFactor_XX"></a> <a name="pvCorrectionFactor_XX"></a>
<li><b>pvCorrectionFactor_XX &lt;Zahl&gt; </b> <br> <li><b>pvCorrectionFactor_XX &lt;Zahl&gt; </b> <br><br>
Manueller Korrekturfaktor für die Stunde XX des Tages zur Anpassung der Vorhersage an die individuelle Anlage. <br> Manueller Korrekturfaktor für die Stunde XX des Tages zur Anpassung der Vorhersage an die individuelle Anlage. <br>
(default: 1.0) (default: 1.0)
</li> </li>
@ -3928,7 +3935,8 @@ werden weitere SolarForecast Devices zugeordnet.
<ul> <ul>
<a name="reset"></a> <a name="reset"></a>
<li><b>reset </b> <br> <li><b>reset </b> <br><br>
Löscht die aus der Drop-Down Liste gewählte Datenquelle bzw. zu der Funktion gehörende Readings. <br> Löscht die aus der Drop-Down Liste gewählte Datenquelle bzw. zu der Funktion gehörende Readings. <br>
</li> </li>
</ul> </ul>
@ -3936,7 +3944,8 @@ werden weitere SolarForecast Devices zugeordnet.
<ul> <ul>
<a name="writeHistory"></a> <a name="writeHistory"></a>
<li><b>writeHistory </b> <br> <li><b>writeHistory </b> <br><br>
Die vom Device gesammelten historischen PV Daten werden in ein File geschrieben. Dieser Vorgang wird per default Die vom Device gesammelten historischen PV Daten werden in ein File geschrieben. Dieser Vorgang wird per default
regelmäßig im Hintergrund ausgeführt. Im Internal "HISTFILE" wird der Filename und der Zeitpunkt der letzten regelmäßig im Hintergrund ausgeführt. Im Internal "HISTFILE" wird der Filename und der Zeitpunkt der letzten
Speicherung dokumentiert. <br> Speicherung dokumentiert. <br>
@ -4043,13 +4052,13 @@ werden weitere SolarForecast Devices zugeordnet.
<ul> <ul>
<ul> <ul>
<a name="alias"></a> <a name="alias"></a>
<li><b>alias </b><br> <li><b>alias </b> <br>
In Verbindung mit "showLink" ein beliebiger Anzeigename. In Verbindung mit "showLink" ein beliebiger Anzeigename.
</li> </li>
<br> <br>
<a name="autoRefresh"></a> <a name="autoRefresh"></a>
<li><b>autoRefresh</b><br> <li><b>autoRefresh</b> <br>
Wenn gesetzt, werden aktive Browserseiten des FHEMWEB-Devices welches das SolarForecast-Device aufgerufen hat, nach der Wenn gesetzt, werden aktive Browserseiten des FHEMWEB-Devices welches das SolarForecast-Device aufgerufen hat, nach der
eingestellten Zeit (Sekunden) neu geladen. Sollen statt dessen Browserseiten eines bestimmten FHEMWEB-Devices neu eingestellten Zeit (Sekunden) neu geladen. Sollen statt dessen Browserseiten eines bestimmten FHEMWEB-Devices neu
geladen werden, kann dieses Device mit dem Attribut "autoRefreshFW" festgelegt werden. geladen werden, kann dieses Device mit dem Attribut "autoRefreshFW" festgelegt werden.