FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: jay-jey am 28 September 2017, 16:53:35

Titel: Warnung vor offenem Fenster bei offener Wohnungstür
Beitrag von: jay-jey am 28 September 2017, 16:53:35
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:
Titel: Antw:Warnung vor offenem Fenster bei offener Wohnungstür
Beitrag von: CoolTux am 28 September 2017, 17:04:20
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)
Titel: Antw:Warnung vor offenem Fenster bei offener Wohnungstür
Beitrag von: jay-jey am 28 September 2017, 17:36:21
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 ":" ?
Titel: Antw:Warnung vor offenem Fenster bei offener Wohnungstür
Beitrag von: CoolTux am 28 September 2017, 17:45:30
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.