DOIF will nicht so wie ich will

Begonnen von PsychoD, 25 Dezember 2016, 22:06:57

Vorheriges Thema - Nächstes Thema

PsychoD

Hallo,

ich möchte gern Geofancy mit Residents und Presence zusammen benutzen. Ich scheitere aber schon daran Geofancy über DOIF mit Residents zu verbinden. Es wird immer nur auf "Zuhause" getriggert. Warum nur ?

VG
Psy

DEF:
([geofancy:currLoc_iPhone-B] eq "Zuhause")
(set rr_B home)
DOELSEIF ([geofancy:?currLoc_iPhone-B] eq "underway")
(set rr_B absent)


list:
Internals:
   DEF        ([geofancy:currLoc_iPhone-B] eq "Zuhause")
(set rr_B home)
DOELSEIF ([geofancy:?currLoc_iPhone-B] eq "underway")
(set rr_B absent)
   NAME       di_gf_B
   NR         127
   NTFY_ORDER 50-di_gf_B
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2016-12-25 21:40:57   Device          geofancy
     2016-12-25 21:40:57   cmd             1
     2016-12-25 21:40:57   cmd_event       geofancy
     2016-12-25 21:40:57   cmd_nr          1
     2016-12-25 21:40:57   e_geofancy_currLoc_iPhone-B Zuhause
     2016-12-25 21:40:57   e_geofancy_events currLoc_iPhone-B:underway
     2016-12-25 21:40:57   state           cmd_1
   Condition:
     0          ReadingValDoIf($hash,'geofancy','currLoc_iPhone-B') eq "Zuhause"
     1          EventDoIf('geofancy',$hash,'currLoc_iPhone-B',1) eq "underway"
   Devices:
     0           geofancy
     1           geofancy
     all         geofancy
   Do:
     0:
       0          set rr_B home
     1:
       0          set rr_B absent
   Helper:
     globalinit 1
     last_timer 0
     sleeptimer -1
   Itimer:
   Readings:
     0           geofancy:currLoc_iPhone-B
     all         geofancy:currLoc_iPhone-B
   Regexp:
     All:
   State:
   Trigger:
     all         geofancy
Attributes:
   do         always

Damian

Zitat von: PsychoD am 25 Dezember 2016, 22:06:57
Hallo,

ich möchte gern Geofancy mit Residents und Presence zusammen benutzen. Ich scheitere aber schon daran Geofancy über DOIF mit Residents zu verbinden. Es wird immer nur auf "Zuhause" getriggert. Warum nur ?

VG
Psy

DEF:
([geofancy:currLoc_iPhone-B] eq "Zuhause")
(set rr_B home)
DOELSEIF ([geofancy:?currLoc_iPhone-B] eq "underway")
(set rr_B absent)


list:
Internals:
   DEF        ([geofancy:currLoc_iPhone-B] eq "Zuhause")
(set rr_B home)
DOELSEIF ([geofancy:?currLoc_iPhone-B] eq "underway")
(set rr_B absent)
   NAME       di_gf_B
   NR         127
   NTFY_ORDER 50-di_gf_B
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2016-12-25 21:40:57   Device          geofancy
     2016-12-25 21:40:57   cmd             1
     2016-12-25 21:40:57   cmd_event       geofancy
     2016-12-25 21:40:57   cmd_nr          1
     2016-12-25 21:40:57   e_geofancy_currLoc_iPhone-B Zuhause
     2016-12-25 21:40:57   e_geofancy_events currLoc_iPhone-B:underway
     2016-12-25 21:40:57   state           cmd_1
   Condition:
     0          ReadingValDoIf($hash,'geofancy','currLoc_iPhone-B') eq "Zuhause"
     1          EventDoIf('geofancy',$hash,'currLoc_iPhone-B',1) eq "underway"
   Devices:
     0           geofancy
     1           geofancy
     all         geofancy
   Do:
     0:
       0          set rr_B home
     1:
       0          set rr_B absent
   Helper:
     globalinit 1
     last_timer 0
     sleeptimer -1
   Itimer:
   Readings:
     0           geofancy:currLoc_iPhone-B
     all         geofancy:currLoc_iPhone-B
   Regexp:
     All:
   State:
   Trigger:
     all         geofancy
Attributes:
   do         always


Was willst du mit [geofancy:?currLoc_iPhone-B] bezwecken?

entweder [geofancy:currLoc_iPhone-B] oder [?geofancy:currLoc_iPhone-B] (Reading ohne Trigger) angeben.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

PsychoD

Hallo,

Danke für die schnelle Antwort!

Das ? ist war ein versehen, ich hab einfach alles Probiert. Es siegt eigentlich so aus:


(["geofancy:currLoc_iPhone-B"] eq "Zuhause")
(set rr_B home)
DOELSEIF (["geofancy:currLoc_iPhone-B"] eq "underway")
(set rr_B absent)

Damian

Zitat von: PsychoD am 25 Dezember 2016, 22:21:15
Hallo,

Danke für die schnelle Antwort!

Das ? ist war ein versehen, ich hab einfach alles Probiert. Es siegt eigentlich so aus:


(["geofancy:currLoc_iPhone-B"] eq "Zuhause")
(set rr_B home)
DOELSEIF (["geofancy:currLoc_iPhone-B"] eq "underway")
(set rr_B absent)


Es sollen doch Readings sein. Warum dann Anführungszeichen?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

PsychoD

Leider funktioniert es so auch nicht:

DEF
([geofancy:currLoc_iPhone-B] eq "Zuhause")
(set rr_B home)
DOELSEIF ([geofancy:currLoc_iPhone-B] eq "underway")
(set rr_B absent)


Beide trigger führen das erste cmd aus :(

Damian

#5
Zitat von: PsychoD am 25 Dezember 2016, 22:26:36
Leider funktioniert es so auch nicht:

DEF
([geofancy:currLoc_iPhone-B] eq "Zuhause")
(set rr_B home)
DOELSEIF ([geofancy:currLoc_iPhone-B] eq "underway")
(set rr_B absent)


Beide trigger führen das erste cmd aus :(
Das liegt daran, dass es sich hier um das gleiche Device handelt und es kommt in beiden Bedingungen vor.

Es sollte mit dem Attribut checkReadingEvent funktionierten: http://fhem.de/commandref_DE.html#DOIF_checkReadingEvent

Edit: Ich sehe gerade, dass es auch das gleiche Reading ist - da stimmt was nicht. Poste list von deinem "fehlerhaften" Verhalten.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

PsychoD

Kein Problem:

Internals:
   DEF        ([geofancy:currLoc_iPhone-B] eq "Zuhause")
  (set rr_B home)
DOELSEIF ([geofancy:currLoc_iPhone-B] eq "underway")
  (set rr_B absent)
   NAME       di_gf_B
   NR         127
   NTFY_ORDER 50-di_gf_B
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2016-12-25 22:39:19   Device          geofancy
     2016-12-25 22:39:19   cmd             1
     2016-12-25 22:39:19   cmd_event       geofancy
     2016-12-25 22:39:19   cmd_nr          1
     2016-12-25 22:39:19   e_geofancy_currLoc_iPhone-B Zuhause
     2016-12-25 22:39:19   state           cmd_1
   Condition:
     0          ReadingValDoIf($hash,'geofancy','currLoc_iPhone-B') eq "Zuhause"
     1          ReadingValDoIf($hash,'geofancy','currLoc_iPhone-B') eq "underway"
   Devices:
     0           geofancy
     1           geofancy
     all         geofancy
   Do:
     0:
       0          set rr_B home
     1:
       0          set rr_B absent
   Helper:
     event      currLoc_iPhone-B:Zuhause
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   geofancy
     timerevent currLoc_iPhone-B:Zuhause
     triggerDev geofancy
     timerevents:
       currLoc_iPhone-B:Zuhause
     timereventsState:
       currLoc_iPhone-B:Zuhause
     triggerEvents:
       currLoc_iPhone-B:Zuhause
     triggerEventsState:
       currLoc_iPhone-B:Zuhause
   Internals:
   Itimer:
   Readings:
     0           geofancy:currLoc_iPhone-B
     1           geofancy:currLoc_iPhone-B
     all         geofancy:currLoc_iPhone-B
   Regexp:
     0:
     All:
   State:
   Trigger:
Attributes:
   do         always

Damian

2016-12-25 22:39:19   e_geofancy_currLoc_iPhone-B Zuhause

ich kann keinen "underway"-Trigger erkennen
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

PsychoD

Sorry, wollte beide posten. Hier das "underway":


Internals:
   DEF        ([geofancy:currLoc_iPhone-B] eq "Zuhause")
  (set rr_B home)
DOELSEIF ([geofancy:currLoc_iPhone-B] eq "underway")
  (set rr_B absent)
   NAME       di_gf_B
   NR         127
   NTFY_ORDER 50-di_gf_B
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2016-12-25 22:43:44   Device          geofancy
     2016-12-25 22:43:44   cmd             1
     2016-12-25 22:43:44   cmd_event       geofancy
     2016-12-25 22:43:44   cmd_nr          1
     2016-12-25 22:43:44   e_geofancy_currLoc_iPhone-B Zuhause
     2016-12-25 22:43:44   state           cmd_1
   Condition:
     0          ReadingValDoIf($hash,'geofancy','currLoc_iPhone-B') eq "Zuhause"
     1          ReadingValDoIf($hash,'geofancy','currLoc_iPhone-B') eq "underway"
   Devices:
     0           geofancy
     1           geofancy
     all         geofancy
   Do:
     0:
       0          set rr_B home
     1:
       0          set rr_B absent
   Helper:
     event      currLoc_iPhone-B:underway
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   geofancy
     timerevent currLoc_iPhone-B:underway
     triggerDev geofancy
     timerevents:
       currLoc_iPhone-B:underway
     timereventsState:
       currLoc_iPhone-B:underway
     triggerEvents:
       currLoc_iPhone-B:underway
     triggerEventsState:
       currLoc_iPhone-B:underway
   Internals:
   Itimer:
   Readings:
     0           geofancy:currLoc_iPhone-B
     1           geofancy:currLoc_iPhone-B
     all         geofancy:currLoc_iPhone-B
   Regexp:
     0:
     All:
   State:
   Trigger:
Attributes:
   do         always


Oder mache ich mit dem Trigger was falsch?

trigger geofancy currLoc_iPhone-B:underway

Damian

Du musst zwischen Triggern und Readings unterscheiden. Mit dem Trigger weckst du zwar das Modul auf, aber das abgefragte Reading steht ja immer noch auf "Zuhause".

Wenn du Reading-Abfragen testen willst dann, musst du auch Readings setzen, z. B. mit  setreading ...
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

PsychoD

Oh, ok. Das war mir neu. Danke für den Tipp! Mit Setreading klappt's! :)