diff --git a/fhem/docs/commandref_frame.html b/fhem/docs/commandref_frame.html index fe91957e6..9e2d8deb5 100644 --- a/fhem/docs/commandref_frame.html +++ b/fhem/docs/commandref_frame.html @@ -1544,14 +1544,16 @@ The following local attributes are used by a wider range of devices:
  • holiday2we
    If this attribute is set, then the $we variable - will be true, if the value of the holiday - variable referenced by this attribute is not none.
    - If it is a comma separated list, then it is true, if one of the - referenced entities is not none.
    + will be true, if it is either saturday/sunday, or the value of the holiday variable referenced by this attribute is + not none.
    If it is a comma separated list, then it is true, if one + of the referenced entities is not none.
    Example:
    + Note: if one of the elements in the list is called weekEnd, then the + check for saturday/sunday is skipped.

  • diff --git a/fhem/docs/commandref_frame_DE.html b/fhem/docs/commandref_frame_DE.html index 6c0c4b7a8..52319b3b9 100644 --- a/fhem/docs/commandref_frame_DE.html +++ b/fhem/docs/commandref_frame_DE.html @@ -1643,15 +1643,18 @@ Die folgenden lokalen Attribute werden von mehreren Geräten verwendet:
  • holiday2we
    Wenn dieses Attribut gesetzt wurde, dann wird die $we Variable als "true" betrachtet, wenn der - Wert der holiday Variable zu diesem Attribut - nicht "none" ist.
    + href="#perl">$we Variable als "true" betrachtet, wenn + heute entweder Samstag/Sonntag ist, oder der Wert der holiday Variable zu diesem Attribut nicht + "none" ist.
    Falls es eine Komma getrennte Liste ist, dann ist es wahr, falls einer der referenzierten Instanzen nicht "none" ist.
    Beispiel:
    + Falls sich einer der Elemente dieser Liste weekEnd nennt, dann wird + nicht auf Samstag/Sonntag geprüft.

  • diff --git a/fhem/fhem.pl b/fhem/fhem.pl index 29553d3ca..f6271c8fb 100755 --- a/fhem/fhem.pl +++ b/fhem/fhem.pl @@ -5962,14 +5962,17 @@ IsWe(;$$) $wday = (localtime(gettimeofday()))[6] if(!defined($wday)); $when = "state" if(!$when || $when !~ m/^(yesterday|tomorrow)$/); - my $we = ($when eq "yesterday" ? ($wday==0 || $wday==1) : - ($when eq "state" ? ($wday==6 || $wday==0) : + my ($we, $wf); + foreach my $h2we (split(",", AttrVal("global", "holiday2we", ""))) { + my $b = ReadingsVal($h2we, $when, 0); + $we = 1 if($b && $b ne "none"); + $wf = 1 if($h2we eq "weekEnd"); + } + + if(!$wf && !$we) { + $we = ($when eq "yesterday" ? ($wday==0 || $wday==1) : + ($when eq "state" ? ($wday==6 || $wday==0) : ($wday==5 || $wday==6))); # tomorrow - if(!$we) { - foreach my $h2we (split(",", AttrVal("global", "holiday2we", ""))) { - my $b = ReadingsVal($h2we, $when, 0); - $we = 1 if($b && $b ne "none"); - } } return $we ? 1 : 0; }