Bin gerade dabei eine Weckfunktion einzubauen... habe einen Dummy "Wecker" um die Funktion komfortabel ein- und ausschalten zu können. Im Dummy "Weckzeit" soll die Uhrzeit eingestellt werden. Der Dummy "Weckertest" soll später das Wecklicht werden und ist momentan nur zum Testen gedacht.
define Wecker dummy
attr Wecker devStateIcon on:general_an@green off:general_aus@grey
attr Wecker group Weckerfunktion
attr Wecker room Wecker
attr Wecker setList on off
attr Wecker webCmd on:off
define Weckertest dummy
attr Weckertest devStateIcon on:general_an@green off:general_aus@grey
attr Weckertest group Weckerfunktion
attr Weckertest room Wecker
attr Weckertest setList on off
attr Weckertest webCmd on:off
define Weckzeit dummy
attr Weckzeit group Weckerfunktion
attr Weckzeit room Wecker
attr Weckzeit setList state:time
attr Weckzeit webCmd state
Mit einem DOIF wollte ich es auswerten, was mit der absoluten Zeitangabe auch funktioniert:
define at_Wecker DOIF ([Wecker] eq "on" and [08:00]) (set Weckertest on;;)
attr at_Wecker do always
Gebe ich statt 8 Uhr nun das Dummy "Weckzeit" ein, dann schaltet der Weckertest sofort ein - warum ist das so?
define at_Wecker DOIF ([Wecker] eq "on" and [Weckzeit]) (set Weckertest on;;)
attr at_Wecker do always
Ich fürchte ich habe da was nicht verstanden :'(
define at_Wecker DOIF ([?Wecker] eq "on" and [08:00]) (set Weckertest on;;)
Man beachte das ? vor Wecker.
Bedeutung des ? ist in der Commandref nach zu lesen.
Danke, aber die Uhrzeit (in meinem Beispiel 8:00 Uhr) war ja nicht das Problem (geht auch ohne ?)
Mein Problem ist der Dummy Wert "Weckzeit" statt der fix eingestellten Uhrzeit.
define at_Wecker DOIF ([Wecker] eq "on" and [Weckzeit]) (set Weckertest on;;)
define at_Wecker DOIF ([?Wecker] eq "on" and [[Weckzeit]]) (set Weckertest on)
siehe commandref DOIF Indirekten Zeitangaben erstes Beispiel.. doppelte [[ ]]
Nach dem nächten Update des DOIF oder mit der Beta-Version https://forum.fhem.de/index.php/topic,58556.msg499140.html#msg499140
kann man auf die Dummys verzichten, dann funktioniert setList und readingList im DOIF selbst, die Readings mit _ als Präfix sind persistent. Die Anzeige erfolgt dann in einer Zeile.
define at_Wecker DOIF ([?_einaus,"off"] eq "on" and [[_weckzeit,"00:00"]]) (set Weckertest on)
attr at_Wecker readingList _einaus _weckzeit
attr at_Wecker setList _einaus:on,off _weckzeit:time
attr at_Wecker webCmd _einaus:_weckzeit
Danke, mit den doppelten eckigen Klammern funktioniert es wie erwartet... ;D
DOIF ist sehr mächtig, als Anfänger ist es trotz hervorragender Beschreibung nicht ganz einfach da durchzublicken...