diff --git a/fhem/FHEM/98_DOIF.pm b/fhem/FHEM/98_DOIF.pm
index 0fb46b5de..05f8a4a6b 100644
--- a/fhem/FHEM/98_DOIF.pm
+++ b/fhem/FHEM/98_DOIF.pm
@@ -1549,7 +1549,7 @@ sub setValue_collect
readingsSingleUpdate ($hash, "error", "${$collect}{output}, ".$@,1);
}
}
-
+ return if (!defined $r);
my ($seconds, $microseconds) = gettimeofday();
@@ -1828,6 +1828,8 @@ sub setValue_bar
readingsSingleUpdate ($hash, "error", "${$bar}{output}, ".$@,1);
}
}
+ return if (!defined $r);
+
my ($seconds, $microseconds) = gettimeofday();
$r = ($r =~ /(-?\d+(\.\d+)?)/ ? $1 : "N/A");
@@ -2518,11 +2520,14 @@ ParseCommandsDoIf($$$)
sub DOIF_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--)
{
- $weekdays =~ s/$days[$i]/$i/;
+ my $wd = $i==10 ? "X" : $i;
+ $weekdays =~ s/$days[$i]/$wd/;
}
+
return($weekdays);
}
@@ -2652,7 +2657,7 @@ sub DOIF_time {
}
}
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;
}
@@ -2673,7 +2678,7 @@ sub DOIF_time_once {
my $we=DOIF_we($wday);
my $twe=DOIF_tomorrow_we($wday);
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;
}
@@ -4523,12 +4528,6 @@ package DOIF;
#use Date::Parse qw(str2time);
use Time::HiRes qw(gettimeofday);
-sub set_bar
-{
- my ($bar,$timeOffset,$valueData)=@_;
- ::DOIF_set_bar_values($hs,$bar,$timeOffset,$valueData);
-}
-
sub DOIF_ExecTimer
{
my ($timer)=@_;
@@ -5002,7 +5001,7 @@ sub format_value {
my ($val,$min,$dec)=@_;
my $format;
my $value=$val;
- if ($val eq "") {
+ if (!defined $val or $val eq "") {
$val="N/A";
$format='%s';
$value=$min;
@@ -7853,24 +7852,24 @@ attr di_gong do always
Hinter der Zeitangabe kann ein oder mehrere Wochentage getrennt mit einem Pipezeichen | angegeben werden. Die Syntax lautet:
-[<time>|0123456789]
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)
+[<time>|0123456789X]
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)
alternativ mit Buchstaben-Kürzeln:
-[<time>|So Mo Di Mi Do Fr Sa WE AT MWE]
WE entspricht der Ziffer 7, AT der Ziffer 8 und MWE der Ziffer 9
+[<time>|So Mo Di Mi Do Fr Sa WE AT MWE MAT]
WE entspricht der Ziffer 7, AT der Ziffer 8, MWE der Ziffer 9, MAT dem Buchstaben X
oder entsprechend mit englischen Bezeichnern:
-[<time>|Su Mo Tu We Th Fr Sa WE WD TWE]
+[<time>|Su Mo Tu We Th Fr Sa WE WD TWE TWD]
weekdays
können beliebige Wochentagbezeichnungen definiert werden.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>
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>
di_mydoif attr weekdays Son,Mon,Die,Mit,Don,Fre,Sam,Wochenende,Arbeitstag,WochenendeMorgen
di_mydoif attr weekdays Son,Mon,Die,Mit,Don,Fre,Sam,Wochenende,Arbeitstag,WochenendeMorgen,ArbeitstagMorgen