DoIf mit Licht und Bewegungsmelder

Begonnen von wolfram, 18 November 2019, 13:52:19

Vorheriges Thema - Nächstes Thema

wolfram

Hallo zusammen,

Ich habe im Prinzip ein einfaches DoIf für einen Bewegungsmelder der mein Küchenlicht schalten soll.
Das Problem ist, dass das Licht nach der definierten Zeit ausgeht, auch wenn zwischendurch ein "motion" kommt und der Timer eigentlich von vorn beginnen sollte zu zählen.

Hier ein list meines DoIfs:

Internals:
   DEF        (([Motion_Kitchen:"motion$"] or [HUEDevice7:pct] > 1) and ([twilight:twilight_weather] < 55 and [07:01-19:59]))
   (set HUEGroup49489 pct 40)
   (set HUEGroup49489 pct 0)
DOELSEIF (([Motion_Kitchen:"motion$"] or [HUEDevice7:pct] > 1) and ([twilight:twilight_weather] <55 and [20:00-07:00]))
   (set HUEGroup49489 pct 10)
   (set HUEGroup49489 pct 0)
   FUUID      5d911fc7-f33f-3040-8f68-5a42ab79708ecd71
   FVERSION   98_DOIF.pm:0.205000/2019-11-12
   MODEL      FHEM
   NAME       di_Kuechenlicht
   NOTIFYDEV  global,HUEDevice7,Motion_Kitchen,twilight
   NR         406
   NTFY_ORDER 50-di_Kuechenlicht
   STATE      cmd_1
   TYPE       DOIF
   VERSION    20500 2019-11-12 17:54:48
   READINGS:
     2019-11-18 13:41:28   Device          twilight
     2019-11-18 08:31:10   cmd             1.2
     2019-11-18 08:31:10   cmd_event       Motion_Kitchen
     2019-11-18 08:31:10   cmd_nr          1
     2019-11-18 08:31:10   cmd_seqnr       2
     2019-11-18 08:31:10   e_HUEDevice7_pct 0
     2019-11-18 08:37:21   e_Motion_Kitchen_events nomotion
     2019-11-18 13:41:28   e_twilight_twilight_weather 61
     2019-11-03 10:44:35   mode            enabled
     2019-11-18 08:31:10   state           cmd_1
     2019-11-17 19:59:00   timer_01_c01    18.11.2019 07:01:00
     2019-11-17 19:59:00   timer_02_c01    18.11.2019 19:59:00
     2019-11-18 07:00:00   timer_03_c02    18.11.2019 20:00:00
     2019-11-18 07:00:00   timer_04_c02    19.11.2019 07:00:00
     2019-11-18 08:31:10   wait_timer      no timer
   Regex:
     accu:
     cond:
       HUEDevice7:
         0:
           pct        ^HUEDevice7$:^pct:
         1:
           pct        ^HUEDevice7$:^pct:
       Motion_Kitchen:
         0:
           &STATE     ^Motion_Kitchen$
         1:
           &STATE     ^Motion_Kitchen$
       twilight:
         0:
           twilight_weather ^twilight$:^twilight_weather:
         1:
           twilight_weather ^twilight$:^twilight_weather:
   attr:
     cmdState:
     wait:
       0:
         0
         240
       1:
         0
         120
     waitdel:
   condition:
     0          (::EventDoIf('Motion_Kitchen',$hash,'motion$',1) or ::ReadingValDoIf($hash,'HUEDevice7','pct') > 1) and (::ReadingValDoIf($hash,'twilight','twilight_weather') < 55 and ::DOIF_time($hash,0,1,$wday,$hms))
     1          (::EventDoIf('Motion_Kitchen',$hash,'motion$',1) or ::ReadingValDoIf($hash,'HUEDevice7','pct') > 1) and (::ReadingValDoIf($hash,'twilight','twilight_weather') <55 and ::DOIF_time($hash,2,3,$wday,$hms))
   days:
   do:
     0:
       0          set HUEGroup49489 pct 40
       1          set HUEGroup49489 pct 0
     1:
       0          set HUEGroup49489 pct 10
       1          set HUEGroup49489 pct 0
     2:
   helper:
     DEVFILTER  ^global$|^twilight$|^HUEDevice7$|^Motion_Kitchen$
     NOTIFYDEV  global|twilight|HUEDevice7|Motion_Kitchen
     event      azimuth: 206.15,elevation: 13.98,twilight: 100,twilight_weather: 61,compasspoint: south-southwest
     globalinit 1
     last_timer 4
     sleepdevice Motion_Kitchen
     sleepsubtimer -1
     sleeptimer -1
     timerdev   Motion_Kitchen
     timerevent nomotion
     triggerDev twilight
     timerevents:
       nomotion
     timereventsState:
       state: nomotion
     triggerEvents:
       azimuth: 206.15
       elevation: 13.98
       twilight: 100
       twilight_weather: 61
       compasspoint: south-southwest
     triggerEventsState:
       azimuth: 206.15
       elevation: 13.98
       twilight: 100
       twilight_weather: 61
       compasspoint: south-southwest
   internals:
   interval:
     0          -1
     1          0
     2          -1
     3          2
   intervalfunc:
   intervaltimer:
   localtime:
     0          1574056860
     1          1574103540
     2          1574103600
     3          1574143200
   perlblock:
   readings:
     all         HUEDevice7:pct twilight:twilight_weather
   realtime:
     0          07:01:00
     1          19:59:00
     2          20:00:00
     3          07:00:00
   time:
     0          07:01:00
     1          19:59:00
     2          20:00:00
     3          07:00:00
   timeCond:
     0          0
     1          0
     2          1
     3          1
   timer:
     0          0
     1          0
     2          0
     3          0
   timers:
     0           0  1  0  1
     1           2  3  2  3
   trigger:
     all         Motion_Kitchen
   triggertime:
     1574103540:
       localtime  1574103540
       hash:
     1574103600:
       localtime  1574103600
       hash:
     1574143200:
       localtime  1574143200
       hash:
   uiState:
   uiTable:
Attributes:
   devStateIcon cmd_1:10px-kreis-gruen cmd_1_1:10px-kreis-gelb disabled:10px-kreis-rot
   disable    0
   do         resetwait
   icon       icoUhr
   initialize initialized
   room       Automat
   wait       0,240:0,120


Ich sitze da schon ewig dran, komme aber dem Übeltäter nicht auf die Spur und bin für jeden Hinweis dankbar.

Danke und LG
wolf

Per

Zitat von: wolfram am 18 November 2019, 13:52:19(([Motion_Kitchen:"motion$"]
reagiert auch auf "nomotion", besser wäre hier "^motion". Allerdings sollte das dein Problem eher beheben als verschlimmern. Muss also noch ein Problem geben.

CBSnake

Hi,

schon mit:
attr do resetwait

Probiert?

Grüße
Achim
FHEM auf Debian 10, HM-Wlan, JeeLink-Wlan, Wlanduino, ConBee, TP-Link Steckdose, GHoma Steckdosen, Shelly Steckdosen

amenomade

Zitat von: CBSnake am 18 November 2019, 16:35:40
Hi,

schon mit:
attr do resetwait

Probiert?

Grüße
Achim
Sonst würde es nicht in seinem "list" stehen, oder? ;)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

CBSnake

Zitat von: amenomade am 18 November 2019, 21:36:53
Sonst würde es nicht in seinem "list" stehen, oder? ;)

;D klassisch drüber gescrollt
FHEM auf Debian 10, HM-Wlan, JeeLink-Wlan, Wlanduino, ConBee, TP-Link Steckdose, GHoma Steckdosen, Shelly Steckdosen

amenomade

@wolfram: kein event-on-change-reading auf Motion_Kitchen? Zeig mal ein "list" davon
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

wolfram

#6
Guten Morgen,

erst einmal vielen Dank für die Antworten.

Hier ein List meines Motion_Kitchen:

Internals:
   CHANGED   
   DEF        sensor 9  IODev=deCONZ
   FUUID      5d8e73f0-f33f-3040-130e-39a119be01a79f0d
   FVERSION   31_HUEDevice.pm:0.204920/2019-11-11
   ID         S9
   INTERVAL   
   IODev      deCONZ
   NAME       Motion_Kitchen
   NR         379
   STATE      nomotion
   TYPE       HUEDevice
   lastupdated 2019-11-19 08:47:37
   lastupdated_local 2019-11-19 09:47:37
   manufacturername Philips
   modelid    SML001
   name       Move_Kitchen
   on         1
   reachable  1
   sensitivity 2
   sensitivitymax 2
   swversion  6.1.1.27575
   type       ZHAPresence
   uniqueid   00:17:88:01:02:12:ce:e6-02-0406
   READINGS:
     2019-11-19 08:55:21   battery         81
     2019-11-19 08:55:21   reachable       1
     2019-11-19 09:47:37   state           nomotion
   helper:
     devtype    S
     reachable  0
     update_timeout 1
     configList:
     setList:
Attributes:
   HomeModeAlarmActive armaway
   HomeSensorLocation inside
   IODev      deCONZ
   devStateIcon motion:people_sensor nomotion:message_presence
   event-on-change-reading .*
   genericDeviceType MotionSensor
   group      Motion
   homebridgeMapping MotionDetected=state,valueOn=motion,valueOff=nomotion
history:size=1024
   icon       motion_detector
   room       HUEDevice,Homekit,Küche
   siriName   Küche Bewegung


Es sollte ja auch das Licht ausgehen, wenn ich es manuell einschalte, ob am Schalter, oder per fhem. Das passiert gerade auch nicht :(
Schalte ich das Licht per fhem in der Küche ein und sehe mir den eventmonitor an, bekomme ich keine Info, dass "HUEDevice7" etwas auslöst, denn "pct" ist doch größer als 1 %, deshalb hier noch einmal ein list meines "HUEDevice7"

Internals:
   CHANGED   
   DEF        7  IODev=deCONZ
   FUUID      5d8e3434-f33f-3040-88a0-e6c50e784dd4e0a2
   FVERSION   31_HUEDevice.pm:0.204920/2019-11-11
   ID         7
   INTERVAL   
   IODev      deCONZ
   NAME       HUEDevice7
   NR         368
   STATE      40
   TYPE       HUEDevice
   desired    1
   manufacturername OSRAM
   modelid    PAR16 50 TW
   name       Küche links
   swversion  01020510
   type       Color temperature light
   uniqueid   84:18:26:00:00:01:59:16-03
   READINGS:
     2019-11-16 12:01:48   alert           none
     2019-11-19 09:59:32   bri             102
     2019-11-16 12:01:48   colormode       ct
     2019-11-16 12:01:48   ct              370 (2702K)
     2019-11-19 10:34:38   onoff           1
     2019-11-19 10:34:38   pct             40
     2019-11-19 09:56:03   reachable       1
     2019-11-16 12:01:48   rgb             ffc698
     2019-11-19 10:35:21   state           dim37%
   helper:
     alert      none
     battery    -1
     bri        102
     colormode  ct
     ct         370
     devtype   
     effect     
     hue        -1
     pct        40
     reachable  1
     rgb        ffc698
     sat        -1
     update_timeout -1
     xy         
     helper:
Attributes:
   IODev      deCONZ
   alias      Küchenlicht_links
   color-icons 2
   devStateIcon {(HUEDevice_devStateIcon($name),"toggle")}
   event-on-change-reading .*
   group      Licht
   model      PAR16 50 TW
   room       HUEDevice
   stateFormat pct
   subType    ctdimmer
   webCmd     ct:ct 490:ct 380:ct 270:ct 160:toggle:on:off



Liebe Grüße
wolf

Per

Durch event-on-change-reading .* auf Motion_Kitchen kommt nur ein "motion", irgendwann ein "nomotion", auf beides wird getriggert. Wenn du also dich bewegst, still stehst, wieder bewegst usw. sollte das Licht anbleiben.
Mein Vorschlag:
event-on-change-reading auf Motion_Kitchen löschen und auf [Motion_Kitchen:"^motion"] Triggern. Und hoffen, dass mehrere "motion" gesendet werden.
Oder event-on-change-reading .* auf Motion_Kitchen drin lassen und statt wait mit "nomotion" dimmen (+ wait zum Ausschalten).

wolfram

#8
Guten Abend,

@Per: Danke für Deine Antwort. Ich habe das event-on-change-reading im Motion_Kitchen entfernt. Den regulären Ausdruck angepasst: [Motion_Kitchen:"^motion"] wie empfohlen.
Jetzt sendet der BM erst wieder ein "motion" nachdem er einmal ein "nomotion" gesendet hat (nach ca. 10 sec). Danach kommt sofort nach Bewegung wieder ein "motion". Also Möglichkeit 1 klappt leider nicht, denn wenn ich mich 2 min ununterbrochen bewege, geht das Licht aus.

Also Deine Möglichkeit 2, die ich noch nicht ganz verstehe...sorry, ich tu mich ein bisschen schwer. Also das DoIf  [Motion_Kitchen:"^nomotion"] triggern? Und dann das DoIf....ähhmm?? (sorry für die Leere)

Liebe Grüße
wolf

Hier noch 2x der Event-Monitor

1. mein DoIf

2019-11-19 20:33:26.451 DOIF di_Kuechenlicht wait_timer: no timer
2019-11-19 20:33:26.455 DOIF di_Kuechenlicht wait_timer: 19.11.2019 20:35:26 cmd_2_2 Motion_Kitchen
2019-11-19 20:33:27.471 DOIF di_Kuechenlicht wait_timer: no timer
2019-11-19 20:33:27.474 DOIF di_Kuechenlicht wait_timer: 19.11.2019 20:35:27 cmd_2_2 Motion_Kitchen
2019-11-19 20:33:49.539 DOIF di_Kuechenlicht wait_timer: no timer
2019-11-19 20:33:49.542 DOIF di_Kuechenlicht wait_timer: 19.11.2019 20:35:49 cmd_2_2 Motion_Kitchen
2019-11-19 20:35:49.767 DOIF di_Kuechenlicht wait_timer: no timer
2019-11-19 20:35:49.773 DOIF di_Kuechenlicht cmd_nr: 2
2019-11-19 20:35:49.773 DOIF di_Kuechenlicht cmd_seqnr: 2
2019-11-19 20:35:49.773 DOIF di_Kuechenlicht cmd: 2.2
2019-11-19 20:35:49.773 DOIF di_Kuechenlicht cmd_event: Motion_Kitchen
2019-11-19 20:35:49.773 DOIF di_Kuechenlicht cmd_2


2. Der Bewegungsmelder im gleichen Zeitraum:


2019-11-19 20:31:51.117 HOMEMODE Home prevMotionClosed: Motion_Kitchen
2019-11-19 20:31:51.117 HOMEMODE Home lastMotionClosed: Motion_Kitchen
2019-11-19 20:31:51.119 HUEDevice Motion_Kitchen motion
2019-11-19 20:33:26.455 DOIF di_Kuechenlicht wait_timer: 19.11.2019 20:35:26 cmd_2_2 Motion_Kitchen
2019-11-19 20:33:26.459 HOMEMODE Home prevMotionClosed: Motion_Kitchen
2019-11-19 20:33:26.459 HOMEMODE Home lastMotionClosed: Motion_Kitchen
2019-11-19 20:33:26.462 HUEDevice Motion_Kitchen nomotion
2019-11-19 20:33:27.475 DOIF di_Kuechenlicht wait_timer: 19.11.2019 20:35:27 cmd_2_2 Motion_Kitchen
2019-11-19 20:33:27.480 HOMEMODE Home prevMotionClosed: Motion_Kitchen
2019-11-19 20:33:27.480 HOMEMODE Home lastMotionClosed: Motion_Kitchen
2019-11-19 20:33:27.483 HUEDevice Motion_Kitchen motion
2019-11-19 20:33:49.543 DOIF di_Kuechenlicht wait_timer: 19.11.2019 20:35:49 cmd_2_2 Motion_Kitchen
2019-11-19 20:33:49.548 HOMEMODE Home prevMotionClosed: Motion_Kitchen
2019-11-19 20:33:49.548 HOMEMODE Home lastMotionClosed: Motion_Kitchen
2019-11-19 20:33:49.551 HUEDevice Motion_Kitchen nomotion
2019-11-19 20:35:49.773 DOIF di_Kuechenlicht cmd_event: Motion_Kitchen


amenomade

ZitatJetzt sendet der BM erst wieder ein "motion" nachdem er einmal ein "nomotion" gesendet hat (nach ca. 10 sec). Danach kommt sofort nach Bewegung wieder ein "motion". Also Möglichkeit 1 klappt leider nicht, denn wenn ich mich 2 min ununterbrochen bewege, geht das Licht aus.

Das Entfernen von event-on-change-reading sollte nur die Anzahl Events erhöhen, und erlauben, dass, wenn dein Bewegungsmelder so funktioniert, die wiederkehrende "motion" Aktualisierungen auch Events generieren, die das DOIF triggern können.

Wenn dein Bewegungsmelder aber nur einmal "motion" sendet und dann gar nichts mehr bis "nomotion":
- war es schon auch so, egal event-on-change-reading
- bleibt nur die zweite Möglichkeit: statt
DOIF (motion)
(on)(off) mit wait zwischen on und off,
eher
DOIF (motion) (on)
DOELSEIF (nomotion) (off) mit Timer
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

wolfram

#11
DANKE! @per & @damian

@Damian: Über den Thread bin ich tatsächlich schonmal gestolpert, aber nicht "wahrgenommen"/verstanden - ist genau mein Problem.

Ich teste und löse auf.

wolf

ERGEBNIS:

das "?" im RegEx war es: Nicht das Event, sondern den Zustand abfragen. Danke, das ist für einen aus "der anderen Welt" manchmal nicht klar. Jetzt schon, dank dieses tollen Forums!

wolf