AT an einem bestimmten Wochentag ausführen: Unterschied zwischen den Versionen

Aus FHEMWiki
(Einzeiler vereinfacht)
K (Internen Linka auf if ergänzt)
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 28: Zeile 28:


Das Objekt Licht4'''Aus''' wird in der FHEM-Weboberfläche nur in den knapp 5 Minuten sichtbar, wo die Signallampe eingeschaltet ist, also bitte nicht wundern, dass nur Licht4'''An''' in der Übersicht auftaucht.
Das Objekt Licht4'''Aus''' wird in der FHEM-Weboberfläche nur in den knapp 5 Minuten sichtbar, wo die Signallampe eingeschaltet ist, also bitte nicht wundern, dass nur Licht4'''An''' in der Übersicht auftaucht.
== Weiterführende Hinweise ==
* Bei vielen Geräten ist es möglich, diese mit den modifizierten Anschaltbefehlen ''on-for-timer'' oder ''on-till ...'' zu einem bestimmzen Zeitpunkt direkt auch wieder auszuschalten. Wird dieses - ggf. über die {{Link2CmdRef|Anker=setExtensions|Label=set extensions}} - unterstützt, benötigt man keine derart geschachtelte Definition. Dies hat bei entsprechender Hardware (z.B. HomeMatic) den weiteren Vorteil, dass die Überwachung des Ausschalt-Timers direkt dem Aktor erfolgt.
* Das Attribut ''disabledForIntervals'' kann ebenfalls für eine Wochentagssteuerung genutzt werden.
* Komplexere Wochentagssteuerungen sind mit den Modulen [[WeekdayTimer]] und [[DOIF]] möglich.
* Weitere Erläuterungen zur Verwendung des Perl-if finden Sie [[If-condition|hier]].


[[Kategorie:Code Snippets]]
[[Kategorie:Code Snippets]]

Version vom 19. April 2018, 15:54 Uhr

at Zielvorgabe:

An jedem Mittwoch um 21:00 Uhr soll ein Schaltaktor (hier das FHEM-Gerät "Signallampe") einen Verbraucher ein- und fünf Minuten später wieder ausschalten.

Vorbemerkung zu den Wochentagen: Wochenbeginn ist in Perl der Sonntag, welcher mit 0 definiert ist, also ist 3 = Mittwoch, 4 = Donnerstag usw.

Der Befehl für die Konfiguration dazu lautet (als Einzeiler, kein Zeilenumbruch) wie folgt:

define Licht4An at *21:00:00 { if ($wday == 3) { fhem ("set Signallampe on ;; define Licht4Aus at +00:05:00 set Signallampe off ") } }

Mehrzeiler:

define Licht4An at *21:00:00 {\
 if ($wday == 3) {\
  fhem ("set Signallampe on");;\
  fhem ("define Licht4Aus at +00:05:00 set Signallampe off ")\
 }\
}

Im Detail:

  • define Licht4An => lege ein neues Objekt Licht4An und ...
  • at *21:00:00 => ... prüfe immer um 21:00 Uhr ...
  • if ($wday == 3) => ... ob der 3. Wochentag ist, wenn ja dann ...
  • fhem ("set Signallampe on");; => ... soll FHEM die Signallampe einschalten und ...
  • fhem ("define Licht4Aus => noch ein Objekt Licht4Aus anlegen ...
  • at +00:05:00 => ... welches in 5 Minuten ...
  • set Signallampe off") => ... die Signallampe wieder ausschaltet.

Das Objekt Licht4Aus wird in der FHEM-Weboberfläche nur in den knapp 5 Minuten sichtbar, wo die Signallampe eingeschaltet ist, also bitte nicht wundern, dass nur Licht4An in der Übersicht auftaucht.

Weiterführende Hinweise

  • Bei vielen Geräten ist es möglich, diese mit den modifizierten Anschaltbefehlen on-for-timer oder on-till ... zu einem bestimmzen Zeitpunkt direkt auch wieder auszuschalten. Wird dieses - ggf. über die set extensions - unterstützt, benötigt man keine derart geschachtelte Definition. Dies hat bei entsprechender Hardware (z.B. HomeMatic) den weiteren Vorteil, dass die Überwachung des Ausschalt-Timers direkt dem Aktor erfolgt.
  • Das Attribut disabledForIntervals kann ebenfalls für eine Wochentagssteuerung genutzt werden.
  • Komplexere Wochentagssteuerungen sind mit den Modulen WeekdayTimer und DOIF möglich.
  • Weitere Erläuterungen zur Verwendung des Perl-if finden Sie hier.