rr_presenceDevices und Geofancy

Begonnen von Amenophis86, 02 April 2017, 12:06:15

Vorheriges Thema - Nächstes Thema

Amenophis86

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?
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Loredo

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.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Amenophis86

Ah ich verstehe und macht absolut Sinn. Vielen Dank für die ausführliche Erklärung :)
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...