diff --git a/fhem/contrib/DS_Starter/76_SolarForecast.pm b/fhem/contrib/DS_Starter/76_SolarForecast.pm
index 361e8a9aa..a1b699a11 100644
--- a/fhem/contrib/DS_Starter/76_SolarForecast.pm
+++ b/fhem/contrib/DS_Starter/76_SolarForecast.pm
@@ -1804,32 +1804,29 @@ sub _evaluateThresholds {
return if(!$pt);
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);
- my $gen = $aa[0];
- my ($gt,$lt) = (1,1);
-
- for my $elem (@aa) {
- if($elem < $gen) {
- $gt = 0;
- }
- if($elem > $gen) {
- $lt = 0;
- }
- }
+ my $gen1 = $aa[0];
+ my $gen2 = $aa[1];
+ my $gen3 = $aa[2];
my ($a,$h) = parseParams ($pt);
for my $key (keys %{$h}) {
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");
}
- 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");
}
}
@@ -3739,7 +3736,8 @@ werden weitere SolarForecast Devices zugeordnet.
- - currentForecastDev
+ - currentForecastDev
+
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 DWD_OpenData Commandref).
Im ausgewählten DWD_OpenData Device müssen mindestens diese Attribute gesetzt sein:
@@ -3760,7 +3758,8 @@ werden weitere SolarForecast Devices zugeordnet.
- - currentInverterDev <Inverter Device Name> pv=<Reading aktuelle PV-Leistung>:<Einheit> etotal=<Reading Summe Energieerzeugung>:<Einheit>
+ - currentInverterDev <Inverter Device Name> pv=<Reading aktuelle PV-Leistung>:<Einheit> etotal=<Reading Summe Energieerzeugung>:<Einheit>
+
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
dieses Device mit den entsprechenden Readings an.
@@ -3788,7 +3787,8 @@ werden weitere SolarForecast Devices zugeordnet.
- - currentMeterDev <Meter Device Name> gcon=<Reading aktueller Netzbezug>:<Einheit> contotal=<Reading Summe Netzbezug>:<Einheit>
+ - currentMeterDev <Meter Device Name> gcon=<Reading aktueller Netzbezug>:<Einheit> contotal=<Reading Summe Netzbezug>:<Einheit>
+
Legt ein beliebiges Device zur Messung des Energiebezugs fest. Es kann auch ein Dummy Device mit entsprechenden Readings
sein.
@@ -3814,7 +3814,8 @@ werden weitere SolarForecast Devices zugeordnet.
- - inverterStrings <Stringname1>[,<Stringname2>,<Stringname3>,...]
+ - inverterStrings <Stringname1>[,<Stringname2>,<Stringname3>,...]
+
Bezeichnungen der am Wechselrichter aktiven Strings. Diese Bezeichnungen werden als Schlüssel in den weiteren
Settings verwendet.
@@ -3828,7 +3829,8 @@ werden weitere SolarForecast Devices zugeordnet.
- - modulePeakString <Stringname1>=<Peak> [<Stringname2>=<Peak> <Stringname3>=<Peak> ...]
+ - modulePeakString <Stringname1>=<Peak> [<Stringname2>=<Peak> <Stringname3>=<Peak> ...]
+
Die Peakleistung des Strings "StringnameX" in kWp. Der Stringname ist ein Schlüsselwert des
Readings inverterStrings.
@@ -3842,7 +3844,8 @@ werden weitere SolarForecast Devices zugeordnet.
- - moduleDirection <Stringname1>=<dir> [<Stringname2>=<dir> <Stringname3>=<dir> ...]
+ - moduleDirection <Stringname1>=<dir> [<Stringname2>=<dir> <Stringname3>=<dir> ...]
+
Ausrichtung <dir> der Solarmodule im String "StringnameX". Der Stringname ist ein Schlüsselwert des
Readings inverterStrings.
Die Richtungsangabe <dir> kann eine der folgenden Werte sein:
@@ -3872,7 +3875,8 @@ werden weitere SolarForecast Devices zugeordnet.
- - moduleTiltAngle <Stringname1>=<Winkel> [<Stringname2>=<Winkel> <Stringname3>=<Winkel> ...]
+ - moduleTiltAngle <Stringname1>=<Winkel> [<Stringname2>=<Winkel> <Stringname3>=<Winkel> ...]
+
Neigungswinkel der Solarmodule. Der Stringname ist ein Schlüsselwert des Readings inverterStrings.
Mögliche Neigungswinkel sind: 0,10,20,30,40,45,50,60,70,80,90 (0 = waagerecht, 90 = senkrecht).
@@ -3886,8 +3890,9 @@ werden weitere SolarForecast Devices zugeordnet.
- - powerTrigger <1on>=<Wert> <1off>=<Wert> [<2on>=<Wert> <2off>=<Wert> ...]
- Generiert Trigger bei Über- bzw. Unterschreitung bestimmter PV Erzeugungswerte.
+ - powerTrigger <1on>=<Wert> <1off>=<Wert> [<2on>=<Wert> <2off>=<Wert> ...]
+
+ Generiert Trigger bei Über- bzw. Unterschreitung bestimmter PV Erzeugungswerte (Current_PV).
Überschreiten die letzten drei Messungen der PV Erzeugung eine definierte Xon-Bedingung, wird das Reading
powerTrigger_X = on erstellt/gesetzt.
Unterschreiten die letzten drei Messungen der PV Erzeugung eine definierte Xoff-Bedingung, wird das Reading
@@ -3906,7 +3911,8 @@ werden weitere SolarForecast Devices zugeordnet.
- - pvCorrectionFactor_Auto <on | off>
+ - pvCorrectionFactor_Auto <on | off>
+
Schaltet die automatische Vorhersagekorrektur ein / aus.
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.
@@ -3919,7 +3925,8 @@ werden weitere SolarForecast Devices zugeordnet.
- - pvCorrectionFactor_XX <Zahl>
+ - pvCorrectionFactor_XX <Zahl>
+
Manueller Korrekturfaktor für die Stunde XX des Tages zur Anpassung der Vorhersage an die individuelle Anlage.
(default: 1.0)
@@ -3928,7 +3935,8 @@ werden weitere SolarForecast Devices zugeordnet.
- - reset
+ - reset
+
Löscht die aus der Drop-Down Liste gewählte Datenquelle bzw. zu der Funktion gehörende Readings.
@@ -3936,7 +3944,8 @@ werden weitere SolarForecast Devices zugeordnet.
- - writeHistory
+ - writeHistory
+
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
Speicherung dokumentiert.
@@ -3952,7 +3961,7 @@ werden weitere SolarForecast Devices zugeordnet.
- - html
+ - html
Die Solar Grafik wird als HTML-Code abgerufen und wiedergegeben.
@@ -3960,7 +3969,7 @@ werden weitere SolarForecast Devices zugeordnet.
- - data
+ - data
Startet die Datensammlung zur Bestimmung der solaren Vorhersage und anderer Werte.
@@ -3976,7 +3985,7 @@ werden weitere SolarForecast Devices zugeordnet.
- - pvHistory
+ - pvHistory
Listet die historischen Werte der letzten Tage (max. 31) sortiert nach dem Tagesdatum und Stunde.
Die Stundenangaben beziehen sich auf die jeweilige Stunde des Tages, z.B. bezieht sich die Stunde 09 auf die Zeit
von 08 - 09 Uhr.
@@ -3995,7 +4004,7 @@ werden weitere SolarForecast Devices zugeordnet.
- - pvCircular
+ - pvCircular
Listet die vorhandenen Werte Ringspeicher auf.
Die Stundenangaben beziehen sich auf die Stunde des Tages, z.B. bezieht sich die Stunde 09 auf die Zeit von 08 - 09 Uhr.
Erläuterung der Werte:
@@ -4019,7 +4028,7 @@ werden weitere SolarForecast Devices zugeordnet.
- - stringConfig
+ - stringConfig
Zeigt die aktuelle Stringkonfiguration. Dabei wird gleichzeitig eine Plausibilitätsprüfung vorgenommen und das Ergebnis
sowie eventuelle Anweisungen zur Fehlerbehebung ausgegeben.
@@ -4028,7 +4037,7 @@ werden weitere SolarForecast Devices zugeordnet.
- - valCurrent
+ - valCurrent
Listet die aktuell ermittelten Werte auf.
@@ -4043,13 +4052,13 @@ werden weitere SolarForecast Devices zugeordnet.
- - alias
+ - alias
In Verbindung mit "showLink" ein beliebiger Anzeigename.
- - autoRefresh
+ - autoRefresh
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
geladen werden, kann dieses Device mit dem Attribut "autoRefreshFW" festgelegt werden.