DOIF/Zeitspanne im DOIF und disabledForIntervals im Vergleich: Unterschied zwischen den Versionen

Aus FHEMWiki
(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…“)
 
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
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.
Der FHEM-Server stellt eine Zeitbehandlung über das Attribut '''disabledForIntervals''' zur Vefügung. Das ist für viele Module hilfreich, da dort keine eigene Zeitbehandlung implementiert werden muss.
DOIF stellt das Attribut '''disabledForIntervals''' nicht zur Verfügung, da im DOIF selbst eine Zeitbehandlung eingebaut ist.<br>
Dennoch kann '''disabledForIntervals''' mit DOIF verwendet werden, wenn '''disabledForIntervals''' mit dem Attribut '''userattr''' im DOIF verfügbar gemacht wird. Allerdings sind die Möglichkeiten der [http://fhem.de/commandref_DE.html#DOIF_Zeitsteuerung Zeitfunktionen im DOIF] vielfältiger als die durch [http://fhem.de/commandref_DE.html#disabledForIntervals '''disabledForIntervals'''] bereitgestellten Möglichkeiten, die  originären Zeitangaben sollten daher die erste Wahl sein.


==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
<pre>(<Bedingung> and ![?<Anfangszeit>-<Endzeit>]) (<Befehle>)</pre>
===Beschreibung===
{{Randnotiz|RNText=Hinweis: 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.<br>
Die Bedingungen '''1''' und '''2''' können zwischen 13:00 und 14:00 nicht wahr werden, da '''![13:00-14:00]''' unwahr ist.
===Definition===
<pre>
## 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"})</pre>
==Verwendung von disabledForIntervals im DOIF==
==Verwendung von disabledForIntervals im DOIF==
Mit der internen FHEM-Funktion [[DevelopmentModuleAPI#IsDisabled|IsDisabled]] lässt sich für Bedingungszweige die Befehlsausführung deaktivieren.<br>
Mit der internen FHEM-Funktion [[DevelopmentModuleAPI#IsDisabled|IsDisabled]] lässt sich für Bedingungszweige die Befehlsausführung deaktivieren.<br>
Zeile 10: Zeile 32:
===Beschreibung===
===Beschreibung===
{{Randnotiz|RNText=Hinweis: Verwendung von
{{Randnotiz|RNText=Hinweis: Verwendung von
* '''$SELF''' dem Eigennamen des DOIF
* '''$SELF''', dem Eigennamen des DOIF
* '''userattr''' um DOIF mit '''disabledForIntervals''' zu ergänzen
* '''userattr''' um DOIF mit '''disabledForIntervals''' zu ergänzen
* '''disabledForIntervals''' um Zeitspannen der Inaktivität festzulegen
* '''disabledForIntervals''' um Zeitspannen der Inaktivität festzulegen
Zeile 32: Zeile 54:
disabledForIntervals 13:00-14:00
disabledForIntervals 13:00-14:00
</pre>
</pre>
==Nutzung einer Zeitspanne zur zeitlichen Befehlseinschränkung, die originäre DOIF Funktionalität==
==Einige Unterschiede==
Grundsätzlich wird eine Bedingung, die innerhalb einer Zeitspann inaktiv werden soll, so formuliert
* DOIF benötigt keine zusätzlichen Attribute.
<pre>(<Bedingung> and ![<Anfangszeit>-<Endzeit>]) (<Befehle>)</pre>
* Bei Verwendung der originären Zeitspannen können in verschiedenen Bedingungen des DOIF unterschiedliche Zeitspannen verwendet werden.
===Beschreibung===
* Im DOIF müssen die Tagesgrenze überschreitende Zeitspannen nicht gesplittet werden.
{{Randnotiz|RNText=Hinweis: Verwendung von
* Originäre Zeitspannen im DOIF können auslösen.
* '''$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.<br>
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===
<pre>
## 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"})</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>
Zeile 97: Zeile 104:
* [[DOIF/Labor - ausführbare, praxisnahe Beispiele als Problemlösung zum Experimetieren]]
* [[DOIF/Labor - ausführbare, praxisnahe Beispiele als Problemlösung zum Experimetieren]]
* [[DevelopmentModuleAPI]]
* [[DevelopmentModuleAPI]]
* [http://fhem.de/commandref_DE.html#DOIF_Zeitsteuerung DOIF Zeitsteuerung]
* [http://fhem.de/commandref_DE.html#disabledForIntervals disabledForIntervals]


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

Version vom 9. Dezember 2016, 17:20 Uhr

Der FHEM-Server stellt eine Zeitbehandlung über das Attribut disabledForIntervals zur Vefügung. Das ist für viele Module hilfreich, da dort keine eigene Zeitbehandlung implementiert werden muss. DOIF stellt das Attribut disabledForIntervals nicht zur Verfügung, da im DOIF selbst eine Zeitbehandlung eingebaut ist.
Dennoch kann disabledForIntervals mit DOIF verwendet werden, wenn disabledForIntervals mit dem Attribut userattr im DOIF verfügbar gemacht wird. Allerdings sind die Möglichkeiten der Zeitfunktionen im DOIF vielfältiger als die durch disabledForIntervals bereitgestellten Möglichkeiten, die originären Zeitangaben sollten daher die erste Wahl sein.

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.

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"})

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

Einige Unterschiede

  • DOIF benötigt keine zusätzlichen Attribute.
  • Bei Verwendung der originären Zeitspannen können in verschiedenen Bedingungen des DOIF unterschiedliche Zeitspannen verwendet werden.
  • Im DOIF müssen die Tagesgrenze überschreitende Zeitspannen nicht gesplittet werden.
  • Originäre Zeitspannen im DOIF können auslösen.

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