DOIF-Dimmer, mir fehlt der korrekte Ansatz

Begonnen von Spartacus, 05 Januar 2017, 10:02:18

Vorheriges Thema - Nächstes Thema

Spartacus

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]
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Spartacus

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
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Per


Spartacus

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
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Per

Schau mal hier, ob du da was passendes findest (hab gerade wenig Zeit).