[Gelöst] DOIF mit 2 Bwegungsmeldern

Begonnen von dk3572, 28 April 2019, 10:03:58

Vorheriges Thema - Nächstes Thema

dk3572

Hallo,

ich habe ein DOIF mit 2 Bewegungsmeldern. Löst man nur einen der Beiden aus, funktioniert alles. Löse ich beide nacheinander aus, wird das Licht nach 90 sec. erneut für 20 sec. eingeschaltet. Die Bewegungsmelder ändern nach 90 sec. ihren Status von motion auf nomotion.
Wie kann ich das verhindern?

Bewegungsmelder 1
   DEF        sensor 18 1 IODev=deCONZ
   FUUID      5cb75a20-f33f-cd72-4caa-4c7497c282206271
   FVERSION   31_HUEDevice.pm:0.192010/2019-04-16
   ID         S18
   INTERVAL   1
   IODev      deCONZ
   NAME       BM_Flur_OG2_Motion
   NR         334
   STATE      nomotion
   TYPE       HUEDevice
   lastupdated 2019-04-28 07:54:11
   lastupdated_local 2019-04-28 09:54:11
   manufacturername LUMI
   modelid    lumi.sensor_motion.aq2
   name       BM_Flur_OG2
   on         1
   reachable  1
   swversion  20170627
   type       ZHAPresence
   uniqueid   00:15:8d:00:03:02:1a:d8-01-0406
   READINGS:
     2019-04-28 09:40:13   battery         100
     2019-04-28 09:40:13   reachable       1
     2019-04-28 09:54:11   state           nomotion
     2019-04-28 09:40:13   temperature     23
   helper:
     devtype    S
     reachable  0
     update_timeout 1
     setList:
Attributes:
   HomeModeAlarmActive armaway
   HomeSensorLocation inside
   IODev      deCONZ
   group      motionDetector
   room       HUEDevice
   userattr   HomeModeAlarmActive HomeReadings HomeValues HomeSensorLocation:inside,outside


Bewegungsmelder 2
   DEF        sensor 7 1 IODev=deCONZ
   FUUID      5c9bd34e-f33f-cd72-68f2-094c6d76b8353c5d
   FVERSION   31_HUEDevice.pm:0.192010/2019-04-16
   ID         S7
   INTERVAL   1
   IODev      deCONZ
   NAME       BM_Flur_OG
   NR         321
   STATE      nomotion
   TYPE       HUEDevice
   lastupdated 2019-04-28 07:54:22
   lastupdated_local 2019-04-28 09:54:22
   manufacturername LUMI
   modelid    lumi.sensor_motion
   name       BM_Flur_OG
   on         1
   reachable  1
   swversion  20160524
   type       ZHAPresence
   uniqueid   00:15:8d:00:02:f0:42:bf-01-0406
   READINGS:
     2019-04-28 09:08:44   battery         100
     2019-04-28 09:08:44   reachable       1
     2019-04-28 09:54:22   state           nomotion
     2019-04-28 09:08:44   temperature     0
   helper:
     devtype    S
     reachable  0
     update_timeout 1
     setList:
Attributes:
   HomeModeAlarmActive armaway
   HomeSensorLocation inside
   IODev      deCONZ
   group      motionDetector
   room       HUEDevice
   userattr   HomeModeAlarmActive HomeReadings HomeValues HomeSensorLocation:inside,outside


DOIF
   DEF        (([BM_Flur_OG:state] eq "motion" or [BM_Flur_OG2_Motion:state] eq "motion") and [?BM_Flur_OG2_Light:lux] < 40) (set Licht_Flur_OG on)(set Licht_Flur_OG off)
   FUUID      5cb774c1-f33f-cd72-580c-c2a26c89f23aedda
   FVERSION   98_DOIF.pm:0.188900/2019-03-13
   MODEL      FHEM
   NAME       di_FlurlichtOG
   NR         336
   NTFY_ORDER 50-di_FlurlichtOG
   STATE      cmd_1
   TYPE       DOIF
   VERSION    18890 2019-03-13 18:56:41
   READINGS:
     2019-04-28 09:54:22   Device          BM_Flur_OG
     2019-04-28 09:54:31   cmd             1.2
     2019-04-28 09:54:31   cmd_event       BM_Flur_OG2_Motion
     2019-04-28 09:54:31   cmd_nr          1
     2019-04-28 09:54:31   cmd_seqnr       2
     2019-04-28 09:54:11   e_BM_Flur_OG2_Motion_state nomotion
     2019-04-28 09:54:22   e_BM_Flur_OG_state nomotion
     2019-04-28 09:33:12   mode            enabled
     2019-04-28 09:54:31   state           cmd_1
     2019-04-28 09:54:31   wait_timer      no timer
   Regex:
     accu:
   attr:
     cmdState:
     wait:
       0:
         0
         20
     waitdel:
   condition:
     0          (::ReadingValDoIf($hash,'BM_Flur_OG','state') eq "motion" or ::ReadingValDoIf($hash,'BM_Flur_OG2_Motion','state') eq "motion") and ::ReadingValDoIf($hash,'BM_Flur_OG2_Light','lux') < 40
   devices:
     0           BM_Flur_OG BM_Flur_OG2_Motion
     all         BM_Flur_OG BM_Flur_OG2_Motion
   do:
     0:
       0          set Licht_Flur_OG on
       1          set Licht_Flur_OG off
     1:
   helper:
     event      nomotion
     globalinit 1
     last_timer 0
     sleepdevice BM_Flur_OG2_Motion
     sleepsubtimer -1
     sleeptimer -1
     timerdev   BM_Flur_OG2_Motion
     timerevent nomotion
     triggerDev BM_Flur_OG2_Motion
     DOIF_eventas:
       cmd_nr: 1
       cmd_seqnr: 2
       cmd_event: BM_Flur_OG2_Motion
       state: cmd_1
     timerevents:
       nomotion
     timereventsState:
       state: nomotion
     triggerEvents:
       nomotion
     triggerEventsState:
       state: nomotion
   internals:
   itimer:
   readings:
     0           BM_Flur_OG:state BM_Flur_OG2_Motion:state
     all         BM_Flur_OG:state BM_Flur_OG2_Motion:state
   trigger:
   uiState:
   uiTable:
Attributes:
   do         resetwait
   wait       0,20


Danke für Hilfe und VG
Dieter

Damian

Es ist besser mit Events an dieser Stelle zu arbeiten:

(([BM_Flur_OG:"motion"] or [BM_Flur_OG2_Motion:"motion"]) and [?BM_Flur_OG2_Light:lux] < 40) (set Licht_Flur_OG on)(set Licht_Flur_OG off)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

dk3572

Danke für deine Hilfe.

Leider gleicher Effekt.
Oder muss ich an den Attributen noch was ändern?

Damian

Zitat von: dk3572 am 28 April 2019, 11:34:59
Danke für deine Hilfe.

Leider gleicher Effekt.
Oder muss ich an den Attributen noch was ändern?

OK. Ich sehe gerade, dass "nomotion" auch kommt, deswegen muss man die Regex-Angabe genauer spezifizieren:


(([BM_Flur_OG:"^motion"] or [BM_Flur_OG2_Motion:"^motion"]) and [?BM_Flur_OG2_Light:lux] < 40) (set Licht_Flur_OG on)(set Licht_Flur_OG off)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

dk3572

Zitat von: Damian am 28 April 2019, 11:43:02
OK. Ich sehe gerade, dass "nomotion" auch kommt, deswegen muss man die Regex-Angabe genauer spezifizieren:


(([BM_Flur_OG:"^motion"] or [BM_Flur_OG2_Motion:"^motion"]) and [?BM_Flur_OG2_Light:lux] < 40) (set Licht_Flur_OG on)(set Licht_Flur_OG off)

Ganz vergessen, danke für die ausführliche Hilfe, es funktioniert.
Auch wenn ich nicht verstehe warum es ohne "^" auch auf nomotion reagiert hat.
VG Dieter

Byte09

#5
Zitat von: dk3572 am 29 April 2019, 17:33:09
Ganz vergessen, danke für die ausführliche Hilfe, es funktioniert.
Auch wenn ich nicht verstehe warum es ohne "^" auch auf nomotion reagiert hat.
VG Dieter

weil "^" bedeutet , das der folgende ausdruck "motion" am anfang stehen muss ( es darf nichts davor stehen ) . da "nomotion" natürlich auch "motion" enthält erkennt er dieses ansonsten auch .

http://kirste.userpage.fu-berlin.de/chemnet/use/suppl/perl-regex.html

gruss Byte09

dk3572

*ankopfklatsch
Das war wohl zu einfach um selbst drauf zu kommen  ;D
Danke für die Erklärung.