doif Frage wie stelle ich das am besten an ?

Begonnen von Kellerkind86, 16 Oktober 2021, 23:55:05

Vorheriges Thema - Nächstes Thema

Kellerkind86

Hallo,
Ich mal wieder...
ich habe ein doif..
mit einer ip cam schalte ich das Haustür licht an bei bewegung..
alles soweit gut.
ich hab aber immer mal wieder das problem,dass durch das licht anscheinend wieder eine bewegung erkannt wird. wie kann ich es anstellen dass dann keine aktion statt findet.. damit ich kein kreislauf habe..
aktion unterbrechen kann ich ja in dem sinne ja nicht, weil wenn jemand lönger an der haustür steht die lampe nach 60 sek kurz ausgehen würde und dann wieder an... aber wenn es nicht besser geht, würde ich das so hinnehmen.

vielleicht gibt es ja noch ne andere idee.

Internals:
   DEF        ([EG_Lampe_Haustuer:"onFromCam"] and [?Tageslicht] eq "dunkel" )(set EG_Lampe_Haustuer on)
DOELSE (set EG_Lampe_Haustuer off)
   FUUID      613bc97e-f33f-153e-8ef2-9785f42f0815f2f3
   MODEL      FHEM
   NAME       Haustuerlicht_an
   NOTIFYDEV  global,EG_Lampe_Haustuer
   NR         78
   NTFY_ORDER 50-Haustuerlicht_an
   STATE      cmd_2
   TYPE       DOIF
   VERSION    24905 2021-09-01 18:35:54
   READINGS:
     2021-10-16 23:54:21   Device          EG_Lampe_Haustuer
     2021-10-16 23:54:21   cmd             2
     2021-10-16 23:54:21   cmd_event       EG_Lampe_Haustuer
     2021-10-16 23:54:21   cmd_nr          2
     2021-10-16 23:54:21   e_EG_Lampe_Haustuer_events off
     2021-10-13 21:13:58   mode            enabled
     2021-10-16 23:54:21   state           cmd_2
     2021-10-16 23:54:21   wait_timer      16.10.2021 23:55:21 cmd_2 EG_Lampe_Haustuer
   Regex:
     accu:
     collect:
     cond:
       EG_Lampe_Haustuer:
         0:
           &STATE     ^EG_Lampe_Haustuer$
   attr:
     cmdState:
     wait:
       0:
         0
       1:
         60
     waitdel:
   condition:
     0          ::EventDoIf('EG_Lampe_Haustuer',$hash,'onFromCam',1) and ::InternalDoIf($hash,'Tageslicht','STATE') eq "dunkel"
   do:
     0:
       0          set EG_Lampe_Haustuer on
     1:
       0          set EG_Lampe_Haustuer off
   helper:
     DEVFILTER  ^global$|^EG_Lampe_Haustuer$
     NOTIFYDEV  global|EG_Lampe_Haustuer
     event      off
     globalinit 1
     last_timer 0
     sleepdevice EG_Lampe_Haustuer
     sleepsubtimer 0
     sleeptimer 1
     timerdev   EG_Lampe_Haustuer
     timerevent off
     triggerDev EG_Lampe_Haustuer
     timerevents:
       off
     timereventsState:
       state: off
     triggerEvents:
       off
     triggerEventsState:
       state: off
   internals:
     all         Tageslicht:STATE
   perlblock:
   readings:
   trigger:
     all         EG_Lampe_Haustuer
   uiState:
   uiTable:
Attributes:
   do         resetwait
   room       Logik
   wait       0:60


danke
Hardware in Nutzung: Fritzbox7490,RP4,nanoCUL868,sonoff(mini),shelly(2.5)

Damian

#1
ich würde es anders machen:

DOIF ([EG_Lampe_Haustuer:"onFromCam"] and ([?Tageslicht] eq "dunkel" or $cmd == 1.1 )(set EG_Lampe_Haustuer on)(set EG_Lampe_Haustuer off)

attr do resetwait
attr wait 0,60


bedeutet: Befehlssequenz (on, off) wird getriggert bei Bewegung und bei Dunkelheit oder wenn Lampe bereits eingeschaltet wurde (cmd_1_1). Durch do resetwait wird der "on-Befehl" nicht wiederholt und der Timer zum Ausschalten (hier 60 Sekunden) auf weitere 60 Sekunden zurückgesetzt.

Edit: Wenn Tageslicht auf "dunkel" bleibt, wenn die Lampe eingeschaltet wird, dann kann man "or $cmd == 1.1" weglassen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Kellerkind86

#2
Ja, perfekt l. Das sollte passen. Danke dir 👍🏻
Hardware in Nutzung: Fritzbox7490,RP4,nanoCUL868,sonoff(mini),shelly(2.5)

Damian

Zitat von: Kellerkind86 am 17 Oktober 2021, 09:35:03
Ja, perfekt l. Das sollte passen. Danke dir 👍🏻

siehe meine Edit-Ergänzung:

ZitatWenn Tageslicht auf "dunkel" bleibt, wenn die Lampe eingeschaltet wird, dann kann man "or $cmd == 1.1" weglassen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Kellerkind86

#4
okay, also quasi so:
([EG_Lampe_Haustuer:"onFromCam"] and ([?Tageslicht] eq "dunkel" ))(set EG_Lampe_Haustuer on)(set EG_Lampe_Haustuer off)
nur eben ohne doelse, richtig ?
Hardware in Nutzung: Fritzbox7490,RP4,nanoCUL868,sonoff(mini),shelly(2.5)

Damian

Zitat von: Kellerkind86 am 17 Oktober 2021, 11:30:41
okay, also quasi so:
([EG_Lampe_Haustuer:"onFromCam"] and ([?Tageslicht] eq "dunkel" ))(set EG_Lampe_Haustuer on)(set EG_Lampe_Haustuer off)
nur eben ohne doelse, richtig ?
ja, die runden Klammern um den eq-Vergleich kannst du weglassen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF