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
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.
Ja, perfekt l. Das sollte passen. Danke dir 👍🏻
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.
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 ?
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.