DOIF/Zeitgeber: Unterschied zwischen den Versionen

Aus FHEMWiki
(Die Seite wurde neu angelegt: „{{Randnotiz|RNTyp=r|RNText='''Wichtiger Hinweis!'''<br>Dieses Beispiel funktioniert nur mit der aktuellen {{Link2Forum|Topic=58556|Message=499140|LinkText=Beta…“)
 
(Link-Korrektur)
 
(16 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Randnotiz|RNTyp=r|RNText='''Wichtiger Hinweis!'''<br>Dieses Beispiel funktioniert nur mit der aktuellen {{Link2Forum|Topic=58556|Message=499140|LinkText=Beta-Version}}.}}<br>
{{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 7: Zeile 7:
{{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''' modifiers als Zeit-Widget fürs Frontend
* '''time''' Modifier als Zeit-Widget fürs Frontend
* '''$SELF''' als Referenz auf den DOIF-Namen
* '''$SELF''' als Referenz auf den DOIF-Namen
* '''cmdState''' überschreibt die Statusvorgaben
* '''cmdState''' überschreibt die Statusvorgaben
* '''_''' als Präfix kennzeichnet persistente Benutzer-Readings
* '''Defaultwerten'''
* 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.
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.
Zeile 17: Zeile 16:
===Definition===
===Definition===
<pre>
<pre>
([[$SELF:_morgens,"06:00"]])\
([[$SELF:P_morgens,"06:00"]])\
DOELSEIF ([[$SELF:_vormittags,"09:00"]])\
DOELSEIF ([[$SELF:P_vormittags,"09:00"]])\
DOELSEIF ([[$SELF:_mittags,"12:00"]])\
DOELSEIF ([[$SELF:P_mittags,"12:00"]])\
DOELSEIF ([[$SELF:_nachmittags,"14:00"]])\
DOELSEIF ([[$SELF:P_nachmittags,"14:00"]])\
DOELSEIF ([[$SELF:_abends,"18:00"]])\
DOELSEIF ([[$SELF:P_abends,"18:00"]])\
DOELSEIF ([[$SELF:_nachts,"22:00"]])
DOELSEIF ([[$SELF:P_nachts,"22:00"]])
</pre>
</pre>
===wesentliche Attribute===
===wesentliche Attribute===
<pre>
<pre>
cmdState morgens|vormittags|mittags|nachmittags|abends|nachts
cmdState morgens|vormittags|mittags|nachmittags|abends|nachts
readingList _morgens _vormittags _mittags _nachmittags _abends _nachts
readingList P_morgens P_vormittags P_mittags P_nachmittags P_abends P_nachts
setList _morgens:time _vormittags:time _mittags:time _nachmittags:time _abends:time _nachts:time
setList P_morgens:time P_vormittags:time P_mittags:time P_nachmittags:time P_abends:time P_nachts:time
webCmd _morgens:_vormittags:_mittags:_nachmittags:_abends:_nachts
webCmd P_morgens:P_vormittags:P_mittags:P_nachmittags:P_abends:P_nachts
</pre>


</pre>
==Kurzzeitwecker==
==Kurzzeitwecker==
===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.
* 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
* '''_''' als Präfix kennzeichnet persistente Benutzer-Readings
* '''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. 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.
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===
* Ergänzung des Kurzzeitweckers mit einem Button der den Timer neu setzt, statt der Auswahl einer neuen Zeit.
* Ergänzung des Kurzzeitweckers mit einem Button der den Timer neu setzt, statt der Auswahl einer neuen Zeit.
===Definition===
===Definition===
<pre>
<pre>
([$SELF:_weckzeit,0])
([$SELF:P_weckzeit,0])
DOELSEIF ([+([$SELF:_weckzeit,1] * 60)]) ## ggf. Befehle ausführen</pre>
DOELSEIF ([+([$SELF:P_weckzeit,1] * 60)]) ## ggf. Befehle ausführen</pre>
 
===wesentliche Attribute===
===wesentliche Attribute===
<pre>
<pre>
cmdState warten|alarm
cmdState warten|alarm
readingList _weckzeit
readingList P_weckzeit
setList _weckzeit:0,1,2,3,4,5,6,7,8,9,10,15,20,25,30,35,40,45,50,55,60
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 _weckzeit
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''' modifiers als Zeit-Widget fürs Frontend
* '''time''' Modifier als Zeit-Widget fürs Frontend
* '''do always''' um die wiederholung des gleichen Status zu erlauben
* '''do always''' um die Wiederholung des gleichen Status zu erlauben
* '''$SELF''' als Referenz auf den DOIF-Namen
* '''$SELF''' als Referenz auf den DOIF-Namen
* '''_''' als Präfix kennzeichnet persistente Benutzer-Readings
* '''Defaultwert''' "off" damit der Wecker bei der Einrichtung ausgeschaltet ist.
* 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 72: Zeile 73:
===Definition===
===Definition===
<pre>
<pre>
([$SELF:_einaus,"off"] eq "on" and [[$SELF:_weckzeit,"12:00"]]) ## (<Befehle>)
([$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 _einaus _weckzeit
readingList P_einaus P_weckzeit
setList _einaus:on,off _weckzeit:time
setList P_einaus:on,off P_weckzeit:time
webCmd _einaus:_weckzeit
webCmd P_einaus:P_weckzeit
</pre>
</pre>


==Laborgruppe zum Import mit [[DOIF/Import von Code Snippets|Raw definition]]==
==Laborgruppe zum Import mit [[DOIF/Import von Code Snippets|Raw definition]]==
<pre>
<pre>
define kurzzeitwecker_Labor DOIF ([$SELF:_weckzeit,0])\
define kurzzeitwecker_Labor DOIF ([$SELF:P_weckzeit,0])\
DOELSEIF ([+([$SELF:_weckzeit,1] * 60)]) ## (set <Gerätename> <gerätespezifische Angaben>)
DOELSEIF ([+([$SELF:P_weckzeit,1] * 60)]) ## (set <Gerätename> <gerätespezifische Angaben>)
attr kurzzeitwecker_Labor alias Kurzzeitwecker
attr kurzzeitwecker_Labor alias Kurzzeitwecker
attr kurzzeitwecker_Labor cmdState warten|alarm
attr kurzzeitwecker_Labor cmdState warten|alarm
attr kurzzeitwecker_Labor group Labor: Zeitgeber
attr kurzzeitwecker_Labor group Labor: Zeitgeber
attr kurzzeitwecker_Labor readingList _weckzeit
attr kurzzeitwecker_Labor readingList P_weckzeit
attr kurzzeitwecker_Labor room DOIF_Labor
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 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 _weckzeit
attr kurzzeitwecker_Labor webCmd P_weckzeit


define tageszeit_Labor DOIF ([[$SELF:_morgens,"06:00"]])\
define tageszeit_Labor DOIF ([[$SELF:P_morgens,"06:00"]])\
DOELSEIF ([[$SELF:_vormittags,"09:00"]])\
DOELSEIF ([[$SELF:P_vormittags,"09:00"]])\
DOELSEIF ([[$SELF:_mittags,"12:00"]])\
DOELSEIF ([[$SELF:P_mittags,"12:00"]])\
DOELSEIF ([[$SELF:_nachmittags,"14:00"]])\
DOELSEIF ([[$SELF:P_nachmittags,"14:00"]])\
DOELSEIF ([[$SELF:_abends,"18:00"]])\
DOELSEIF ([[$SELF:P_abends,"18:00"]])\
DOELSEIF ([[$SELF:_nachts,"22:00"]])
DOELSEIF ([[$SELF:P_nachts,"22:00"]])
attr tageszeit_Labor alias einstellbarer Zeitgeber Tageszeit
attr tageszeit_Labor alias einstellbarer Zeitgeber Tageszeit
attr tageszeit_Labor cmdState morgens|vormittags|mittags|nachmittags|abends|nachts
attr tageszeit_Labor cmdState morgens|vormittags|mittags|nachmittags|abends|nachts
attr tageszeit_Labor group Labor: Zeitgeber
attr tageszeit_Labor group Labor: Zeitgeber
attr tageszeit_Labor readingList _morgens _vormittags _mittags _nachmittags _abends _nachts
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 room DOIF_Labor
attr tageszeit_Labor setList _morgens:time _vormittags:time _mittags:time _nachmittags:time _abends:time _nachts:time
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 _morgens:_vormittags:_mittags:_nachmittags:_abends:_nachts
attr tageszeit_Labor webCmd P_morgens:P_vormittags:P_mittags:P_nachmittags:P_abends:P_nachts


define wecker_Labor DOIF ([$SELF:_einaus,"off"] eq "on" and [[$SELF:_weckzeit,"12:00"]]) ## (<Befehle>)
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 alias Wecker
attr wecker_Labor do always
attr wecker_Labor do always
attr wecker_Labor group Labor: Zeitgeber
attr wecker_Labor group Labor: Zeitgeber
attr wecker_Labor readingList _einaus _weckzeit
attr wecker_Labor readingList P_einaus P_weckzeit
attr wecker_Labor room DOIF_Labor
attr wecker_Labor room DOIF_Labor
attr wecker_Labor setList _einaus:on,off _weckzeit:time
attr wecker_Labor setList P_einaus:uzsuSelectRadio,on,off P_weckzeit:time
attr wecker_Labor webCmd _einaus:_weckzeit
attr wecker_Labor webCmd P_einaus:P_weckzeit
 
save
save
</pre>
</pre>
Zeile 121: Zeile 124:
==Links==
==Links==
* [[DOIF]]
* [[DOIF]]
* [[DOIF/Labor - ausführbare, praxisnahe Beispiele als Problemlösung zum Experimentieren]]


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

Aktuelle Version vom 13. Februar 2017, 14:58 Uhr

Info green.pngEine aktuelle DOIF-Version ist erforderlich


Zeitgeber Labor DOIF.png

In dieser Laborgruppe sind mehrere Beispiele für Zeitgeber zusammengestellt.

Einstellbarer Zeitgeber für die Tageszeit

Beschreibung

Info green.pngHinweis: Verwendung von
  • 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

Info green.pngHinweis: Verwendung von
  • 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

Info green.pngHinweis: Verwendung von
  • 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

Links