DOIF/Zeitgeber: Unterschied zwischen den Versionen

Aus FHEMWiki
Zeile 84: Zeile 84:
==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>

Version vom 26. November 2016, 18:26 Uhr

X mark.svgWichtiger Hinweis!
Dieses Beispiel funktioniert nur mit der aktuellen Beta-Version.


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
  • P_ als Präfix für 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

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
  • _ 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

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