Ich habe heute begonnen mich mit dem RESIDENT Modul auseinander zu setzen, da ich davor immer mit Dummys gearbeitet habe. Die Anwesenheit wird bei uns auf zwei Arten überwacht:
- Geofancy bzw. Locativ App auf den Handys
- Schalter an der Haustür, mit Knopf für jede Person, welcher die Anwesenheit eines Dummy für jede Person wechselt
Nun hätte ich gerne, dass das ROOMMATE Device erst auf absent/present wechselt, wenn beide absent/present sagen. Also sowohl über das Geofancy Modul, als auch über den Schalter. Zuständig dafür ist, wenn ich es richtig verstanden habe, das Attr rr_presenceDevices. Hier habe ich nun den Dummy eingesetzt. Geofancy ist ja direkt über das Attr rr_geofenceUUIDs eingebunden. Aber es scheint nicht zu prüfen, ob beide Device den gleichen Status haben. Wie muss ich das einstellen?
List ROOMMATE:
Internals: 
   CFGFN 
   DEF        rgr_Zuhause 
   DURATIONTIMER 1491127508.92396 
   NAME       rr_Etienne 
   NR         29250 
   NTFY_ORDER 50-rr_Etienne 
   RESIDENTGROUPS rgr_Zuhause 
   STATE      home 
   TYPE       ROOMMATE 
   Readings: 
     2017-04-02 11:13:50   durTimerAbsence 00:00:00 
     2017-04-02 11:13:50   durTimerAbsence_cr 0 
     2017-04-02 12:04:08   durTimerPresence 00:40:00 
     2017-04-02 12:04:08   durTimerPresence_cr 40 
     2017-04-02 11:13:50   durTimerSleep   00:00:00 
     2017-04-02 11:13:50   durTimerSleep_cr 0 
     2017-04-02 11:24:08   lastArrival     2017-04-02 11:24:08 
     2017-04-02 11:24:07   lastDeparture   2017-04-02 11:24:07 
     2017-04-02 11:24:08   lastDurAbsence  00:00:01 
     2017-04-02 11:24:08   lastDurAbsence_cr 0 
     2017-04-02 11:24:07   lastDurPresence 00:00:03 
     2017-04-02 11:24:07   lastDurPresence_cr 0 
     2017-04-02 11:57:22   lastLocation    TestGeoZone 
     2017-04-02 11:57:22   lastLocationAddr - 
     2017-04-02 11:57:22   lastLocationLat 50.3309722 
     2017-04-02 11:57:22   lastLocationLong 8.7259753 
     2017-04-02 11:24:07   lastMood        calm 
     2017-04-02 11:24:08   lastState       absent 
     2017-04-02 11:57:22   location        Home 
     2017-04-02 11:57:22   locationAddr    - 
     2017-04-02 11:57:22   locationLat     xxxxxxxxxxxxx
     2017-04-02 11:57:22   locationLong    xxxxxxxxxx
     2017-04-02 11:57:22   locationPresence present 
     2017-04-02 11:24:08   mood            calm 
     2017-04-02 11:24:08   presence        present 
     2017-04-02 11:24:08   state           home 
     2017-04-02 11:13:50   wayhome         0 
   Timer: 
     Rr_etienne_durationtimer: 
       HASH       rr_Etienne 
       MODIFIER   DurationTimer 
       NAME       rr_Etienne_DurationTimer 
Attributes: 
   alias      Status 
   comment    Auto-created by rgr_Zuhause 
   devStateIcon .*home:user_available:absent .*absent:user_away:home .*gone:user_ext_away:home .*gotosleep:scene_toilet:asleep .*asleep:scene_sleeping:awoken .*awoken:scene_sleeping_alternat:home .*:user_unknown:home 
   group      Etienne 
   icon       people_sensor 
   room       Residents 
   rr_geofenceUUIDs ab0d3678-xxxxxxxxxxxxxxx 
   rr_locationHome Home 
   rr_presenceDevices AE.Dummy.Etienne 
   rr_realname group 
   sortby     1 
   webCmd     state 
List Dummy
Internals: 
   CFGFN 
   NAME       AE.Dummy.Etienne 
   NR         29335 
   STATE      away 
   TYPE       dummy 
   Readings: 
     2017-04-02 11:55:54   state           away 
Attributes: 
   devStateIcon present:user_available absent:user_away 
   group      Anwesenheit 
   room       S_SystemDummys 
Ist das überhaupt direkt möglich, oder muss ich mir quasi einen Umweg über einen Dummy bauen, welcher dann nur für RESIDENT entscheidend sein wird?
			
			
			
				Zitat von: Amenophis86 am 02 April 2017, 12:06:15
Aber es scheint nicht zu prüfen, ob beide Device den gleichen Status haben. Wie muss ich das einstellen?
Für eine reine und-Verknüpfung empfehle ich ein notify oder DOIF anzulegen statt der Verwendung des Attributes rr_presenceDevices.
Das Attribut rr_presenceDevices hat das Ziel Bewohner erst dann als abwesend anzuzeigen, wenn alle daran beteiligten Geräte dies ebenfalls sind (also genau das, was du möchtest).
So soll vermieden werden, dass bei einem Fehler bei einem der rr_presenceDevices Devices dies direkte Auswirkungen aus den Anwesenheitsstatus hat und man ggf. im dunkeln sitzt, weil die Lichter ausgeschaltet werden.
Im Umkehrschluss genügt allerdings ein einzelnes der beiden Geräte, um den Bewohner als anwesend anzuzeigen. Das bedeutet auch, dass beim nach Hause kommen der Status durch beide Geräte unabhängig auf "home" gesetzt werden kann, um möglichst frühzeitig den Wechsel herbeizuführen. Hier handelt es sich also mit Absicht um eine oder-Verknüpfung. Das ist sinnvoll, weil man je nach Empfang u.U. das Geofence Event vielleicht einmal nicht abgesetzt bekommt. Ein Bluetooth LE Tag (das ist bei den meisten das Gerät in rr_presenceDevices) kann dann bei erreichen der Wohnungstür als Backup dienen, um den Bewohner doch noch als anwesend zu identifizieren.
Der Grundsatz lautet also: Den Bewohner so lange wie möglich als "zuhause" erkennen, bis man sicher sein kann, dass er wirklich abwesend ist.
Wer ein individuelleres Verhalten möchte, erstellt sich wie gehabt selbst ein notify oder DOIF und ignoriert rr_presenceDevices.
			
 
			
			
				Ah ich verstehe und macht absolut Sinn. Vielen Dank für die ausführliche Erklärung :)