Bei einem kleinen Testcode ist mir aufgefallen:
defmod DI_Kueche_anwesend DOIF ([Tuer_Kueche:"closed"] )\
(IF ([BM_Kueche] eq "motion") (say "jemand in Küche", set DU_Kueche_Dauerlicht on))\
attr DI_Kueche_anwesend do always
attr DI_Kueche_anwesend room Wohnung->Küche
attr DI_Kueche_anwesend wait 30
Wenn hier versehentlich ein Semikolon eingegeben wird, startet fhem sofort neu:
(say "jemand in Küche"; set DU_Kueche_Dauerlicht on)
Vielleicht kann man das ja auch eleganter lösen.
Ich will eigentlich dass ein Dummy geschaltet wird, wenn zweimal oder öfter innerhalb von 30 Sekunden nach dem Türschliessen eine Bewegung erfolgt. Der Bewegungsmelder erzeugt alle 15 Sekunden ein Event. Ist halt bei Homematic etwas kompliziert.
Bei mir funktioniert alles wie programmiert ohne irgendwelche Abstürze. Es gibt natürlich eine Fehlermeldung beim Semikolon. Vermutlich hängt es mit dem say-Befehl zusammen, den ich nicht benutzt habe.
ZitatCFGFN
DEF ([bla:"test4"] )
(IF ([bla]) (set test 1; set test 2))
FUUID 63ad67fa-f33f-c0d4-a45f-6eb6aa7af8a143fa
MODEL FHEM
NAME DI_Kueche_anwesend
NOTIFYDEV global,bla
NR 227
NTFY_ORDER 50-DI_Kueche_anwesend
STATE cmd_1
TYPE DOIF
VERSION 26909 2022-12-27 15:21:12
READINGS:
2022-12-29 11:16:31 cmd 1
2022-12-29 11:16:31 cmd_event set_cmd_1
2022-12-29 11:16:31 cmd_nr 1
2022-12-29 11:16:31 error IF ([bla]) (set test 1; set test 2): IF: no right bracket: (set test 1
2022-12-29 11:16:09 mode enabled
2022-12-29 11:16:31 state cmd_1
Regex:
accu:
bars:
collect:
cond:
bla:
0:
&STATE ^bla$
attr:
cmdState:
wait:
0:
30
condition:
0 ::EventDoIf('bla',$hash,'test4',1)
do:
0:
0 IF ([bla]) (set test 1; set test 2)
1:
helper:
NOTIFYDEV global,bla
globalinit 1
last_timer 0
sleeptimer -1
trigger:
all bla
uiState:
uiTable:
Attributes:
do always
room Wohnung->Küche
wait 30
OK, danke. Eine Fehlermeldung habe ich nicht. Es handelt sich um einen cmdAlias. Seltsam.