Autor Thema: doif Frage wie stelle ich das am besten an ?  (Gelesen 440 mal)

Offline Kellerkind86

  • Full Member
  • ***
  • Beiträge: 440
doif Frage wie stelle ich das am besten an ?
« am: 16 Oktober 2021, 23:55:05 »
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)

Online Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8827
Antw:doif Frage wie stelle ich das am besten an ?
« Antwort #1 am: 17 Oktober 2021, 09:28:32 »
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.
« Letzte Änderung: 17 Oktober 2021, 09:37:20 von Damian »
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Offline Kellerkind86

  • Full Member
  • ***
  • Beiträge: 440
Antw:doif Frage wie stelle ich das am besten an ?
« Antwort #2 am: 17 Oktober 2021, 09:35:03 »
Ja, perfekt l. Das sollte passen. Danke dir 👍🏻
« Letzte Änderung: 17 Oktober 2021, 09:39:30 von Damian »
Hardware in Nutzung: Fritzbox7490,RP4,nanoCUL868,sonoff(mini),shelly(2.5)

Online Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8827
Antw:doif Frage wie stelle ich das am besten an ?
« Antwort #3 am: 17 Oktober 2021, 09:39:51 »
Ja, perfekt l. Das sollte passen. Danke dir 👍🏻

siehe meine Edit-Ergänzung:

Zitat
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
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Kellerkind86

  • Full Member
  • ***
  • Beiträge: 440
Antw:doif Frage wie stelle ich das am besten an ?
« Antwort #4 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 ?
« Letzte Änderung: 17 Oktober 2021, 11:32:42 von Kellerkind86 »
Hardware in Nutzung: Fritzbox7490,RP4,nanoCUL868,sonoff(mini),shelly(2.5)

Online Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8827
Antw:doif Frage wie stelle ich das am besten an ?
« Antwort #5 am: 18 Oktober 2021, 10:10:40 »
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
Gefällt mir Gefällt mir x 1 Liste anzeigen