DOIF/Labor - ausführbare, praxisnahe Beispiele als Problemlösung zum Experimentieren: Unterschied zwischen den Versionen

Aus FHEMWiki
Zeile 29: Zeile 29:


==Das komplette Labor zum Importieren==
==Das komplette Labor zum Importieren==
Die Definitionen sind zum den direkten Import über '''[[DOIF/Import_von_Code_Snippets|Raw definition]]''' vorbereitet.
Die Definitionen sind zum den direkten Import über '''[[DOIF/Import_von_Code_Snippets|Raw definition]]''' vorbereitet.<br>
Zum Update muss ein vorhandenes Labor gelöscht werden.
Zum Update muss ein vorhandenes Labor gelöscht werden.<br>
Nach dem Import, die Änderungen an FHEM mit '''save''' übernehmen.
<pre>
<pre>
define schrittSchalter_Labor001 DOIF ## 1 \
(["button_Labor000:short"] and $cmd=~"0|4") \
  (set lamp1_Labor000 on)\
## 2\
DOELSEIF (["button_Labor000:short"] and $cmd==1) \
  (set lamp2_Labor000 on, set lamp1_Labor000 off)\
## 3\
DOELSEIF (["button_Labor000:short"] and $cmd==2) \
  (set lamp(1|2)_Labor000 on)\
## 4\
DOELSEIF (["button_Labor000:short"] and $cmd==3) \
  (set lamp(1|2)_Labor000 off)
attr schrittSchalter_Labor001 alias Schrittschalter
attr schrittSchalter_Labor001 cmdState Schritt 1|Schritt 2|Schritt 3|Schritt 4
attr schrittSchalter_Labor001 group Mehrfachnutzung eines Tasters
attr schrittSchalter_Labor001 room DOIF_Labor
define button_Labor000 dummy
define button_Labor000 dummy
attr button_Labor000 alias Taster
attr button_Labor000 alias Taster
attr button_Labor000 group Mehrfachnutzung eines Tasters
attr button_Labor000 group Labor: Mehrfachnutzung eines Tasters
attr button_Labor000 room DOIF_Labor
attr button_Labor000 room DOIF_Labor
attr button_Labor000 setList short long
attr button_Labor000 setList short long
attr button_Labor000 webCmd short:long
attr button_Labor000 webCmd short:long
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 lamp1_Labor000 dummy
define lamp1_Labor000 dummy
attr lamp1_Labor000 alias Lampe1
attr lamp1_Labor000 alias Lampe1
attr lamp1_Labor000 group Mehrfachnutzung eines Tasters
attr lamp1_Labor000 group Labor: Mehrfachnutzung eines Tasters
attr lamp1_Labor000 room DOIF_Labor
attr lamp1_Labor000 room DOIF_Labor


define lamp2_Labor000 dummy
define lamp2_Labor000 dummy
attr lamp2_Labor000 alias Lampe2
attr lamp2_Labor000 alias Lampe2
attr lamp2_Labor000 group Mehrfachnutzung eines Tasters
attr lamp2_Labor000 group Labor: Mehrfachnutzung eines Tasters
attr lamp2_Labor000 room DOIF_Labor
attr lamp2_Labor000 room DOIF_Labor
define lamp_Labor000 dummy
attr lamp_Labor000 alias Lampe
attr lamp_Labor000 group Labor: Zeitsteuerung mit manuell Ein/Aus
attr lamp_Labor000 room DOIF_Labor


define operatorenRang_Labor1 DOIF (([$SELF1:A] or [$SELF1:B]) and [$SELF1:C]) ## operatorenRang_Labor2 operatorenRang_Labor11
define operatorenRang_Labor1 DOIF (([$SELF1:A] or [$SELF1:B]) and [$SELF1:C]) ## operatorenRang_Labor2 operatorenRang_Labor11
attr operatorenRang_Labor1 alias c) (A or B) and C
attr operatorenRang_Labor1 alias c) (A or B) and C
attr operatorenRang_Labor1 cmdState Bedingung wahr|Bedingung falsch
attr operatorenRang_Labor1 cmdState Bedingung wahr|Bedingung falsch
attr operatorenRang_Labor1 group Operatorenrangfolge
attr operatorenRang_Labor1 group Labor: Operatorenrangfolge
attr operatorenRang_Labor1 room DOIF_Labor
attr operatorenRang_Labor1 room DOIF_Labor


Zeile 75: Zeile 74:
attr operatorenRang_Labor11 alias a) A or B and C
attr operatorenRang_Labor11 alias a) A or B and C
attr operatorenRang_Labor11 cmdState Bedingung wahr|Bedingung falsch
attr operatorenRang_Labor11 cmdState Bedingung wahr|Bedingung falsch
attr operatorenRang_Labor11 group Operatorenrangfolge
attr operatorenRang_Labor11 group Labor: Operatorenrangfolge
attr operatorenRang_Labor11 readingList A B C
attr operatorenRang_Labor11 readingList A B C
attr operatorenRang_Labor11 room DOIF_Labor
attr operatorenRang_Labor11 room DOIF_Labor
Zeile 84: Zeile 83:
attr operatorenRang_Labor2 alias b) A || B and C
attr operatorenRang_Labor2 alias b) A || B and C
attr operatorenRang_Labor2 cmdState Bedingung wahr|Bedingung falsch
attr operatorenRang_Labor2 cmdState Bedingung wahr|Bedingung falsch
attr operatorenRang_Labor2 group Operatorenrangfolge
attr operatorenRang_Labor2 group Labor: Operatorenrangfolge
attr operatorenRang_Labor2 room DOIF_Labor
attr operatorenRang_Labor2 room DOIF_Labor


Zeile 90: Zeile 89:
attr operatorenRang_Labor3 alias d) A =~ "ein|1"
attr operatorenRang_Labor3 alias d) A =~ "ein|1"
attr operatorenRang_Labor3 cmdState Bedingung wahr|Bedingung falsch
attr operatorenRang_Labor3 cmdState Bedingung wahr|Bedingung falsch
attr operatorenRang_Labor3 group Operatorenrangfolge
attr operatorenRang_Labor3 group Labor: Operatorenrangfolge
attr operatorenRang_Labor3 room DOIF_Labor
attr operatorenRang_Labor3 room DOIF_Labor


define time_switch_Labor DOIF (["$SELF:mybutton: on"] or [[$SELF:mybegin,"00:00"]])\
define schrittSchalter_Labor001 DOIF ## 1 \
(["button_Labor000:short"] and $cmd=~"0|4") \
  (set lamp1_Labor000 on)\
## 2\
DOELSEIF (["button_Labor000:short"] and $cmd==1) \
  (set lamp2_Labor000 on, set lamp1_Labor000 off)\
## 3\
DOELSEIF (["button_Labor000:short"] and $cmd==2) \
  (set lamp(1|2)_Labor000 on)\
## 4\
DOELSEIF (["button_Labor000:short"] and $cmd==3) \
  (set lamp(1|2)_Labor000 off)
attr schrittSchalter_Labor001 alias Schrittschalter
attr schrittSchalter_Labor001 cmdState Schritt 1|Schritt 2|Schritt 3|Schritt 4
attr schrittSchalter_Labor001 group Labor: Mehrfachnutzung eines Tasters
attr schrittSchalter_Labor001 room DOIF_Labor
 
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 time_switch_Labor DOIF (["$SELF:_mybutton: on"] or [[$SELF:_mybegin,"00:00"]])\
   (set lamp_Labor000 on)\
   (set lamp_Labor000 on)\
DOELSEIF (["$SELF:mybutton: off"] or [[$SELF:myend,"00:01"]])\
DOELSEIF (["$SELF:_mybutton: off"] or [[$SELF:_myend,"00:01"]])\
   (set lamp_Labor000 off)
   (set lamp_Labor000 off)
attr time_switch_Labor alias Schaltuhr
attr time_switch_Labor alias Schaltuhr
attr time_switch_Labor cmdState on|off
attr time_switch_Labor cmdState on|off
attr time_switch_Labor group Zeitsteuerung mit manuell Ein/Aus
attr time_switch_Labor group Labor: Zeitsteuerung mit manuell Ein/Aus
attr time_switch_Labor readingList mybutton mybegin myend
attr time_switch_Labor readingList _mybutton _mybegin _myend
attr time_switch_Labor room DOIF_Labor
attr time_switch_Labor room DOIF_Labor
attr time_switch_Labor setList mybutton:on,off mybegin:time myend:time
attr time_switch_Labor setList _mybutton:on,off _mybegin:time _myend:time
attr time_switch_Labor webCmd mybutton:mybegin:myend
attr time_switch_Labor webCmd _mybutton:_mybegin:_myend


define lamp_Labor000 dummy
define wecker_Labor DOIF ([$SELF:_einaus,"off"] eq "on" and [[$SELF:_weckzeit,"12:00"]]) ## (<Befehle>)
attr lamp_Labor000 alias Lampe
attr wecker_Labor alias Wecker
attr lamp_Labor000 group Zeitsteuerung mit manuell Ein/Aus
attr wecker_Labor do always
attr lamp_Labor000 room DOIF_Labor
attr wecker_Labor group Labor: Zeitgeber
save
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
</pre>
</pre>


==weitere Links==
==weitere Links==

Version vom 16. November 2016, 20:38 Uhr

X mark.svgWichtiger Hinweis!
Das komplette Labor kann nur ab der aktuellen Beta-Version importiert werden.


Zusammenfassung

Das DOIF-Labor fasst praxisnahe Beispiele in dem FHEM-Raum DOIF_Labor zusammen. Alle Beispiele sind so aufbereitet, dass sie über Raw definition ausführbar importiert werden können. Jedes Beispiel einschliesslich der dazugehörenden Geräte wird einer FHEM-Gruppe zugeordnet, der Laborgruppe. Das DOIF-Labor kann komplett und die Laborgruppen können einzeln importiert werden. Die Beispiele können die Grundlage für eigene Problemlösungen sein. Experimente mit den Beispielen und Übungen sollen helfen DOIF mit seinen Möglichkeiten besser kennenzulernen.

Nutzungshinweise

Das Labor kann komplett oder gruppenweise importiert werden, siehe DOIF/Import von Code Snippets. Die Namen definierter Geräte enden auf _Labor, ggf. mit einer nachfolgenden Nummer und die Laborgruppen beginnen mit Labor: , damit sollen Namenskonflikte mit bestehenden Geräten reduziert werden. Durch Umbenennen betroffener Gerät im Import-Code, können Namenskonflikte vermieden werden. Das Labor befindet sich im Raum "DOIF_Labor" und kann komplett oder gruppenweise gelöscht werden.

  • Gruppe löschen mit
	delete group=<Gruppenname>
  • Komplette Löschung mit
	delete room=DOIF_Labor

In der im Browser geöffneten Raumansicht des DOIF_Labor können die Beispiele bedient werden.
In einem zweiten Browserfenster könnte die Geräteansicht des DOIF geöffnet werden, dann ist das Verhalten des DOIF als Reaktion auf die Bedienung gleichzeitig zu beobachten, falls die Browserfenster nebeneinander liegen.

Links zu den Laborgruppen

Operatorenrangfolge

DOIF/Operatorenrangfolge

Mehrfachnutzung eines Tasters

DOIF/Mehrfachnutzung eines Tasters

Zeitgeber

DOIF/Zeitgeber Wecker, Kurzzeitwecker, Tageszeitgeber

Zeitsteuerung mit manuell Ein/Aus

DOIF/Ein- und Ausgabe in FHEMWEB und Tablet-UI am Beispiel einer Schaltuhr

Das komplette Labor zum Importieren

Die Definitionen sind zum den direkten Import über Raw definition vorbereitet.
Zum Update muss ein vorhandenes Labor gelöscht werden.
Nach dem Import, die Änderungen an FHEM mit save übernehmen.

define button_Labor000 dummy
attr button_Labor000 alias Taster
attr button_Labor000 group Labor: Mehrfachnutzung eines Tasters
attr button_Labor000 room DOIF_Labor
attr button_Labor000 setList short long
attr button_Labor000 webCmd short:long

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 lamp1_Labor000 dummy
attr lamp1_Labor000 alias Lampe1
attr lamp1_Labor000 group Labor: Mehrfachnutzung eines Tasters
attr lamp1_Labor000 room DOIF_Labor

define lamp2_Labor000 dummy
attr lamp2_Labor000 alias Lampe2
attr lamp2_Labor000 group Labor: Mehrfachnutzung eines Tasters
attr lamp2_Labor000 room DOIF_Labor

define lamp_Labor000 dummy
attr lamp_Labor000 alias Lampe
attr lamp_Labor000 group Labor: Zeitsteuerung mit manuell Ein/Aus
attr lamp_Labor000 room DOIF_Labor

define operatorenRang_Labor1 DOIF (([$SELF1:A] or [$SELF1:B]) and [$SELF1:C]) ## operatorenRang_Labor2 operatorenRang_Labor11
attr operatorenRang_Labor1 alias c) (A or B) and C
attr operatorenRang_Labor1 cmdState Bedingung wahr|Bedingung falsch
attr operatorenRang_Labor1 group Labor: Operatorenrangfolge
attr operatorenRang_Labor1 room DOIF_Labor

define operatorenRang_Labor11 DOIF ([$SELF:A,0] or [$SELF:B,0] and [$SELF:C,0]) ## operatorenRang_Labor1 operatorenRang_Labor2
attr operatorenRang_Labor11 alias a) A or B and C
attr operatorenRang_Labor11 cmdState Bedingung wahr|Bedingung falsch
attr operatorenRang_Labor11 group Labor: Operatorenrangfolge
attr operatorenRang_Labor11 readingList A B C
attr operatorenRang_Labor11 room DOIF_Labor
attr operatorenRang_Labor11 setList A:0,#,null,1,-1,eins B:0,#,null,1,-1,eins C:0,#,null,1,-1,eins
attr operatorenRang_Labor11 webCmd A:B:C

define operatorenRang_Labor2 DOIF ([operatorenRang_Labor11:A] || [operatorenRang_Labor11:B] and [operatorenRang_Labor11:C]) ## operatorenRang_Labor1 operatorenRang_Labor3 operatorenRang_Labor11
attr operatorenRang_Labor2 alias b) A || B and C
attr operatorenRang_Labor2 cmdState Bedingung wahr|Bedingung falsch
attr operatorenRang_Labor2 group Labor: Operatorenrangfolge
attr operatorenRang_Labor2 room DOIF_Labor

define operatorenRang_Labor3 DOIF ([operatorenRang_Labor11:A] =~ "ein|1") ## operatorenRang_Labor1 operatorenRang_Labor2 operatorenRang_Labor11
attr operatorenRang_Labor3 alias d) A =~ "ein|1"
attr operatorenRang_Labor3 cmdState Bedingung wahr|Bedingung falsch
attr operatorenRang_Labor3 group Labor: Operatorenrangfolge
attr operatorenRang_Labor3 room DOIF_Labor

define schrittSchalter_Labor001 DOIF ## 1 \
(["button_Labor000:short"] and $cmd=~"0|4") \
   (set lamp1_Labor000 on)\
## 2\
DOELSEIF (["button_Labor000:short"] and $cmd==1) \
   (set lamp2_Labor000 on, set lamp1_Labor000 off)\
## 3\
DOELSEIF (["button_Labor000:short"] and $cmd==2) \
   (set lamp(1|2)_Labor000 on)\
## 4\
DOELSEIF (["button_Labor000:short"] and $cmd==3) \
   (set lamp(1|2)_Labor000 off)
attr schrittSchalter_Labor001 alias Schrittschalter
attr schrittSchalter_Labor001 cmdState Schritt 1|Schritt 2|Schritt 3|Schritt 4
attr schrittSchalter_Labor001 group Labor: Mehrfachnutzung eines Tasters
attr schrittSchalter_Labor001 room DOIF_Labor

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 time_switch_Labor DOIF (["$SELF:_mybutton: on"] or [[$SELF:_mybegin,"00:00"]])\
   (set lamp_Labor000 on)\
DOELSEIF (["$SELF:_mybutton: off"] or [[$SELF:_myend,"00:01"]])\
   (set lamp_Labor000 off)
attr time_switch_Labor alias Schaltuhr
attr time_switch_Labor cmdState on|off
attr time_switch_Labor group Labor: Zeitsteuerung mit manuell Ein/Aus
attr time_switch_Labor readingList _mybutton _mybegin _myend
attr time_switch_Labor room DOIF_Labor
attr time_switch_Labor setList _mybutton:on,off _mybegin:time _myend:time
attr time_switch_Labor webCmd _mybutton:_mybegin:_myend

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

weitere Links