Hallo,
irgendwie komme ich nicht weiter. Ich würde mich gerne warnen lassen wenn die Wohnungstür offen ist und eines der Fenster oder die Balkontür. Dazu soll meine Fritzbox das Telefon einmal klingeln lassen.
Ich dachte mir das kann ja nicht so schwer sein und hab mal ein doif mit folgendem code gemacht (zum Testen mit der Balkontür und nicht Wohnungstür):
([Fenster_WZ:"open"] && [Balkon_Tuer:"open"]) (set FritzBox ring 610 1)
aber irgendwie funktioniert es nicht, es wird nicht ausgelöst. Das Fritzbox ring 610 1 funktioniert wenn ich es in die Befehlszeile eingebe. Da ich noch nicht so bewandert mit dem doif bin wollte ich mal fragen wo mein Fehler liegt und wie ihr bei dem debuggen eines doifs vorgeht?
hier noch ein list vom doif
Internals:
CFGFN
DEF ([Fenster_WZ:"open"] && [Balkon_Tuer:"open"]) (set FritzBox ring 610 1)
NAME Warnung_Fenster_offen
NR 562565
NTFY_ORDER 50-Warnung_Fenster_offen
STATE cmd_2
TYPE DOIF
Readings:
2017-09-28 15:54:52 Device Fenster_WZ
2017-09-22 08:05:44 cmd 2
2017-09-22 08:05:44 cmd_event Balkon_Tuer
2017-09-22 08:05:44 cmd_nr 2
2017-09-28 09:25:10 e_Balkon_Tuer_events battery: ok,contact: closed (to nanoCUL866),closed,trigDst_F11234: noConfig,trigger_cnt: 115
2017-09-28 15:54:52 e_Fenster_WZ_events alive: yes,battery: ok,contact: closed (to broadcast),sabotageError: off,closed
2017-09-22 08:05:44 state cmd_2
Condition:
0 EventDoIf('Fenster_WZ',$hash,'open',1) && EventDoIf('Balkon_Tuer',$hash,'open',1)
Devices:
0 Fenster_WZ Balkon_Tuer
all Fenster_WZ Balkon_Tuer
Do:
0:
0 set FritzBox ring 610 1
1:
Helper:
event alive: yes,battery: ok,contact: closed (to broadcast),sabotageError: off,closed
globalinit 1
last_timer 0
sleeptimer -1
timerdev Fenster_WZ
timerevent alive: yes,battery: ok,contact: closed (to broadcast),sabotageError: off,closed
triggerDev Fenster_WZ
timerevents:
alive: yes
battery: ok
contact: closed (to broadcast)
sabotageError: off
closed
timereventsState:
alive: yes
battery: ok
contact: closed (to broadcast)
sabotageError: off
state: closed
triggerEvents:
alive: yes
battery: ok
contact: closed (to broadcast)
sabotageError: off
closed
triggerEventsState:
alive: yes
battery: ok
contact: closed (to broadcast)
sabotageError: off
state: closed
Internals:
Itimer:
Readings:
Regexp:
0:
All:
State:
Trigger:
all Fenster_WZ Balkon_Tuer
Attributes:
Kann ja auch nicht. Du arbeitest mit Events und es kann nicht gleichzeitig ein Event von der Tür und dem Fenster kommen
([Balkon_Tuer:"open"] and [?Fenster_WZ] eq "open") (set FritzBox ring 610 1)
Okay danke, für die Korrektur, werde ich später mal ausprobieren wenn ich zu Hause bin.
Nur dann mal kurz, also hätten in meinem Code beide Events gleichzeitig auslösen müssen, okay dass kann wirklich nicht sein. Deshalb muss ich das eine als Abfrage mit dem ? versehen. Hab ich gerade erst herausgefunden. Aber ich hätte noch zwei Fragen:
Warum muss ich ein "and" und kein "&&" benutzen?
Warum muss ich ein eq "open" benutzen und nicht einfach nur den ":" ?
and oder && ist das selbe. Ich schreibe lieber näher an der Humansprache daher and
Balkon_Tuer:"open" bedeutet soll auf das Event reagieren
[?Fenster_WZ] eq "open" soll Abfragen
Schau mal in die Commandref da steht das gut beschrieben.