Hallo,
habe ein DOIF, mit welchem ich nach Betätigen der Klingel (oben oder unten) das Licht für 120 Sekunden einschalte.
Wenn die Klingel jetzt z.B. 2x betätigt wird, bleibt das Licht dann für 240 Sekunden ein?
Es ist nämlich so, dass das Licht manchmal nicht mehr ausgeht.
Bzw. wenn durch die Kinder die Klingel 10x und mehr betätigt wird, sich die Zeit dementsprechend verlängert.
Hier das DOIF:
Internals:
DEF ([KLINGELSENSOR_OG:"closed"] or [HUESensor58:"closed"]) (set HUEDevice24 on-for-timer 120)
FUUID 60a95af8-f33f-f59f-27b2-c244c8f8ba8bf344
MODEL FHEM
NAME KLINGEL_LICHT
NOTIFYDEV KLINGELSENSOR_OG,HUESensor58,global
NR 144
NTFY_ORDER 50-KLINGEL_LICHT
STATE cmd_1
TYPE DOIF
VERSION 27190 2023-02-07 19:11:02
eventCount 23
Helper:
DBLOG:
state:
DbLog:
TIME 1680783898.88276
VALUE cmd_1
READINGS:
2023-04-06 14:24:58 Device KLINGELSENSOR_OG
2023-04-06 14:24:58 cmd 1
2023-04-06 14:24:58 cmd_event KLINGELSENSOR_OG
2023-04-06 14:24:58 cmd_nr 1
2023-04-06 14:24:57 e_HUESensor58_events open
2023-04-06 14:24:58 e_KLINGELSENSOR_OG_events open
2021-05-22 21:51:32 mode enabled
2023-04-06 14:24:58 state cmd_1
Regex:
accu:
bar:
collect:
cond:
HUESensor58:
0:
&STATE ^HUESensor58$
KLINGELSENSOR_OG:
0:
&STATE ^KLINGELSENSOR_OG$
attr:
cmdState:
wait:
waitdel:
condition:
0 ::EventDoIf('KLINGELSENSOR_OG',$hash,'closed',1) or ::EventDoIf('HUESensor58',$hash,'closed',1)
do:
0:
0 set HUEDevice24 on-for-timer 120
1:
helper:
NOTIFYDEV KLINGELSENSOR_OG,HUESensor58,global
event open
globalinit 1
last_timer 0
sleeptimer -1
timerdev KLINGELSENSOR_OG
timerevent closed
triggerDev KLINGELSENSOR_OG
bm:
DOIF_Get:
cnt 1
dmx -1000
dtot 0
dtotcnt 0
mTS 06.04. 16:11:08
max 3.00407409667969e-05
tot 3.00407409667969e-05
mAr:
HASH(0x4648578)
KLINGEL_LICHT
?
DOIF_Notify:
cnt 54
dmx -1000
dtot 0
dtotcnt 0
mTS 04.04. 15:02:06
max 0.0181288719177246
tot 0.324151992797852
mAr:
HASH(0x4648578)
HASH(0x463aa48)
DOIF_Set:
cnt 9
dmx -1000
dtot 0
dtotcnt 0
mTS 06.04. 16:10:45
max 0.000198125839233398
tot 0.00111246109008789
mAr:
HASH(0x4648578)
KLINGEL_LICHT
?
timerevents:
closed
timereventsState:
state: closed
triggerEvents:
open
triggerEventsState:
state: open
internals:
perlblock:
readings:
trigger:
all KLINGELSENSOR_OG HUESensor58
uiState:
uiTable:
Attributes:
do always
room AMAD,Alarm,Aussen
Vielen Dank
Grüße
Ruggy
Normalerweise verlängert sich on-for-timer nicht, sondern wird neu gesetzt.
Alternativ kann man einen on-for-timer mit DOIF nachbilden:
https://fhem.de/commandref_DE.html#DOIF_Weitere_Anwendungsbeispiele
Schon mal probiert, den Command Teil direkt auszuführen? Tritt der Fehler dann auch auf? Falls ja, ist DOIf recht unschuldig ;)
@Per
Habe jetzt den Command Teil direkt ausgeführt.
DOIF ist anscheinend unschuldig.
Wie @Damian schon geschrieben hat, wird der Timer neu gesetzt, wenn ich den Command Teil neu ausführe.
Dann muß es an etwas anderen liegen, dass es manchmal nicht ausschaltet.
Ich kann es leider nicht nachstellen, weil es meistens funktioniert und der Event monitor dann nicht mit gelaufen ist.