Hallo,
wie lautet die richtige Syntax für if(nächsterTag $we)?
Ich pflege meine holiday-Datei und möchte erreichen, dass die Weihnachtsbaumbeleuchtung immer dann nachts länger brennt, wenn ich am nächsten Tag ausschlafen kann.
Gruß Chris
Hallo Chris,
es gibt da ein paar Ansätze, für die Suchmaschine:
site:forum.fhem.de $we tomorrow
Gruß Otto
Zitat von: chq am 20 Dezember 2018, 08:26:03
möchte erreichen, dass die Weihnachtsbaumbeleuchtung immer dann nachts länger brennt, wenn ich am nächsten Tag ausschlafen kann.
Wohnst Du unter dem Weihnachtsbaum, weil Du am Vorabend das Licht länger brauchst? 8)
[BaWue:tomorrow] ne "none"
So mache ich das in einem DOIF (BaWue ist mein Kalender).
Wenn morgen kein "normaler" Tag ist,...
Für den üblichen Tag vor einem Wochenende (Freitag), sollte $wday == 5 möglich sein.
Wusste gar nicht das der 25 auf einen Samstag fällt und der 25. und 26. und auch andere Tage sind/können Feiertage sein. Passt also nicht wirklich. Daher ist die Abfrage des Holiday Devices mit dem Reading tomorrow schon richtig.
Zitat von: betateilchen am 20 Dezember 2018, 10:50:46
Wohnst Du unter dem Weihnachtsbaum, weil Du am Vorabend das Licht länger brauchst? 8)
Haha- nein, aber wenn ich abends dranhocke und rumpfrickel isses doof, wenn auf einmal das Licht ausgeht und sonst kein weiteres Licht an ist. :P
Zitat von: rabehd am 20 Dezember 2018, 10:59:56
[BaWue:tomorrow] ne "none"
So mache ich das in einem DOIF (BaWue ist mein Kalender).
Wenn morgen kein "normaler" Tag ist,...
Cool, danke. Auch ich brauche das im Rahmen eins DOIFs.
Vielen Dank Euch und auch allen Anderen!
Gruß Chris
Zitat von: CoolTux am 20 Dezember 2018, 12:25:26
Wusste gar nicht das der 25 auf einen Samstag fällt und der 25. und 26. und auch andere Tage sind/können Feiertage sein. Passt also nicht wirklich. Daher ist die Abfrage des Holiday Devices mit dem Reading tomorrow schon richtig.
Laut dem Thread-Titel "Immer einen Tag vor $we etwas auslösen" ist nicht erkennbar, dass es um Feiertage oder Urlaubstage geht.
$we steht nach meinem Wissen und bisheriger Verwendung für Wochenende und im deutschsprachigen Raum ist der Freitag der Tag vor dem Wochenende ;)
ZitatLaut dem Thread-Titel "Immer einen Tag vor $we etwas auslösen" ist nicht erkennbar, dass es um Feiertage oder Urlaubstage geht.
$we steht nach meinem Wissen und bisheriger Verwendung für Wochenende und im deutschsprachigen Raum ist der Freitag der Tag vor dem Wochenende
Mit der holiday-Datei kann $we gesteuert werden und ist dann z.B. auch an einem Feiertag gesetzt. Daher finde ich den Titel und die Beschreibung durchaus korrekt gewählt.
Zitat von: rabehd am 20 Dezember 2018, 10:59:56
[BaWue:tomorrow] ne "none"
Muss man außer der korrekten Angabe der holiday-Datei sonst noch etwas beachten, wenn man das so machen möchte.
Ein erster Test hat bei mir nicht funktioniert und ich kann leider auch in der Commandref hierzu nichts finden.
Gruß Chris
Zitat von: chq am 21 Dezember 2018, 09:02:11
Muss man außer der korrekten Angabe der holiday-Datei sonst noch etwas beachten, wenn man das so machen möchte.
Ein erster Test hat bei mir nicht funktioniert und ich kann leider auch in der Commandref hierzu nichts finden.
Gruß Chris
Zeig mal ein list Deines Holiday Devices.
Poste doch mal ein list deines holiday device.
Dann kann man mehr sagen.
Gesendet von meinem Doogee S60 mit Tapatalk
Internals:
HOLIDAYFILE ./FHEM/bwFeiertageUrlaub.holiday
NAME bwFeiertageUrlaub
NR 60
READONLY 0
STATE frei
TRIGGERTIME 1545433202.05089
TYPE holiday
READINGS:
2018-12-21 00:00:02 state frei
2018-12-21 00:00:02 tomorrow none
2018-12-21 00:00:02 yesterday none
Attributes:
Hm- stimmt eigentlich, oder?
Gruß Chris
# $Id: bw.holiday 14979 2017-08-30 14:29:34Z mahowi $
# Feiertage in Baden-Württemberg
# Siehe auch
# http://de.wikipedia.org/wiki/Feiertage_in_Deutschland
1 01-01 Neujahr
1 01-06 Heilige Drei Koenige
1 05-01 Tag der Arbeit
1 10-03 Tag der deutschen Einheit
1 11-01 Allerheiligen
1 12-25 1. Weihnachtstag
1 12-26 2. Weihnachtstag
2 -2 Karfreitag
2 1 Ostermontag
2 39 Christi Himmelfahrt
2 50 Pfingsten
2 60 Fronleichnam
# ab hier benutzerdefinierte Tage
# Monat-Tag
1 12-21 frei
1 12-24 frei
1 12-27 frei
1 12-28 frei
1 01-02 frei
1 01-03 frei
1 01-04 frei
Edit: Halt, stimmt nicht. Wenn ich "tomorrow" abfrage, erhalte ich "none". Morgen ist doch aber Samstag. Da dürfte er doch nicht "none" zurückgeben, oder?
Doch, für die holiday Datei passt das.
Das wird dann in $we zusammen gefasst.
Heute ist frei. Es hätte also gestern mit morgen=we anschlagen müssen.
Gesendet von meinem Doogee S60 mit Tapatalk
Ok, vielleicht muss ich es einfach nochmal testen.
"holiday2we" habe ich unter global jedenfalls auch gesetzt.
Gruß Chris
Zitat von: Frank_Huber am 21 Dezember 2018, 09:21:57
Doch, für die holiday Datei passt das.
Das wird dann in $we zusammen gefasst.
Achtung. Das wird nur zusammengefasst wenn im globalen Device we2holiday entsprechend gesetzt ist.
Wobei mir da grad auffällt, die Logik 1 Tag vor $we passt so nicht ganz.
Wenn der Freitag immer mit anschlagen soll musst im Doif auch den Freitag "5" separat angeben.
Der Samstag kommt ja nicht über das holiday device.
Gesendet von meinem Doogee S60 mit Tapatalk
Ah, ok. Deshalb hat es also vorhin (für morgen) nicht angeschlagen. Ich bin leider nicht der große Programmierer, würde es mir jedoch trotzdem gerne ersparen, sämtliche Wochenenden eines Jahres jeweils zu Jahresbeginn händisch in meine holiday-Datei eintragen zu müssen.
Wie könnte ich das umgehen?
Gruß Chris
Edit: Ich seh schon- ich muss mir das im entsprechenden DOIF selber zusammenpfrickeln. Wird sich zwar etwas unschön lesen, aber ich muss es ja nur einmal machen.
wie sieht dein DOIF denn jetzt aus?
Ohne Gewähr und ungetestet:
([22:00|So Mo Di Mi Do] and [bwFeiertageUrlaub:tomorrow] eq "none") (set tannenbaum off)
## Wenn der folgende Tag kein Feiertag oder Wochenende ist
DOELSEIF ([23:00|Fr] or ([23:00] and [bwFeiertageUrlaub:tomorrow] ne "none")) (set tannenbaum off)
## Wenn der folgende Tag Feiertag oder Wochenende ist
Gruß Chris
schaut korrekt aus. so sollte es funktionieren.
do always hast ja gesetzt oder?
Kann man sagen (weil das nirgend so exakt steht) eine simple "globale" Abfrage: "Ist morgen $we wahr?" -> ist so einfach nicht möglich?!
Man kann holiday abfragen, wenn man holiday2we verwendet, und man muss den Freitag abfragen!
Gruß Otto
Zitat von: Otto123 am 21 Dezember 2018, 10:36:18
Kann man sagen (weil das nirgend so exakt steht) eine simple "globale" Abfrage: "Ist morgen $we wahr?" -> ist so einfach nicht möglich?!
Das Thema hatten wir meine ich neulich bei AutoShuttersControl auch schon. Da hat CoolTux entsprechend Code gebastelt...
ZitatMan kann holiday abfragen, wenn man holiday2we verwendet, und man muss den Freitag abfragen!
Das ist m.E. nicht ganz zutreffend: $we fragt intern alle mit holiday2we eingebundenen Kalender ab (das können mehrere sein! Ich habe z.B. eine Routine, die mir aus dem Feiertags-/Urlaubs- sonstigen allgemeinen privat-ical eine .holiday bastelt, in der dann die Ferientage drin sind und wie we behandelt werden).
Ergo: man braucht den Umweg über holiday2we nicht, man muß aber alle relevanten holiday-Dateien abfragen, oder diese eben aus holiday2we nehmen...
Wer Code sucht:
ist in https://github.com/LeonGaultier/fhem-AutoShuttersControl/blob/master/73_AutoShuttersControl.pm ab Zeile 2220 verfügbar.
Ich habe im DOIF entsprechend $we eine Variable namens $twe eingeführt, sie berücksichtigt holiday2we und wertet das Reading der holiday-Datei "tomorrow" aus.
Bsp.:
DOIF ([09:00] and $twe)(set ...)
oder morgen kein Wochenende und keine Ferien:
DOIF ([09:00] and !$twe)(set ...)
Morgen per Update verfügbar.
Vielen Dank Damian
darauf habe ich gewartet. Nach dem mich mein "Wecker DOIF" schon immer wieder mal an Feiertagen geweckt hat bin ich die ganze Zeit schon am suchen, das die Automatik auch unter der Woche bei Feiertagen abgeschaltet wird. Ein Dummy der mir am Vorabend anzeigt, morgen ist der Wecker "off" beruhigt mich da sehr. (die holiday2we Bayern ist natürlich in den attr des global - und hat das wecken am Feiertag unter der Woche nicht verhindert)
Euch allen ein schönes Weihnachtsfest und einen guten Rutsch
Schöne Grüße
NewRasPi
Zitat von: Damian am 21 Dezember 2018, 11:59:07
Ich habe im DOIF entsprechend $we eine Variable namens $twe eingeführt, sie berücksichtigt holiday2we und wertet das Reading der holiday-Datei "tomorrow" aus.
Bsp.:
DOIF ([09:00] and $twe)(set ...)
oder morgen kein Wochenende und keine Ferien:
DOIF ([09:00] and !$twe)(set ...)
Morgen per Update verfügbar.
genial! Danke Damian!
Hast Du dafür nicht auch die "9" freigehalten? ;-)
Zitat von: Damian am 21 Dezember 2018, 11:59:07
Ich habe im DOIF entsprechend $we eine Variable namens $twe eingeführt, sie berücksichtigt holiday2we und wertet das Reading der holiday-Datei "tomorrow" aus.
Das ist ja irgendwie "putzig", dass jetzt jeder denselben code (?, ist noch nicht im svn) irgendwo einbaut... Nur als Vorschlag: Wäre das nicht wie $we in fhem.pl gut aufgehoben? Dann wäre es besser, Rudi einen Patch vorzuschlagen, statt irgenwo dezentral eine vermeintliche Lücke zu schließen. Oder gab es dazu schon eine Diskussion, die mir entgangen ist?
Zitat von: Frank_Huber am 21 Dezember 2018, 12:49:52
genial! Danke Damian!
Hast Du dafür nicht auch die "9" freigehalten? ;-)
ja,
DOIF ([09:00] and $twe)
entspricht zukünftig:
DOIF ([09:00|9])
oder
DOIF([09:00|TWE])
oder das was man im DOIF-Attribut weekdays sonst für 9 definieren möchte.
Zitat von: Damian am 21 Dezember 2018, 11:59:07Morgen per Update verfügbar.
Wie ging das nochmal?
1. update check
2. update 98_DOIF.pm (lange warten!)
3. shutdown restart
So, gell?
Mich freut es sehr, dass da Bewegung für eine Anforderung ins rollen gekommen ist, die sich eigentlich ganz banal liest.
Ich bin zwar mittlerweile (auch) ein großer DOIF-Liebhaber, sehe das Unterfangen jedoch aus der selben Sicht wie Beta-User.
Euch allen ein Frohes Fest!
Chris
Zitat von: Beta-User am 21 Dezember 2018, 11:09:22
Das Thema hatten wir meine ich neulich bei AutoShuttersControl auch schon. Da hat CoolTux entsprechend Code gebastelt...Das ist m.E. nicht ganz zutreffend: $we fragt intern alle mit holiday2we eingebundenen Kalender ab (das können mehrere sein! Ich habe z.B. eine Routine, die mir aus dem Feiertags-/Urlaubs- sonstigen allgemeinen privat-ical eine .holiday bastelt, in der dann die Ferientage drin sind und wie we behandelt werden).
Ergo: man braucht den Umweg über holiday2we nicht, man muß aber alle relevanten holiday-Dateien abfragen, oder diese eben aus holiday2we nehmen...
Wer Code sucht:
ist in https://github.com/LeonGaultier/fhem-AutoShuttersControl/blob/master/73_AutoShuttersControl.pm ab Zeile 2220 verfügbar.
Meine Aussage war im Ganzen und nicht zwei getrennte Sätze! $we berücksichtigt holiday2we und liefert Feiertag, das ist klar. Das morgen Wochenende oder Feiertag ist, bekommen ich aus $we nicht raus(und auch nicht im System). Ich kann aber holiday auf tomorrow abfragen. Aber holiday weiß nicht, dass morgen Wochenende ist! Aber scheinbar trage ich nicht zur Klärung bei, sondern stifte weiter Verwirrung. :-[ ;D
Vergesst was ich gesagt habe, ich habe es eventuell verstanden.
Es gibt ja nun mehrere Lösungen. ;)
Schöne Feiertage
Otto
Hallo Otto123
ich glaube, es geht nicht um einen Samstag oder Sonntag. Wenn ein Feiertag auf einen Wochentag von Montag bis Freitag fällt möchte man ja nicht mitten in der Nacht - wie an Arbeitstagen - geweckt werden. Da ist es gut wenn man das am Abend vorher "erkennen" kann das die Funktion am nächsten Morgen nicht stört.
Schöne Grüße und ein schönes Fest