Hallo,
ich möchte mit dem DOIF einen Dimmer steuern. Es sollen sowohl Helligkeit als auch Dauer der Einschaltzeit gesteuert werden. Die Werte für Dauer und Helligkeit sind in einem Dummy Device gespeichert. Über Bordmittel von EnOcean ist dies nur begrenzt möglich.
Im Prinzip funktioniert mein Code, allerdings kriege ich es nicht hin, dass DOIF so triggert, wie ich es möchte:
Ändere ich z.B. in meinem Dropdown die Dauer auf 2, wird die Lampe mit der zuvor eingestellten Helligkeit gedmmt. Der Wait-Timer rennt für 2min (Dauer*60) los. Jede Änderung an der Dauer setzt korrekterweise den Timer entsprechend zurückt.
Ändere ich allerdings während des Timerablaufs die Helligkeit, so wird dieser Trigger ignoriert. Hier soll aber erreicht werden, dass sich die Änderung der Helligkeit sich direkt auswirkt. Dabei ist es zunächst egal, ob der Timer zurückgesetzt wird, oder mit der Restlaufzeit weiterläuft.
Ich habe schon etwas mit den Attributen gespielt, aber die richtige Kombination habe ich noch nicht entdeckt. Hat jemand einen Tipp für mich, wie ich das lösen kann?
Christian
Internals:
CFGFN
DEF ([Dimmer_2:Dauer] or [Dimmer_2:Helligkeit] ) (set OG.sz.DI.Christian dim {([Dimmer_2:Helligkeit])}) (set OG.sz.DI.Christian off)
NAME di_Licht
NR 1444
NTFY_ORDER 50-di_Licht
STATE cmd_1
TYPE DOIF
Readings:
2017-01-05 09:47:39 Device Dimmer_2
2017-01-05 09:47:50 cmd 1.2
2017-01-05 09:47:50 cmd_event Dimmer_2
2017-01-05 09:47:50 cmd_nr 1
2017-01-05 09:47:50 cmd_seqnr 2
2017-01-05 09:47:39 e_Dimmer_2_Dauer 1
2017-01-05 09:47:39 e_Dimmer_2_Helligkeit 45
2017-01-05 09:47:50 state cmd_1
2017-01-05 09:47:49 wait_timer no timer
Condition:
0 ReadingValDoIf($hash,'Dimmer_2','Dauer') or ReadingValDoIf($hash,'Dimmer_2','Helligkeit')
Devices:
0 Dimmer_2
all Dimmer_2
Do:
0:
0 set OG.sz.DI.Christian dim {([Dimmer_2:Helligkeit])}
1 set OG.sz.DI.Christian off
Helper:
event Helligkeit: 45
globalinit 1
last_timer 0
sleepdevice Dimmer_2
sleepsubtimer -1
sleeptimer -1
timerdev Dimmer_2
timerevent Helligkeit: 45
triggerDev Dimmer_2
timerevents:
Helligkeit: 45
timereventsState:
Helligkeit: 45
triggerEvents:
Helligkeit: 45
triggerEventsState:
Helligkeit: 45
Internals:
Itimer:
Readings:
0 Dimmer_2:Dauer Dimmer_2:Helligkeit
all Dimmer_2:Dauer Dimmer_2:Helligkeit
Regexp:
0:
All:
State:
Trigger:
Attributes:
do resetwait
room Test
wait 0,60*[Dimmer_2:Dauer]
Hallo,
irgendwie gibt es hier noch ein anderes Problem. Das DOIF trigger immer, wenn ich Dimmer_2 ändere, egal ob es das Reading "Dauer" oder "Helligkeit" ist.
Ich hatte verstanden, dass [Dimmer2_Helligkeit] nur auf Änderungen im Reading "Helligkeit" reagiert. Das ist aber offenbar nicht der Fall.
Hier mein Dummy-Device:
Internals:
NAME Dimmer_2
NR 1148
STATE Helligkeit 45
TYPE dummy
Readings:
2017-01-05 10:44:13 Dauer 2
2017-01-05 10:44:21 Helligkeit 40
2017-01-04 14:07:06 state Helligkeit 45
Attributes:
alias Nachtschrank
group Test
readingList Dauer Helligkeit
room Test
setList Dauer:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,20,25,30,35,40,45,50,55,60 Helligkeit:35,40,45,50,55,60,65,70,75
Wo ist denn hier mein Fehler?
Christian
Zitat von: Spartacus am 05 Januar 2017, 10:53:34Wo ist denn hier mein Fehler?
Schau mal hier (https://fhem.de/commandref_DE.html#DOIF_checkReadingEvent).
Hallo,
Besten Dank, damit ist schon mal klar, warum nicht gezielt auf das Reading getriggert wurde. checkReadingEvent hatte ich nicht auf dem Schirm!
Allerdings wird dadurch auch nicht mein ursprüngliches Problem gelöst. Wie kann ich denn während des Wait-timers auf die Helligkeit triggern?
Christian
Schau mal hier (https://forum.fhem.de/index.php/topic,57657.msg490567.html#msg490567), ob du da was passendes findest (hab gerade wenig Zeit).