mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-02-27 14:24:52 +00:00
fhem.pl: add IsWe arguments YYYY-MM-DD and MM-DD (Forum #98583)
git-svn-id: https://svn.fhem.de/fhem/trunk@19755 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
e7c077a0b5
commit
32f069cbfe
@ -1838,8 +1838,8 @@ The following local attributes are used by a wider range of devices:
|
||||
define roll_en *08:30:00 { fhem "trigger SwitchAllRoll on" if($we) }<br>
|
||||
</ul>
|
||||
$we is equivalent to calling IsWe(), which optionally takes the arguments
|
||||
"today", "yesterday" and "tomorrow". Note: for everything else "today" is
|
||||
assumed without an error message.<br>
|
||||
"today", "yesterday", "tomorrow", MM-DD or YYYY-MM-DD. Note: for everything
|
||||
else "today" is assumed without an error message.<br>
|
||||
<br>
|
||||
|
||||
<li>
|
||||
|
@ -1982,8 +1982,9 @@ Die folgenden lokalen Attribute werden von mehreren Geräten verwendet:
|
||||
define roll_en *08:30:00 { fhem "trigger SwitchAllRoll on" if($we) }<br>
|
||||
</ul>
|
||||
$we wird mit IsWe() gesetzt, diese Funktion nimmt optional die Argumente
|
||||
"today", "yesterday" und "tomorrow". Achtung: alles andere wird als "today"
|
||||
interpretiert, ohne eine Fehlermeldung zu generieren.<br>
|
||||
"today", "yesterday", "tomorrow", MM-DD oder YYYY-MM-DD. Achtung: alles
|
||||
andere wird als "today" interpretiert, ohne eine Fehlermeldung zu
|
||||
generieren.<br>
|
||||
<br>
|
||||
|
||||
</li><li>
|
||||
|
21
fhem/fhem.pl
21
fhem/fhem.pl
@ -5959,12 +5959,21 @@ sub
|
||||
IsWe(;$$)
|
||||
{
|
||||
my ($when, $wday) = @_;
|
||||
$wday = (localtime(gettimeofday()))[6] if(!defined($wday));
|
||||
$when = "state" if(!$when);
|
||||
|
||||
|
||||
my $dt = ($when && $when =~ m/^((\d{4})-)?([01]\d)-([0-3]\d)$/);
|
||||
$when = "state" if(!$when || ($when !~ m/^(yesterday|tomorrow)$/ && !$dt));
|
||||
if(!defined($wday)) {
|
||||
if($dt) {
|
||||
my ($y,$m,$d) = ($2 ? $2-1900 : (localtime())[5], $3-1, $4);
|
||||
$wday = (localtime(mktime(1,1,1,$d,$m,$y,0,0,-1)))[6];
|
||||
} else {
|
||||
$wday = (localtime(gettimeofday()))[6];
|
||||
}
|
||||
}
|
||||
|
||||
my ($we, $wf);
|
||||
foreach my $h2we (split(",", AttrVal("global", "holiday2we", ""))) {
|
||||
my $b = ReadingsVal($h2we, $when, 0);
|
||||
my $b = $dt ? CommandGet(undef,"$h2we $when") : ReadingsVal($h2we,$when,0);
|
||||
if($b && $b ne "none") {
|
||||
return 0 if($h2we eq "noWeekEnd");
|
||||
$we = 1 if($b && $b ne "none");
|
||||
@ -5974,8 +5983,8 @@ IsWe(;$$)
|
||||
|
||||
if(!$wf && !$we) {
|
||||
$we = ($when eq "yesterday" ? ($wday==0 || $wday==1) :
|
||||
($when eq "state" ? ($wday==6 || $wday==0) :
|
||||
($wday==5 || $wday==6))); # tomorrow
|
||||
($when ne "tomorrow" ? ($wday==6 || $wday==0) :
|
||||
($wday==5 || $wday==6))); # tomorrow
|
||||
}
|
||||
return $we ? 1 : 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user