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 :)