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:
attr global holiday2we he
+ 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:
attr global holiday2we hessen
+ 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;
}