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…“)
 
Zeile 123: Zeile 123:




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

Version vom 16. November 2016, 20:06 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 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

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

Links