DOIF als Schalter mit zusätzlichen Bedingungen funktioniert nicht

Begonnen von KyleK, 23 April 2020, 23:39:02

Vorheriges Thema - Nächstes Thema

KyleK

Hallo,

ich habe folgendes DOIF:

([$SELF] eq "on" and [?hue.Stehlampe] eq "off" and [?dummy_LightSensor:lux:d] < 10) (set hue.Stehlampe on)
DOELSE()


Das DOIF soll über eine Alexa-Routine getriggert werden. Um mir einen zusätzlichen Dummy zu ersparen habe ich das DOIF als Schalter definiert, mit setList und cmdState.
Wenn das DOIF getriggert wird, und zu diesem Zeitpunkt die Stehlampe "off" ist und der Wert eines Lichtsensors < 10, dann soll die Lampe angeschalten werden.

Aus irgendeinem Grund wird jedoch der Lightsensor-Wert ignoriert, und ich finde einfach das Problem nicht.
Im obigen Test-DOIF ist der Lightsensor ein Dummy:


Internals:
   CFGFN     
   FUUID      5ea20686-f33f-9ecb-b1c5-e81419ca75d32139
   NAME       dummy_LightSensor
   NR         21012
   STATE      lux 20
   TYPE       dummy
   READINGS:
     2020-04-23 23:20:38   lux             20
     2020-04-23 23:20:22   state           lux 20
Attributes:
   readingList lux
   setList    lux


Wie man sieht ist der Lux-Wert auf 20 gesetzt.

Wenn ich jetzt die Lampe ausschalte, und dann das DOIF triggere (set di.Schlafenszeit on), dann geht die Lampe an, obwohl die Lux-Bedingung false sein sollte.

Was mache ich falsch?


List des DOIF:

Internals:
   CFGFN     
   DEF        ([$SELF] eq "on" and [?hue.Stehlampe] eq "off" and [?dummy_LightSensor:lux:d] < 10) (set hue.Stehlampe on)
DOELSE()
   FUUID      5ea0afbd-f33f-9ecb-8c55-0c2088ee53ab265a
   MODEL      FHEM
   NAME       di.Schlafenszeit
   NOTIFYDEV  global,di.Schlafenszeit
   NR         16549
   NTFY_ORDER 50-di.Schlafenszeit
   STATE      off
   TYPE       DOIF
   VERSION    21224 2020-02-18 18:45:49
   READINGS:
     2020-04-23 23:27:45   cmd             2
     2020-04-23 23:27:45   cmd_event       di.Schlafenszeit
     2020-04-23 23:27:45   cmd_nr          2
     2020-04-23 23:27:45   e_di.Schlafenszeit_STATE on
     2020-04-23 23:27:17   mode            enabled
     2020-04-23 23:27:45   state           off
   Regex:
     accu:
     cond:
       di.Schlafenszeit:
         0:
           &STATE     ^di.Schlafenszeit$
   attr:
     cmdState:
       0:
         on
       1:
         off
     wait:
     waitdel:
   condition:
     0          ::InternalDoIf($hash,'di.Schlafenszeit','STATE') eq "on" and ::InternalDoIf($hash,'hue.Stehlampe','STATE') eq "off" and ::ReadingValDoIf($hash,'dummy_LightSensor','lux','','d') < 10
   devices:
   do:
     0:
       0          set hue.Stehlampe on
     1:
       0         
   helper:
     DEVFILTER  ^global$|^di.Schlafenszeit$
     NOTIFYDEV  global|di.Schlafenszeit
     event      cmd_nr: 1,cmd: 1,cmd_event: set_on_cmd_1,on
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   di.Schlafenszeit
     timerevent cmd_nr: 1,cmd: 1,cmd_event: set_on_cmd_1,on
     triggerDev di.Schlafenszeit
     DOIF_eventa:
       cmd_nr: 2
       cmd: 2
       cmd_event: di.Schlafenszeit
       off
     DOIF_eventas:
       cmd_nr: 2
       cmd: 2
       cmd_event: di.Schlafenszeit
       state: off
     timerevents:
       cmd_nr: 1
       cmd: 1
       cmd_event: set_on_cmd_1
       on
       e_di.Schlafenszeit_STATE: on
       cmd_nr: 2
       cmd: 2
       cmd_event: di.Schlafenszeit
       off
     timereventsState:
       cmd_nr: 1
       cmd: 1
       cmd_event: set_on_cmd_1
       state: on
     triggerEvents:
       cmd_nr: 1
       cmd: 1
       cmd_event: set_on_cmd_1
       on
       e_di.Schlafenszeit_STATE: on
       cmd_nr: 2
       cmd: 2
       cmd_event: di.Schlafenszeit
       off
     triggerEventsState:
       cmd_nr: 1
       cmd: 1
       cmd_event: set_on_cmd_1
       state: on
   internals:
     all         di.Schlafenszeit:STATE hue.Stehlampe:STATE
   readings:
   trigger:
   uiState:
   uiTable:
Attributes:
   cmdState   on|off
   do         always
   room       System->DOIF
   setList    on off
   webCmd     :
FHEM on Futro S940
CUL868
7x MAX! Thermostat, 8x MAX! Fensterkontakte
Conbee II + deConz, TradFri Lampen, Osram Smart+ Steckdosen

KyleK

Ich denke ich weiss die Antwort:

Mit set di.Schlafenszeit on führe ich effektiv den ersten Branch direkt aus (set di.Schlafenszeit cmd_1), und ignoriert sämtliche Bedingungen.
Ich schätze ich komme hier um einen Dummy nicht drum herum.
FHEM on Futro S940
CUL868
7x MAX! Thermostat, 8x MAX! Fensterkontakte
Conbee II + deConz, TradFri Lampen, Osram Smart+ Steckdosen

xenos1984