DOIF/Zeitgeber: Unterschied zwischen den Versionen
Trelle (Diskussion | Beiträge) |
Krikan (Diskussion | Beiträge) (Link-Korrektur) |
||
(9 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{Randnotiz|RNTyp= | {{Randnotiz|RNTyp=g|RNText=Eine aktuelle DOIF-Version ist erforderlich}}<br> | ||
[[Datei:Zeitgeber Labor DOIF.png|mini|600px|right|]] | [[Datei:Zeitgeber Labor DOIF.png|mini|600px|right|]] | ||
Zeile 10: | Zeile 10: | ||
* '''$SELF''' als Referenz auf den DOIF-Namen | * '''$SELF''' als Referenz auf den DOIF-Namen | ||
* '''cmdState''' überschreibt die Statusvorgaben | * '''cmdState''' überschreibt die Statusvorgaben | ||
* '''Defaultwerten''' | * '''Defaultwerten''' | ||
}} | }} | ||
Zeile 37: | Zeile 36: | ||
{{Randnotiz|RNText=Hinweis: Verwendung von | {{Randnotiz|RNText=Hinweis: Verwendung von | ||
* '''setList''', '''readingList''', '''webCmd''', damit entfallen Dummys, die bisher als Darstellungselemente im Frontend benötigt wurden. | * '''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) | * Angabe einer '''Werteliste''' für das Standard-Widget (DropDown-Liste) | ||
* '''$SELF''' als Referenz auf den DOIF-Namen | * '''$SELF''' als Referenz auf den DOIF-Namen | ||
* '''cmdState''' überschreibt die Statusvorgaben | * '''cmdState''' überschreibt die Statusvorgaben | ||
* '''Defaultwert''' | * '''Defaultwert''' | ||
* '''Umrechnung''' des Eingabewertes in Sekunden für den Timer | * '''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. | Wenn im Kurzzeitwecker in '''[$SELF:P_weckzeit,0]''' eine Zeit in Minuten eingestellt wird, dann triggert die Änderung des Wertes die '''Bedingung 1''', gleichzeitig wird ein relativer Timer '''[+([$SELF:P_weckzeit,1] * 60)]''' gesetzt, der von diesem Zeitpunkt an läuft bis der Alarmzeitpunkt erreicht ist. Dann 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, um eine Zeitangabe in Sekunden zu erhalten. | ||
===Übungsvorschlag=== | ===Übungsvorschlag=== | ||
Zeile 50: | Zeile 48: | ||
===Definition=== | ===Definition=== | ||
<pre> | <pre> | ||
([$SELF: | ([$SELF:P_weckzeit,0]) | ||
DOELSEIF ([+([$SELF: | DOELSEIF ([+([$SELF:P_weckzeit,1] * 60)]) ## ggf. Befehle ausführen</pre> | ||
===wesentliche Attribute=== | ===wesentliche Attribute=== | ||
<pre> | <pre> | ||
cmdState warten|alarm | cmdState warten|alarm | ||
readingList | readingList P_weckzeit | ||
setList | setList P_weckzeit:0,1,2,3,4,5,6,7,8,9,10,15,20,25,30,35,40,45,50,55,60 | ||
webCmd | webCmd P_weckzeit | ||
</pre> | </pre> | ||
==Einfacher Wecker== | ==Einfacher Wecker== | ||
===Beschreibung=== | ===Beschreibung=== | ||
{{Randnotiz|RNText=Hinweis: Verwendung von | {{Randnotiz|RNText=Hinweis: Verwendung von | ||
* '''setList''', '''readingList''', '''webCmd''', damit entfallen Dummys, die bisher als Darstellungselemente im Frontend benötigt wurden. | * '''setList''', '''readingList''', '''webCmd''', damit entfallen Dummys, die bisher als Darstellungselemente im Frontend benötigt wurden. | ||
* '''time''' | * '''time''' Modifier als Zeit-Widget fürs Frontend | ||
* '''do always''' um die | * '''do always''' um die Wiederholung des gleichen Status zu erlauben | ||
* '''$SELF''' als Referenz auf den DOIF-Namen | * '''$SELF''' als Referenz auf den DOIF-Namen | ||
* ''' | * '''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. | Die Alarmzeit des Weckers kann eingestellt werden. Die eingestellte Zeit wird täglich wiederholt, wenn '''on''' in der Auswahlliste gewählt wird. | ||
Zeile 74: | Zeile 73: | ||
===Definition=== | ===Definition=== | ||
<pre> | <pre> | ||
([$SELF: | ([$SELF:P_einaus,"off"] eq "on" and [[$SELF:P_weckzeit,"12:00"]]) ## (<Befehle>) | ||
</pre> | </pre> | ||
===wesentliche Attribute=== | ===wesentliche Attribute=== | ||
<pre> | <pre> | ||
do always | do always | ||
readingList | readingList P_einaus P_weckzeit | ||
setList | setList P_einaus:on,off P_weckzeit:time | ||
webCmd | webCmd P_einaus:P_weckzeit | ||
</pre> | </pre> | ||
Zeile 124: | Zeile 124: | ||
==Links== | ==Links== | ||
* [[DOIF]] | * [[DOIF]] | ||
* [[DOIF/Labor - ausführbare, praxisnahe Beispiele als Problemlösung zum | * [[DOIF/Labor - ausführbare, praxisnahe Beispiele als Problemlösung zum Experimentieren]] | ||
[[Kategorie:Code Snippets]] | [[Kategorie:Code Snippets]] |
Aktuelle Version vom 13. Februar 2017, 14:58 Uhr
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 Modifier als Zeit-Widget fürs Frontend
- $SELF als Referenz auf den DOIF-Namen
- cmdState überschreibt die Statusvorgaben
- 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:P_morgens,"06:00"]])\ DOELSEIF ([[$SELF:P_vormittags,"09:00"]])\ DOELSEIF ([[$SELF:P_mittags,"12:00"]])\ DOELSEIF ([[$SELF:P_nachmittags,"14:00"]])\ DOELSEIF ([[$SELF:P_abends,"18:00"]])\ DOELSEIF ([[$SELF:P_nachts,"22:00"]])
wesentliche Attribute
cmdState morgens|vormittags|mittags|nachmittags|abends|nachts readingList P_morgens P_vormittags P_mittags P_nachmittags P_abends P_nachts setList P_morgens:time P_vormittags:time P_mittags:time P_nachmittags:time P_abends:time P_nachts:time webCmd P_morgens:P_vormittags:P_mittags:P_nachmittags:P_abends:P_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
- Defaultwert
- Umrechnung des Eingabewertes in Sekunden für den Timer
Wenn im Kurzzeitwecker in [$SELF:P_weckzeit,0] eine Zeit in Minuten eingestellt wird, dann triggert die Änderung des Wertes die Bedingung 1, gleichzeitig wird ein relativer Timer [+([$SELF:P_weckzeit,1] * 60)] gesetzt, der von diesem Zeitpunkt an läuft bis der Alarmzeitpunkt erreicht ist. Dann 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, um eine Zeitangabe in Sekunden zu erhalten.
Übungsvorschlag
- Ergänzung des Kurzzeitweckers mit einem Button der den Timer neu setzt, statt der Auswahl einer neuen Zeit.
Definition
([$SELF:P_weckzeit,0]) DOELSEIF ([+([$SELF:P_weckzeit,1] * 60)]) ## ggf. Befehle ausführen
wesentliche Attribute
cmdState warten|alarm readingList P_weckzeit setList P_weckzeit:0,1,2,3,4,5,6,7,8,9,10,15,20,25,30,35,40,45,50,55,60 webCmd P_weckzeit
Einfacher Wecker
Beschreibung
- setList, readingList, webCmd, damit entfallen Dummys, die bisher als Darstellungselemente im Frontend benötigt wurden.
- time Modifier als Zeit-Widget fürs Frontend
- do always um die Wiederholung des gleichen Status zu erlauben
- $SELF als Referenz auf den DOIF-Namen
- 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:P_einaus,"off"] eq "on" and [[$SELF:P_weckzeit,"12:00"]]) ## (<Befehle>)
wesentliche Attribute
do always readingList P_einaus P_weckzeit setList P_einaus:on,off P_weckzeit:time webCmd P_einaus:P_weckzeit
Laborgruppe zum Import mit Raw definition
define kurzzeitwecker_Labor DOIF ([$SELF:P_weckzeit,0])\ DOELSEIF ([+([$SELF:P_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 P_weckzeit attr kurzzeitwecker_Labor room DOIF_Labor attr kurzzeitwecker_Labor setList P_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 P_weckzeit define tageszeit_Labor DOIF ([[$SELF:P_morgens,"06:00"]])\ DOELSEIF ([[$SELF:P_vormittags,"09:00"]])\ DOELSEIF ([[$SELF:P_mittags,"12:00"]])\ DOELSEIF ([[$SELF:P_nachmittags,"14:00"]])\ DOELSEIF ([[$SELF:P_abends,"18:00"]])\ DOELSEIF ([[$SELF:P_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 P_morgens P_vormittags P_mittags P_nachmittags P_abends P_nachts attr tageszeit_Labor room DOIF_Labor attr tageszeit_Labor setList P_morgens:time P_vormittags:time P_mittags:time P_nachmittags:time P_abends:time P_nachts:time attr tageszeit_Labor webCmd P_morgens:P_vormittags:P_mittags:P_nachmittags:P_abends:P_nachts define wecker_Labor DOIF ([$SELF:P_einaus,"off"] eq "on" and [[$SELF:P_weckzeit,"12:00"]]) ## (<Befehle>) attr wecker_Labor alias Wecker attr wecker_Labor do always attr wecker_Labor group Labor: Zeitgeber attr wecker_Labor readingList P_einaus P_weckzeit attr wecker_Labor room DOIF_Labor attr wecker_Labor setList P_einaus:uzsuSelectRadio,on,off P_weckzeit:time attr wecker_Labor webCmd P_einaus:P_weckzeit save