2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-02-27 20:34: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:
rudolfkoenig 2019-07-01 07:29:27 +00:00
parent e7c077a0b5
commit 32f069cbfe
3 changed files with 20 additions and 10 deletions

View File

@ -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>

View File

@ -1982,8 +1982,9 @@ Die folgenden lokalen Attribute werden von mehreren Ger&auml;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>

View File

@ -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;
}