DOIF/Zeitspanne im DOIF und disabledForIntervals im Vergleich

Aus FHEMWiki
Version vom 8. Dezember 2016, 23:57 Uhr von Trelle (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „DOIF stellt das Attribut '''disabledForIntervals''' nicht zur Verfügung, da im DOIF selbst eine Zeitspanne angegeben werden kann. Dennoch kann '''disabledForI…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

DOIF stellt das Attribut disabledForIntervals nicht zur Verfügung, da im DOIF selbst eine Zeitspanne angegeben werden kann. Dennoch kann disabledForIntervals mit DOIF verwendet werden, wenn disabledForIntervals mit dem Attribut userattr im DOIF verfügbar gemacht wird.

Verwendung von disabledForIntervals im DOIF

Mit der internen FHEM-Funktion IsDisabled lässt sich für Bedingungszweige die Befehlsausführung deaktivieren.
Grundsätzlich wird eine Bedingung, die inaktiv werden soll, so formuliert

(<Bedingung> and !IsDisabled("$SELF")) (<Befehle>)

Ist das Attribut disabledForIntervals gesetzt, dann wird IsDisabled("$SELF") wahr und liefert den Wert 2 zurück.
Daher wird jede Bedingung, die !(IsDisabled("$SELF") == 2) enthält nicht wahr, wenn der Zeitpunkt der Bedingungsprüfung einem Intervall liegt, dass im Attribut disabledForIntervals angegeben ist.
Eine Abfrage des Rückgabewertes von IsDisabled ist nicht notwendig, wenn der Grund für den Deaktivierungszustand keine Rolle spielt.

Beschreibung

Info green.pngHinweis: Verwendung von
  • $SELF dem Eigennamen des DOIF
  • userattr um DOIF mit disabledForIntervals zu ergänzen
  • disabledForIntervals um Zeitspannen der Inaktivität festzulegen
  • IsDisabled zum Abfragen der Inaktivität
  • ! zur Negation von IsDisabled

Die Bedingungsteile, wie [$SELF:mybutton] == 1 sind im Beispiel nur zur Veranschaulichung eingebaut. Sie stehen für eine beliebige Bedingung.
Die Bedingungen 1 und 2 können zwischen 13:00 und 14:00 nicht wahr werden, da !IsDisabled("$SELF") unwahr ist.

Definition

## 1
([$SELF:mybutton] == 1 and !IsDisabled("$SELF")) 
   ({Log 1, "Befehl 1"})
## 2
DOELSEIF ([$SELF:mybutton] == 2 and !IsDisabled("$SELF"))
   ({Log 1, "Befehl 2"})

wesentliche Attribute

userattr disabledForIntervals
disabledForIntervals 13:00-14:00

Nutzung einer Zeitspanne zur zeitlichen Befehlseinschränkung, die originäre DOIF Funktionalität

Grundsätzlich wird eine Bedingung, die innerhalb einer Zeitspann inaktiv werden soll, so formuliert

(<Bedingung> and ![<Anfangszeit>-<Endzeit>]) (<Befehle>)

Beschreibung

Info green.pngHinweis: Verwendung von
  • $SELF dem Eigennamen des DOIF
  • [Zeitspanne] zur Angabe einer Zeitspanne in der Bedingung
  • ! zur Negation der Zeitspanne
  • ? um die Zeitspanne als nicht auslösend zu Kennzeichnen

Die Bedingungsteile, wie [$SELF:mybutton] == 1 sind im Beispiel nur zur Veranschaulichung eingebaut. Sie stehen für eine beliebige Bedingung.
Die Bedingungen 1 und 2 können zwischen 13:00 und 14:00 nicht wahr werden, da ![13:00-14:00] unwahr ist. Es sind keine weiteren Attribute notwendig.

Definition

## 1
([$SELF:mybutton] == 1 and ![?13:00-14:00]) 
   ({Log 1, "Befehl 1"})
## 2
DOELSEIF ([$SELF:mybutton] == 2 and ![?13:00-14:00])
   ({Log 1, "Befehl 2"})

Laborgruppe zum Import mit Raw definition

define using_disabledForIntervals_Labor DOIF ## 1\
([$SELF:mybutton] == 1 and !IsDisabled("$SELF")) \
   ({Log 1, "Befehl 1"})\
## 2\
DOELSEIF ([$SELF:mybutton] == 2 and !IsDisabled("$SELF"))\
   ({Log 1, "Befehl 2"})
attr using_disabledForIntervals_Labor userattr disabledForIntervals
attr using_disabledForIntervals_Labor alias Nutzung von Attribut disabledForIntervals und IsDisabled-Funktion
attr using_disabledForIntervals_Labor cmdState Befehl 1|Befehl 2
attr using_disabledForIntervals_Labor disabledForIntervals 13:00-14:00
attr using_disabledForIntervals_Labor group Labor: state inactive,; Funktion IsDisabled und disabledForIntervals
attr using_disabledForIntervals_Labor readingList mybutton
attr using_disabledForIntervals_Labor room DOIF_Labor
attr using_disabledForIntervals_Labor setList mybutton:0,1,2
attr using_disabledForIntervals_Labor webCmd mybutton

setstate using_disabledForIntervals_Labor 2016-12-08 20:26:55 mybutton 0


define using_time_spanpan_Labor DOIF ## 1\
([$SELF:mybutton] == 1 and ![?13:00-14:00]) \
   ({Log 1, "Befehl 1"})\
## 2\
DOELSEIF ([$SELF:mybutton] == 2 and ![?13:00-14:00])\
   ({Log 1, "Befehl 2"})
attr using_time_spanpan_Labor alias Nutzung einer Zeitspanne zur zeitlichen Befehlseinschränkung,<br> die ursprüngliche DOIF Funktionalität
attr using_time_spanpan_Labor cmdState Befehl 1|Befehl 2
attr using_time_spanpan_Labor group Labor: state inactive,; Funktion IsDisabled und disabledForIntervals
attr using_time_spanpan_Labor readingList mybutton
attr using_time_spanpan_Labor room DOIF_Labor
attr using_time_spanpan_Labor setList mybutton:0,1,2
attr using_time_spanpan_Labor webCmd mybutton

setstate using_time_spanpan_Labor 2016-12-08 23:33:47 mybutton 0

save

Links