mit dem folgenden kleinen patch kann man in disabledForIntervals auch wochentage beim start und ende eines intervalls angeben.
z.b.:
- montag bis freitag: 1;00:00-5;23:59
- das ganze wochende: 6;00:00-23:59 0;00:00-23:59
Index: fhem.pl
===================================================================
--- fhem.pl (revision 12716)
+++ fhem.pl (working copy)
@@ -780,7 +780,23 @@
my $hms = sprintf("%02d:%02d:%02d", $hour, $min, $sec);
foreach my $ft (split(" ", $dfi)) {
my ($from, $to) = split("-", $ft);
- return 2 if($from && $to && $from le $hms && $hms le $to);
+ next if( !$from );
+ next if( !$to );
+ if( $from =~ m/^(\d);(.*)/ ) {
+ my $from_day, $to_day;
+ $from_day = $1;
+ $from = $2;
+ if( $to =~ m/^(\d);(.*)/ ) {
+ $to_day = $1;
+ $to = $2;
+ }
+ $to_day = $from_day if( !defined($to_day) );
+ return 2 if( ($from_day < $wday || ($from_day == $wday && $from le $hms) )
+ && ($to_day >$wday || ($to_day == $wday && $hms le $to) ) );
+ } else {
+ return 2 if($from le $hms && $hms le $to);
+ }
+
}
}
Index: 90_at.pm
===================================================================
--- 90_at.pm (revision 12716)
+++ 90_at.pm (working copy)
@@ -550,9 +550,10 @@
<a name="disabledForIntervals"></a>
<li>disabledForIntervals HH:MM-HH:MM HH:MM-HH-MM...<br>
- Space separated list of HH:MM tupels. If the current time is between
+ Space separated list of HH:MM or D;HH:MM tupels. If the current time is between
the two time specifications, the current device is disabled. Instead of
- HH:MM you can also specify HH or HH:MM:SS. To specify an interval
+ HH:MM you can also specify HH or HH:MM:SS. D is the day of the week, with 0
+ indicating Sunday and 3 indicating Wednesday. To specify an interval
spawning midnight, you have to specify two intervals, e.g.:
<ul>
23:00-24:00 00:00-01:00
@@ -735,9 +736,10 @@
<a name="disabledForIntervals"></a>
<li>disabledForIntervals HH:MM-HH:MM HH:MM-HH-MM...<br>
Das Argument ist eine Leerzeichengetrennte Liste von Minuszeichen-
- getrennten HH:MM Paaren. Falls die aktuelle Uhrzeit zwischen diesen
+ getrennten HH:MM oder D;HH:MM Paaren. Falls die aktuelle Uhrzeit zwischen diesen
Werten fällt, dann wird die Ausführung, wie beim disable,
- ausgesetzt. Statt HH:MM kann man auch HH oder HH:MM:SS angeben.
+ ausgesetzt. Statt HH:MM kann man auch HH oder HH:MM:SS angeben.
+ D ist der Tag der Woche, mit 0 als Sonntag and 3 als Mittwoch.
Um einen Intervall um Mitternacht zu spezifizieren, muss man zwei
einzelne angeben, z.Bsp.:
<ul>
Im Prinzip finde ich es gut, ich haette nur gerne einen anderen Trenner, da ; per Escape geschuetzt werden muss.
Was haeltst du vom Punkt (.) ?
wie wäre @ ?
Habs mit @ eingecheckt.
Kannst du bitte meine (etwas kuerzere) Implementierung pruefen?
ja. so funktioniert das auch. der einzige unterschied ist das man mehr 1@10:00-12:00 schreiben (d.h. den tag bei to weg lassen) kann sondern bei from und to den tag hin schreiben muss.
und es lässt sich nicht so einfach auf 1-5 oder 1,3,5 für die tagesangabe erweitern. aber da man die ja auch einzeln hin schreiben kann macht das nichts.
Den ersten Einwand sehe ich nicht, den zweiten verstehe ich.
Hallo,
können wir das bitte wiederverwendbar machen? Eine Funktion, die allgemein prüft, ob ein Zeitpunkt in einer Menge von Intervallen liegt?
Kann der Wochentag bitte modulo 7 genommen werden? Dann kann ich 7 schreiben und bekomme Sonntag, so wie ich das erwarte.
Zur Sicherheit: wird 6@00:00-24:00 als Samstag interpretiert?
Gut fände ich, wenn man 1,3-5@12-14:30 schreiben könnte, wobei eine Wochentagsliste nur erlaubt ist, wenn bei der Endezeit kein Wochentag angegeben ist. Also
1,3-5,7@12-14:30 ok (Montag, Mittwoch bis Freitag, Sonntag, jeweils von Mittag bis 14:30)
2@10:15-3@11:15 ok (von Dienstag 10:15 bis Mittwoch 11:15)
2,3@10:15-4@11:15 fehlerhaft
Viele Grüße
Boris