Moin,
ich verwende den ein oder anderen Ausdruck, der abhängig davon, ob am Folgetag Wochenende oder ein Feiertag ist, Dinge anders tut. Z.B. geht Freitags und vor Feiertagen die Flurlampe erst später aus, weil man ja länger aufbleiben kann, wobei Sonntags und an Feiertagen vor Wochentagen die Lampe "normal" ausgeht, da man ja am nächsten Tag raus muss und früher ins Bett springt. Bisher löse ich das z.B. in einem DOIF über
[?BRB_Feiertag:tomorrow] ne "none"
wobei ich bei allen Ausdrücken, die auf den heutigen Tag testen, die folgende Syntax verwenden kann:
[<time>|012345678] 0-8 entspricht: 0-Sonntag, 1-Montag, ... bis 6-Samstag sowie 7 für Wochenende und Feiertage (entspricht $we) und 8 für Arbeitstage (entspricht !$we).
Jetzt wäre es doch sehr praktisch, wenn es z.B. eine Variable gäbe, die Anzeigt, ob MORGEN Wochenende/kein Wochenende bzw. Feiertag/kein Feiertag ist. So etwas wie $twe. dadurch könnte man den ein oder anderen Ausdruck ggf. vereinfachen. DOIF könnte dann neben 0-8 bei Zeitausdrücken auch noch 9 und A akzeptieren, wobei 9 = $twe und A = !$twe sein könnte.
Oder gibt es das schon und ich habe übersehen? Oder ist der Ansatz vielleicht nicht praktikabel?
Gruß
Michael
ob morgen Feiertag ist, findest Du heraus, wenn Du in Deinem FHEM einen Feiertagskalender ("help holiday") hinterlegst. Dann gibt es ein Reading für "tomorrow"
Und Wochenende ist morgen meistens dann, wenn heute Freitag ist.
Sowas läßt sich mit (geschätzt) drei bis fünf Zeilen perl Code in der 99_myUtils.pm bewerkstelligen.
Ich hatte mal die Überlegung (aber noch nicht umgesetzt) das über einen Dummy zu lösen, der täglich neu befüllt wird mit 01234, wenn morgen Feiertag, dann wird die entsprechend Zahl weggelassen (also wenn Mittwoch Feiertag wird der Dummy Dienstags kurz nach Mitternacht mit 0134 befüllt).
Ja und nein... wie Du am Beispiel meines DOIF sehen kannst, verwende ich da tomorrow. Ich kenne dieses Reading, das ist also kein Problem.
Wenn der Feiertag (also $we) aber auf einem Wochentag liegt, dann ist $we morgen eben auch dann, wenn heute nicht Freitag ist.
Ich (persönlich) fände es also einfacher, wenn man mit einer globalen Variable in Abhängigkeit des heutigen Tages und des Feiertagskalenders angezeigt bekommt, ob MORGEN ein Wochenende/Feiertag ist oder nicht. Natürlich kann man das individuell lösen, aber dann würde man fhem nicht vorwärts bringen.
War aber nur ein Gedanke.
Zitat von: MichaelO am 23 Februar 2017, 18:28:04
Wenn der Feiertag (also $we) aber auf einem Wochentag liegt, dann ist $we morgen eben auch dann, wenn heute nicht Freitag ist.
Das Verhalten kannst Du aber ändern. Dafür gibt es ein Attribut.
Zitat von: MichaelO am 23 Februar 2017, 18:28:04
War aber nur ein Gedanke.
typisches DOIF Denken... *grusel*
Ist zwar schon etwas älter, aber ich kann das nicht so stehen lassen.
Zitat von: betateilchen am 23 Februar 2017, 20:07:21
Das Verhalten kannst Du aber ändern. Dafür gibt es ein Attribut.
Da es die Variable $we für Morgen gar nicht gibt kann es dafür auch kein Attribut geben welches das Verhalten ändert. Ist also falsch. Dein nicht genanntes Attribut welches vermutlich holiday2we von global ist, bezieht sich nur auf $we also heute.
Und zur Vollständigkeit, mal etwas produktives:
Ob man extra ein $twe zur Verfügung stellen muss glaube ich nicht, weil wo hört man da auf? Gestern, Übermorgen oder wie mein Sohn gerne sagt Übergestern... ;D
Wer das hier seiner 99_myUtils.pm hinzufügt hat eine Funktion die zumindest morgen wiederspiegelt.
sub IsWeTomorrow(;$) {
my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime();
return 1 if ++$wday >= 6;
my $wedev = AttrVal("global", "holiday2we", undef) || $_[0];
IsDevice($wedev) && (ReadingsVal($wedev, "tomorrow",undef) ne "none");
}
In Perlcode genau wie DOIF's kann dann &IsWeTomorrow wie "$we für morgen" verwenden.