diff --git a/fhem/contrib/DS_Starter/76_SolarForecast.pm b/fhem/contrib/DS_Starter/76_SolarForecast.pm
index a018f711f..02795a0c6 100644
--- a/fhem/contrib/DS_Starter/76_SolarForecast.pm
+++ b/fhem/contrib/DS_Starter/76_SolarForecast.pm
@@ -3694,7 +3694,7 @@ sub centralTask {
}
my $uac = ReadingsVal ($name, 'pvCorrectionFactor_Auto', 'off');
- if ($uac eq 'on') {
+ if ($uac eq 'on' && $hash->{MODEL}) {
if ($hash->{MODEL} eq 'DWD') {
readingsSingleUpdate ($hash, 'pvCorrectionFactor_Auto', 'on_complex', 0);
}
@@ -5799,7 +5799,7 @@ sub __setConsRcmdState {
my $rescons = isConsumerPhysOn($hash, $c) ? 0 : $nompower; # resultierender Verbauch nach Einschaltung Consumer
if (!$nompower || $surplus - $rescons > 0) {
- $data{$type}{$name}{consumers}{$c}{isConsumptionRecommended} = 1; # Einschalten des Consumers günstig
+ $data{$type}{$name}{consumers}{$c}{isConsumptionRecommended} = 1; # Einschalten des Consumers günstig bzw. Freigabe für "on" von Überschußseite erteilt
}
else {
$data{$type}{$name}{consumers}{$c}{isConsumptionRecommended} = 0;
@@ -5863,8 +5863,8 @@ sub ___switchConsumerOn {
if ($debug =~ /consumerSwitching/x) { # nur für Debugging
my $cons = CurrentVal ($hash, 'consumption', 0);
- my $nompow = ConsumerVal ($hash, $c, 'power', '-');
- my $sp = CurrentVal ($hash, 'surplus', 0);
+ my $nompow = ConsumerVal ($hash, $c, 'power', '-');
+ my $sp = CurrentVal ($hash, 'surplus', 0);
Log3 ($name, 1, qq{$name DEBUG> consumer "$c" - general switching parameters => }.
qq{auto mode: $auto, current Consumption: $cons W, nompower: $nompow, surplus: $sp W, }.
@@ -5890,7 +5890,7 @@ sub ___switchConsumerOn {
delete $paref->{ps};
}
- elsif ($mode eq "must" || isConsRcmd($hash, $c)) { # "Muss"-Planung oder Überschuß > Leistungsaufnahme
+ elsif ($mode eq "must" || isConsRcmd($hash, $c)) { # "Muss"-Planung oder Überschuß > Leistungsaufnahme (can)
CommandSet(undef,"$cname $oncom");
#my $stopdiff = ceil(ConsumerVal ($hash, $c, "mintime", $defmintime) / 60) * 3600;
@@ -5907,7 +5907,7 @@ sub ___switchConsumerOn {
Log3 ($name, 2, "$name - $state (Automatic = $auto)");
}
}
- elsif (((isInterruptable($hash, $c) == 1 && isConsRcmd ($hash, $c)) || # unterbrochenen Consumer fortsetzen
+ elsif (((isInterruptable($hash, $c) == 1 && isConsRcmd ($hash, $c)) || # unterbrochenen Consumer fortsetzen
(isInterruptable($hash, $c) == 3 && isConsRcmd ($hash, $c))) &&
isInTimeframe ($hash, $c) &&
simplifyCstate ($pstate) =~ /interrupted|interrupting/xs &&
@@ -12802,26 +12802,28 @@ die ordnungsgemäße Anlagenkonfiguration geprüft werden.
Der Schlüssel power gibt die nominale Leistungsaufnahme des Verbrauchers gemäß seines Datenblattes an.
- Dieser Wert wird verwendet um das Schalten des Verbrauchers in Abhängigkeit des aktuellen PV-Überschusses zu
- steuern. Ist power=0 gesetzt, wird der Verbraucher unabhängig von einem ausreichenden PV-Überschuß geschaltet.
+ Dieser Wert wird verwendet um die Schaltzeiten des Verbrauchers zu planen und das Schalten in Abhängigkeit
+ des tatsächlichen PV-Überschusses zum Einplanungszeitpunkt zu steuern.
+ Ist power=0 gesetzt, wird der Verbraucher unabhängig von einem ausreichend vorhandenem PV-Überschuß
+ wie eingeplant geschaltet.
type | Typ des Verbrauchers. Folgende Typen sind erlaubt: |
dishwasher - Verbaucher ist eine Spülmaschine | |
dryer - Verbaucher ist ein Wäschetrockner | |
washingmachine - Verbaucher ist eine Waschmaschine | |
heater - Verbaucher ist ein Heizstab | |
charger - Verbaucher ist eine Ladeeinrichtung (Akku, Auto, Fahrrad, etc.) | |
dishwasher - Verbraucher ist eine Spülmaschine | |
dryer - Verbraucher ist ein Wäschetrockner | |
washingmachine - Verbraucher ist eine Waschmaschine | |
heater - Verbraucher ist ein Heizstab | |
charger - Verbraucher ist eine Ladeeinrichtung (Akku, Auto, Fahrrad, etc.) | |
other - Verbraucher ist keiner der vorgenannten Typen | |
power | nominale Leistungsaufnahme des Verbrauchers (siehe Datenblatt) in W |
(kann auf "0" gesetzt werden) | |
mode | Planungsmodus des Verbrauchers (optional). Erlaubt sind: |
can - Die Einplanung erfolgt zum Zeitpunkt mit wahrscheinlich genügend verfügbaren PV Überschuß (default) | |
Der Start des Verbrauchers zum Planungszeitpunkt unterbleibt bei ungenügendem PV-Überschuß. | |
must - der Verbaucher wird optimiert eingeplant auch wenn wahrscheinlich nicht genügend PV Überschuß vorhanden sein wird | |
must - der Verbraucher wird optimiert eingeplant auch wenn wahrscheinlich nicht genügend PV Überschuß vorhanden sein wird | |
Der Start des Verbrauchers erfolgt auch bei ungenügendem PV-Überschuß. | |
icon | Icon zur Darstellung des Verbrauchers in der Übersichtsgrafik (optional) |
mintime | Einplanungsdauer (Minuten oder "SunPath") des Verbrauchers. (optional) |
on | Set-Kommando zum Einschalten des Verbrauchers (optional) |
off | Set-Kommando zum Ausschalten des Verbrauchers (optional) |
swstate | Reading welches den Schaltzustand des Consumers anzeigt (default: 'state'). |
swstate | Reading welches den Schaltzustand des Verbrauchers anzeigt (default: 'state'). |
on-Regex - regulärer Ausdruck für den Zustand 'ein' (default: 'on') | |
off-Regex - regulärer Ausdruck für den Zustand 'aus' (default: 'off') | |
asynchron | die Art der Schaltstatus Ermittlung im Verbraucher Device. Die Statusermittlung des Verbrauchers nach einem Schaltbefehl erfolgt nur |
:<Schwellenwert> (W) - aktuelle Leistung ab welcher der Verbraucher als aktiv gewertet wird. | |
etotal | Reading:Einheit (Wh/kWh) des Consumer Device, welches die Summe der verbrauchten Energie liefert (optional) |
:<Schwellenwert> (Wh) - Energieverbrauch pro Stunde ab dem der Verbrauch als gültig gewertet wird. | |
swoncond | zusätzliche Bedingung die erfüllt sein muß um den Verbraucher einzuschalten (optional). Der geplante Zyklus wird gestartet. |
swoncond | Bedingung die zusätzlich erfüllt sein muß um den Verbraucher einzuschalten (optional). Der geplante Zyklus wird gestartet. |
Device - Device zur Lieferung der zusätzlichen Einschaltbedingung | |
Reading - Reading zur Lieferung der zusätzlichen Einschaltbedingung | |
Regex - regulärer Ausdruck der für die Einschaltbedingung erfüllt sein muß |