WeekdayTimer – einfache Zeitschaltuhr

Ich habe bereits in einem anderen Beitrag erklärt, wie man sich eine Zeitschaltuhr mit einem gewissen Zufall programmiert, um so Einbrecher abzuschrecken. In manchen Fällen, reicht jedoch auch eine einfache Zeitschaltuhr, die immer zur exakten eingestellten Uhrzeit schaltet. Sei es zum Beispiel für den Tannenbaum zu Weihnachten oder für ein einfaches Flurlicht, um morgens den Weg vom Schlafzimmer ins Badezimmer zu finden. In diesem Beitrag erkläre ich euch, wie ihr mit Hilfe des Moduls WeekdayTimer eine einfache Zeitschaltuhr programmiert.

Definition

Mit dem Modul „WeekdayTimer“ lassen sich für jeden Tag der Woche getrennte Zeiten definieren, in der ein Device schalten soll.

Das Einstellen der Zeitpunkte erfolgt direkt bei der Definition:

define <name> WeekdayTimer <device> [<language>] [weekdays] <profile> <command>|<condition>

„device“ steht dabei für das Device, welches geschaltet werden soll.

Mit dem optionalen Parameter „language“ lassen sich länderspezifische Angaben machen.

Der nächste Parameter ist „weekdays“. Dieser ist ebenfalls optional. Mit ihm lassen sich tagesabhängige Zeitangaben einstellen. Ist dieser Parameter nicht gesetzt, so gilt die Zeitangabe für jeden Tag der Woche. Dazu später im Beispiel mehr.

Der wichtigste Parameter ist „profile“. Hier werden die Zeitpunkte eingetragen, zu der geschaltet werden soll. Dieser Parameter hat folgenden Syntax:

Mit Wochentagangabe: [<weekdays>|]
Ohne Wochentagangabe: <time>|<parameter>

Für den Eintrag „weekdays“ stehen folgende Möglichkeiten zur Verfügung:

ParameterBeschreibungParameterBeschreibung
0, SuSonntag4, ThDonnerstag
1, MuMontag5, FrFreitag
2, TuDienstag6, SaSamstag
3, WeMittwoch7, $weWochenende
8, !$wekein Wochenende

Die Zeitangabe („time“) erfolgt im Format „HH:MM:SS“. Die Angabe der Sekunden ist optional. Die Angabe erfolgt im 24 Stunden Format. Anstelle einer genauen Zeitangabe kann zum Beispiel auch der Zeitpunkt des Sonnenaufganges benutzt werden. Mehr dazu in den Beispielen.

Mit „parameter“ lässt sich der Befehl definieren, der zu eingestellten Zeit gesendet werden soll. Der hier eingestellte Befehl sollte natürlich vom verwendeten Device unterstützt werden. Möglich wäre zum Beispiel on oder off.

Mit „command“ lässt sich das auszuführende Kommando näher definieren bzw. komplexere Befehle definieren, welches dann zu den eingestellten Zeitpunkten ausgeführt wird. Wird der Parameter „condition“ nicht gesetzt, dann wird alles was nach „profile“ kommt als „command“ interpretiert. Verwendet man PERL-Code ist dieser in geschweifte Klammern zu setzen. Am besten zu veranschaulichen geht dies über Beispiele. Mehr dazu weiter unten.

Mit „condition“ lassen sich, zusätzlich zu den Zeitangaben, weitere Bedingungen setzen, die für das Schalten erfüllt sein müssen. Der Rückgabewert dieser Bedingung muss entweder „wahr“ oder „falsch“ sein. Damit eine „condition“ als solche erkannt wird, muss diese in Klammern gesetzt werden.

Innerhalb der Parameter „comand“ und „condition“ kann mit den Platzhaltern „$NAME“ und „$EVENT“ gearbeitet werden. „$NAME“ steht dabei für das zuschaltende Gerät („device“). Mit „$EVENT“ lässt sich der gesetzte Befehl „parameter“ verwenden.

Beispiele

Um das Modul „WeekdayTimer“ zu verstehen, helfen am besten ein paar Beispiele.

Beispiel 1

Das Device „WZ_Papierlampe“ jeden Montag, Dienstag, Mittwoch, Donnerstag und Freitag um 17 Uhr anschalten und um 23 Uhr wieder ausschalten:

define WZ_Licht_Timer WeekdayTimer WZ_Papierlampe 12345|17:00|on 12345|23:00|off

WeekdayTime FHEM

Durch die Profil-Einträge unter „Internals“ erkennt man direkt, ob die Definition korrekt ist. Dort wird jeder definierte Tag mit den Schaltzeiten aufgelistet.

Um das obige Device zu definieren gibt es weitere Möglichkeiten:

define WZ_Licht_Timer WeekdayTimer WZ_Papierlampe Mo-Fr|17:00|on mo-fr|23:00|off
define WZ_Licht_Timer WeekdayTimer WZ_Papierlampe !$we|17:00|on !$we|23:00|off

Beispiel 2

Das Device „WZ_Haengelampe“ jeden Tag um 17 Uhr auf Rot schalten (FF0000), Montag bis Donnerstag um 22 Uhr auf Grün schalten (00FF00) und vom Freitag und Sonntag die Lampe um 23 Uhr auf Blau schalten (0000FF):

define WZ_Licht WeekdayTimer WZ_Haengelampe 17:00|FF0000 Mo-Th|22:00|00FF00 Fr-Su|23:00|0000FF {fhem("set $NAME rgb $EVENT")}

Beispiel 3

Den Zufallstimer „ZufallsTimerWZ“ für die Anwesenheitssimulation jeden Abend um 16 Uhr aktivieren und um 23:30 deaktivieren, aber nur wenn das ROOMMATE-Device „Daniel“ nicht zuhause ist („absent“).

define aktiviereTimer WeekdayTimer ZufallsTimerWZ 16:00|on 23:30|off (ReadingsVal("Daniel", "state", "") eq "absent")

Weitere Beispiele gibt es in der Command-Ref zum Modul.

Wie ihr bemerkt, lassen sich mit dem Modul sehr schnell simple Zeitschaltuhren definieren. Es lassen sich für jeden Tag eigene Profile definieren und auch etwas komplexere Befehle festlegen. Wer jedoch ein bisschen mehr „Zufall“ in die Sache bringen möchte, dem empfehle ich das Modul „RandomTimer“. 

Hinterlasse einen Kommentar

6 Kommentare auf "WeekdayTimer – einfache Zeitschaltuhr"

Benachrichtige mich zu:
avatar
Fotos und Bilder
 
 
 
sonstiges Dateiformat
 
 
 
Sortiert nach:   neuste | älteste | beste Bewertung
Ralf
Gast
Ralf

Hallo Daniel,

habe gerade Deine Seite gefunden 😉
Ich versuche per weekdayTimer meine Hue zu schalten. Leider ist mir die Syntax nicht klar.

Im Prinzip möchte ich zum Einschaltzeitpunkt die Farbe und Helligkeit meiner Philips-LCT010-1-A19ECLv4 schalten.
Kannst Du mir einen Tipp geben, wie die Syntax aussieht? Also einschalten, Helligkeit und Farbe festlegen? Das wären ja 3? Befehle zum absetzen..
z.B. Die Lampe soll in Rot mit einer Helligkeit von 5% leuchten..

Im Voraus vielen Dank wenn Du Lust/Zeit hättest hier eine Antwort zu geben..

wpDiscuz