DOIF/Zeitgeber
In dieser Laborgruppe sind mehrere Beispiele für Zeitgeber zusammengestellt.
Einstellbarer Zeitgeber für die Tageszeit
Beschreibung
- setList, readingList, webCmd, damit entfallen Dummys, die bisher als Darstellungselemente im Frontend benötigt wurden.
- time modifiers als Zeit-Widget fürs Frontend
- $SELF als Referenz auf den DOIF-Namen
- cmdState überschreibt die Statusvorgaben
- _ als Präfix kennzeichnet persistente Benutzer-Readings
- Defaultwerten
Der Zeitgeben liefert die Tageszeit als Begriff, morgens, vormittags, mittags, nachmittags, abends, nachts zurück. Ab wann eine Tageszeit gelten soll, kann über einstellbare Zeiten bestimmt werden.
Definition
([[$SELF:_morgens,"06:00"]])\ DOELSEIF ([[$SELF:_vormittags,"09:00"]])\ DOELSEIF ([[$SELF:_mittags,"12:00"]])\ DOELSEIF ([[$SELF:_nachmittags,"14:00"]])\ DOELSEIF ([[$SELF:_abends,"18:00"]])\ DOELSEIF ([[$SELF:_nachts,"22:00"]])
wesentliche Attribute
cmdState morgens|vormittags|mittags|nachmittags|abends|nachts readingList _morgens _vormittags _mittags _nachmittags _abends _nachts setList _morgens:time _vormittags:time _mittags:time _nachmittags:time _abends:time _nachts:time webCmd _morgens:_vormittags:_mittags:_nachmittags:_abends:_nachts
Kurzzeitwecker
Beschreibung
- setList, readingList, webCmd, damit entfallen Dummys, die bisher als Darstellungselemente im Frontend benötigt wurden.
- Angabe einer Werteliste für das Standard-Widget (DropDown-Liste)
- $SELF als Referenz auf den DOIF-Namen
- cmdState überschreibt die Statusvorgaben
- _ als Präfix kennzeichnet persistente Benutzer-Readings
- Defaultwert
- Umrechnung des Eingabewertes in Sekunden für den Timer
Wenn im Kurzzeitwecker eine Zeit in Minuten eingestellt wird, dann triggert die Änderung des Wertes die Bedingung 1, gleichzeitig wird ein relativer Timer gesetzt, der von diesem Zeitpunkt an läuft bis der Alarmzeitpunkt erreicht ist. Zu dieser Zeit wird die Bedingung 2 getriggert. Da das Attribut do always nicht gesetzt ist, wird die Bedingung 2 nur einmal ausgelöst. Der Kurzzeitwecker startet erneut, wenn die Zeit neu gesetzt wird. Der Timer erwartet die Eingabe in HH:MM oder Sekunden, daher muss die ausgewählte Zeit (0-60 Minuten) mit 60 multipliziert werden.
Übungsvorschlag
- Ergänzung des Kurzzeitweckers mit einem Button der den Timer neu setzt, statt der Auswahl einer neuen Zeit.
Definition
([$SELF:_weckzeit,0]) DOELSEIF ([+([$SELF:_weckzeit,1] * 60)]) ## ggf. Befehle ausführen
wesentliche Attribute
cmdState warten|alarm readingList _weckzeit setList _weckzeit:0,1,2,3,4,5,6,7,8,9,10,15,20,25,30,35,40,45,50,55,60 webCmd _weckzeit
Einfacher Wecker
Beschreibung
- setList, readingList, webCmd, damit entfallen Dummys, die bisher als Darstellungselemente im Frontend benötigt wurden.
- time modifiers als Zeit-Widget fürs Frontend
- do always um die wiederholung des gleichen Status zu erlauben
- $SELF als Referenz auf den DOIF-Namen
- _ als Präfix kennzeichnet persistente Benutzer-Readings
- Defaultwert "off" damit der Wecker bei der Einrichtung ausgeschaltet ist.
Die Alarmzeit des Weckers kann eingestellt werden. Die eingestellte Zeit wird täglich wiederholt, wenn on in der Auswahlliste gewählt wird.
Übungsvorschlag
- Einbau einer weiteren Weckzeit mit Unterscheidung zwischen Werktags und Wochenende.
Definition
([$SELF:_einaus,"off"] eq "on" and [[$SELF:_weckzeit,"12:00"]]) ## (<Befehle>)
wesentliche Attribute
do always readingList _einaus _weckzeit setList _einaus:on,off _weckzeit:time webCmd _einaus:_weckzeit
Laborgruppe zum Import mit Raw definition
define kurzzeitwecker_Labor DOIF ([$SELF:_weckzeit,0])\ DOELSEIF ([+([$SELF:_weckzeit,1] * 60)]) ## (set <Gerätename> <gerätespezifische Angaben>) attr kurzzeitwecker_Labor alias Kurzzeitwecker attr kurzzeitwecker_Labor cmdState warten|alarm attr kurzzeitwecker_Labor group Labor: Zeitgeber attr kurzzeitwecker_Labor readingList _weckzeit attr kurzzeitwecker_Labor room DOIF_Labor attr kurzzeitwecker_Labor setList _weckzeit:0,1,2,3,4,5,6,7,8,9,10,15,20,25,30,35,40,45,50,55,60 attr kurzzeitwecker_Labor webCmd _weckzeit define tageszeit_Labor DOIF ([[$SELF:_morgens,"06:00"]])\ DOELSEIF ([[$SELF:_vormittags,"09:00"]])\ DOELSEIF ([[$SELF:_mittags,"12:00"]])\ DOELSEIF ([[$SELF:_nachmittags,"14:00"]])\ DOELSEIF ([[$SELF:_abends,"18:00"]])\ DOELSEIF ([[$SELF:_nachts,"22:00"]]) attr tageszeit_Labor alias einstellbarer Zeitgeber Tageszeit attr tageszeit_Labor cmdState morgens|vormittags|mittags|nachmittags|abends|nachts attr tageszeit_Labor group Labor: Zeitgeber attr tageszeit_Labor readingList _morgens _vormittags _mittags _nachmittags _abends _nachts attr tageszeit_Labor room DOIF_Labor attr tageszeit_Labor setList _morgens:time _vormittags:time _mittags:time _nachmittags:time _abends:time _nachts:time attr tageszeit_Labor webCmd _morgens:_vormittags:_mittags:_nachmittags:_abends:_nachts define wecker_Labor DOIF ([$SELF:_einaus,"off"] eq "on" and [[$SELF:_weckzeit,"12:00"]]) ## (<Befehle>) attr wecker_Labor alias Wecker attr wecker_Labor do always attr wecker_Labor group Labor: Zeitgeber attr wecker_Labor readingList _einaus _weckzeit attr wecker_Labor room DOIF_Labor attr wecker_Labor setList _einaus:on,off _weckzeit:time attr wecker_Labor webCmd _einaus:_weckzeit save