mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-01-31 18:59:33 +00:00
98_DOIF.pm new: weekday X for tomorrow working day (TWD MAT)
git-svn-id: https://svn.fhem.de/fhem/trunk@27202 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
7ac3ff8131
commit
fb1fdfe6c9
@ -1549,7 +1549,7 @@ sub setValue_collect
|
|||||||
readingsSingleUpdate ($hash, "error", "${$collect}{output}, ".$@,1);
|
readingsSingleUpdate ($hash, "error", "${$collect}{output}, ".$@,1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return if (!defined $r);
|
||||||
|
|
||||||
my ($seconds, $microseconds) = gettimeofday();
|
my ($seconds, $microseconds) = gettimeofday();
|
||||||
|
|
||||||
@ -1828,6 +1828,8 @@ sub setValue_bar
|
|||||||
readingsSingleUpdate ($hash, "error", "${$bar}{output}, ".$@,1);
|
readingsSingleUpdate ($hash, "error", "${$bar}{output}, ".$@,1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return if (!defined $r);
|
||||||
|
|
||||||
my ($seconds, $microseconds) = gettimeofday();
|
my ($seconds, $microseconds) = gettimeofday();
|
||||||
|
|
||||||
$r = ($r =~ /(-?\d+(\.\d+)?)/ ? $1 : "N/A");
|
$r = ($r =~ /(-?\d+(\.\d+)?)/ ? $1 : "N/A");
|
||||||
@ -2518,11 +2520,14 @@ ParseCommandsDoIf($$$)
|
|||||||
sub DOIF_weekdays($$)
|
sub DOIF_weekdays($$)
|
||||||
{
|
{
|
||||||
my ($hash,$weekdays)=@_;
|
my ($hash,$weekdays)=@_;
|
||||||
my @days=split(',',AttrVal($hash->{NAME},"weekdays","So|Su,Mo,Di|Tu,Mi|We,Do|Th,Fr,Sa,WE,AT|WD,MWE|TWE"));
|
my @days=split(',',AttrVal($hash->{NAME},"weekdays","So|Su,Mo,Di|Tu,Mi|We,Do|Th,Fr,Sa,WE,AT|WD,MWE|TWE,MAT|TWD"));
|
||||||
|
|
||||||
for (my $i=@days-1;$i>=0;$i--)
|
for (my $i=@days-1;$i>=0;$i--)
|
||||||
{
|
{
|
||||||
$weekdays =~ s/$days[$i]/$i/;
|
my $wd = $i==10 ? "X" : $i;
|
||||||
|
$weekdays =~ s/$days[$i]/$wd/;
|
||||||
}
|
}
|
||||||
|
|
||||||
return($weekdays);
|
return($weekdays);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2652,7 +2657,7 @@ sub DOIF_time {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($ret == 1) {
|
if ($ret == 1) {
|
||||||
return 1 if ($days eq "" or $days =~ /$wday/ or ($days =~ /7/ and $we) or ($days =~ /8/ and !$we) or ($days =~ /9/ and $twe));
|
return 1 if ($days eq "" or $days =~ /$wday/ or ($days =~ /7/ and $we) or ($days =~ /8/ and !$we) or ($days =~ /9/ and $twe) or ($days =~ /X/ and !$twe));
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -2673,7 +2678,7 @@ sub DOIF_time_once {
|
|||||||
my $we=DOIF_we($wday);
|
my $we=DOIF_we($wday);
|
||||||
my $twe=DOIF_tomorrow_we($wday);
|
my $twe=DOIF_tomorrow_we($wday);
|
||||||
if ($flag) {
|
if ($flag) {
|
||||||
return 1 if ($days eq "" or $days =~ /$wday/ or ($days =~ /7/ and $we) or ($days =~ /8/ and !$we) or ($days =~ /9/ and $twe));
|
return 1 if ($days eq "" or $days =~ /$wday/ or ($days =~ /7/ and $we) or ($days =~ /8/ and !$we) or ($days =~ /9/ and $twe) or ($days =~ /X/ and !$twe));
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -4523,12 +4528,6 @@ package DOIF;
|
|||||||
#use Date::Parse qw(str2time);
|
#use Date::Parse qw(str2time);
|
||||||
use Time::HiRes qw(gettimeofday);
|
use Time::HiRes qw(gettimeofday);
|
||||||
|
|
||||||
sub set_bar
|
|
||||||
{
|
|
||||||
my ($bar,$timeOffset,$valueData)=@_;
|
|
||||||
::DOIF_set_bar_values($hs,$bar,$timeOffset,$valueData);
|
|
||||||
}
|
|
||||||
|
|
||||||
sub DOIF_ExecTimer
|
sub DOIF_ExecTimer
|
||||||
{
|
{
|
||||||
my ($timer)=@_;
|
my ($timer)=@_;
|
||||||
@ -5002,7 +5001,7 @@ sub format_value {
|
|||||||
my ($val,$min,$dec)=@_;
|
my ($val,$min,$dec)=@_;
|
||||||
my $format;
|
my $format;
|
||||||
my $value=$val;
|
my $value=$val;
|
||||||
if ($val eq "") {
|
if (!defined $val or $val eq "") {
|
||||||
$val="N/A";
|
$val="N/A";
|
||||||
$format='%s';
|
$format='%s';
|
||||||
$value=$min;
|
$value=$min;
|
||||||
@ -7853,24 +7852,24 @@ attr di_gong do always</code><br>
|
|||||||
<br>
|
<br>
|
||||||
Hinter der Zeitangabe kann ein oder mehrere Wochentage getrennt mit einem Pipezeichen | angegeben werden. Die Syntax lautet:<br>
|
Hinter der Zeitangabe kann ein oder mehrere Wochentage getrennt mit einem Pipezeichen | angegeben werden. Die Syntax lautet:<br>
|
||||||
<br>
|
<br>
|
||||||
<code>[<time>|0123456789]</code> 0-9 entspricht: 0-Sonntag, 1-Montag, ... bis 6-Samstag sowie 7 für Wochenende und Feiertage (entspricht $we), 8 für Arbeitstage (entspricht !$we) und 9 für Wochenende oder Feiertag morgen (entspricht intern $twe)<br>
|
<code>[<time>|0123456789X]</code> mit 0 Sonntag, 1 Montag, ... bis 6 Samstag, 7 Wochenende und Feiertage (entspricht $we), 8 Arbeitstag (entspricht !$we),9 Wochenende oder Feiertag morgen (entspricht intern $twe), X Arbeitstag morgen (entspricht intern !$twe)<br>
|
||||||
<br>
|
<br>
|
||||||
alternativ mit Buchstaben-Kürzeln:<br>
|
alternativ mit Buchstaben-Kürzeln:<br>
|
||||||
<br>
|
<br>
|
||||||
<code>[<time>|So Mo Di Mi Do Fr Sa WE AT MWE]</code> WE entspricht der Ziffer 7, AT der Ziffer 8 und MWE der Ziffer 9<br>
|
<code>[<time>|So Mo Di Mi Do Fr Sa WE AT MWE MAT]</code> WE entspricht der Ziffer 7, AT der Ziffer 8, MWE der Ziffer 9, MAT dem Buchstaben X<br>
|
||||||
<br>
|
<br>
|
||||||
oder entsprechend mit englischen Bezeichnern:<br>
|
oder entsprechend mit englischen Bezeichnern:<br>
|
||||||
<br>
|
<br>
|
||||||
<code>[<time>|Su Mo Tu We Th Fr Sa WE WD TWE]</code><br>
|
<code>[<time>|Su Mo Tu We Th Fr Sa WE WD TWE TWD]</code><br>
|
||||||
<br>
|
<br>
|
||||||
<li><a name="DOIF_weekdays"></a>
|
<li><a name="DOIF_weekdays"></a>
|
||||||
Mit Hilfe des Attributes <code>weekdays</code> können beliebige Wochentagbezeichnungen definiert werden.<br>
|
Mit Hilfe des Attributes <code>weekdays</code> können beliebige Wochentagbezeichnungen definiert werden.<br>
|
||||||
<a name="weekdays"></a><br>
|
<a name="weekdays"></a><br>
|
||||||
Die Syntax lautet:<br>
|
Die Syntax lautet:<br>
|
||||||
<br>
|
<br>
|
||||||
<code>weekdays <Bezeichnung für Sonntag>,<Bezeichnung für Montag>,...,<Bezeichnung für Wochenende oder Feiertag>,<Bezeichnung für Arbeitstage>,<Bezeichnung für Wochenende oder Feiertag morgen></code><br>
|
<code>weekdays <Bezeichnung für Sonntag>,<Bezeichnung für Montag>,...,<Bezeichnung für Wochenende oder Feiertag>,<Bezeichnung für Arbeitstag>,<Bezeichnung für Wochenende oder Feiertag morgen>,<Bezeichnung für Arbeitstag morgen></code><br>
|
||||||
<br>
|
<br>
|
||||||
Beispiel: <code>di_mydoif attr weekdays Son,Mon,Die,Mit,Don,Fre,Sam,Wochenende,Arbeitstag,WochenendeMorgen</code><br>
|
Beispiel: <code>di_mydoif attr weekdays Son,Mon,Die,Mit,Don,Fre,Sam,Wochenende,Arbeitstag,WochenendeMorgen,ArbeitstagMorgen</code><br>
|
||||||
<br>
|
<br>
|
||||||
<u>Anwendungsbeispiel</u>: Radio soll am Wochenende und an Feiertagen um 08:30 Uhr eingeschaltet und um 09:30 Uhr ausgeschaltet werden. Am Montag und Mittwoch soll das Radio um 06:30 Uhr eingeschaltet und um 07:30 Uhr ausgeschaltet werden. Hier mit englischen Bezeichnern:<br>
|
<u>Anwendungsbeispiel</u>: Radio soll am Wochenende und an Feiertagen um 08:30 Uhr eingeschaltet und um 09:30 Uhr ausgeschaltet werden. Am Montag und Mittwoch soll das Radio um 06:30 Uhr eingeschaltet und um 07:30 Uhr ausgeschaltet werden. Hier mit englischen Bezeichnern:<br>
|
||||||
<br>
|
<br>
|
||||||
|
Loading…
Reference in New Issue
Block a user