Modulfamilie für Bewohner / 10_RESIDENTS 20_ROOMMATE 20_GUEST

Begonnen von Loredo, 19 Januar 2014, 23:12:34

Vorheriges Thema - Nächstes Thema

FunkOdyssey

Ich habe noch einmal eine Frage:

Ich setze über ein DOIF das Roommate-Device manuell auf "gotosleep".
Nun dachte ich, dass durch das Einschalten des Handy (Presence-Device = present) das Roommate-Device auch wieder auf "present" gesetzt werden würde.
Leider ist dies nicht der Fall.

Ist das korrekt?

Sollte die Änderung im Presence-Device von "absent" zu "present" am frühen morgen das Roommate-Device nicht eigentlich wieder anpassen?
Oder muss ich das auch per DOIF nachkorrigieren?

Vielleicht hat ja jemand einen Tipp für mich. Danke.

l2r

grundsätzlich wird davon ausgegangen, dass du wenn du gotosleep bist auch gleichzeitig present bist. Da du durch ausschalten des Handys nicht auf absent gesetzt wirst, gehe ich davon aus, dass wenn du im Status gotosleep /asleep /awoken bist dein Presence-Status nicht aktualisiert wird?! oder habe ich da was falsch verstanden?

Gruß Michael
Wissen ist Macht.
Ich weiß nix.
Macht nix.

FunkOdyssey

Zitat von: l2r am 13 Januar 2017, 14:44:48
grundsätzlich wird davon ausgegangen, dass du wenn du gotosleep bist auch gleichzeitig present bist. Da du durch ausschalten des Handys nicht auf absent gesetzt wirst, gehe ich davon aus, dass wenn du im Status gotosleep /asleep /awoken bist dein Presence-Status nicht aktualisiert wird?! oder habe ich da was falsch verstanden?

Gruß Michael

Das Problem Nr.1 ist, dass das Presence-Device den "rrBewohner:presence" auf "absent" wie auch "rrBewohner:state" auf  "absent" setzt.
Und das obwohl ich daheim bin. Die Presence-Integration übernimmt ein wenig zu viele Einstellungen.

Die Reihenfolge:

1)
Bewohner daheim: state=home / presence=present

2)
Handy aus: state=absent / presence=absent (grundsätzlich auch okay)

3)
Dann folgt evtl. folgendes DOIF:

(
[rr_Bewohner:state] eq "absent" and
[rr_Bewohner:lastState] eq "home" and
[rr_Bewohner:lastState:sec] < 60 and
[23:00-09:00] and
[rolladen:level] < 15
)
(set rr_Bewohner state gotosleep)


4)

Am frühen morgen wir das Handy wieder eingeschaltet.
Das Presence-Device geht auf "present".
rrBewohner hat sich heute morgen jedoch nicht aktualisiert.

Ich habe nun einiges geändert und warte zu diesem Thema den morgigen Tag mal ab.




Am Rande:
Hat jemand einen Tipp, woran man zuverlässig erkennen kann, dass im Roommate-Device die Abwesenheit durch ein Presence-Device gesetzt wurde?
Wenn die Handys in der Nacht ausgeschaltet sind, werden die Roommates auf "absent" geschaltet. Dann setze ich unter Prüfung weitere Bedingungen (Licht aus, Jalousien runter, Türen zu) den "gotosleep"-Status. Jedoch könnte der Bewohner das Haus auch verlassen haben und über Geofancy auf "absent" gesetzt worden sein.
Ich suche also die Unterscheidung zwischen "absent" durch Presence oder "absent" durch Geofancy/manuell.

Loredo

Zitat von: FunkOdyssey am 13 Januar 2017, 14:32:28
Leider ist dies nicht der Fall.

Ist das korrekt?

Ja. Diese Vereinfachung ist nur für einfache Anwendungsfälle gedacht, um die generelle Anwesenheit zu steuern. Deshalb wird ein Wechsel zwischen absent/present bei einem PRESENCE Device nur abhängig vom presence-Reading in ROOMMATE/GUEST weitergegeben. Stimmen die beiden Zustände bereits überein, passiert gar nichts.

Spezialfälle wie "ich schalte mein Handy aus und eigentlich bin ich aber noch zu Hause, das muss man sich aber denken und kann das nicht von normaler Abwesenheit unterscheiden" lassen sich mit keiner generellen Logik definieren, die auf alle passen würde. Dafür bleibt ja wie gehabt die Freiheit das flexibel über Notify und DOIF so zu definieren, wie man es haben möchte.

Zitat von: l2r am 13 Januar 2017, 14:44:48
grundsätzlich wird davon ausgegangen, dass du wenn du gotosleep bist auch gleichzeitig present bist.

Korrekt. Siehe auch das reading "presence" in einem ROOMMATE/GUEST Device.

Zitat von: l2r am 13 Januar 2017, 14:44:48
Da du durch ausschalten des Handys nicht auf absent gesetzt wirst

Bei Verwendung des r*_presenceDevices Attributs würde ein ROOMMATE/GUEST Device definitiv auch immer auf absent wechseln. Das ist so gewollt.
Wer sein Handy nachts so ausschaltet, dass es nicht mehr als Anwesenheitsindikator dienen kann, braucht mindestens einen anderen parallel dazu (mehrere PRESENCE Devices lassen sich ja im Attribut gemeinsam koppeln) oder muss sich generell eine andere Methode überlegen die Anwesenheit zu steuern (Bluetooth Beacons am Schlüsselbund, manuelle Schalter, etc.). Eine Kopplung mit GEOFANCY brächte hier keine Besserung, weil GEOFANCY rein eventbasiert arbeitet. Man kann zwar beides gemeinsam einsetzen, es schalten aber beide unabhängig voneinander den Status (wer zuerst An- oder Abwesenheit erkennt, schaltet diese dann).

Zitat von: FunkOdyssey am 13 Januar 2017, 15:07:05
Das Problem Nr.1 ist, dass das Presence-Device den "rrBewohner:presence" auf "absent" wie auch "rrBewohner:state" auf  "absent" setzt.

Works as designed/intended.

Zitat von: FunkOdyssey am 13 Januar 2017, 15:07:05
Und das obwohl ich daheim bin. Die Presence-Integration übernimmt ein wenig zu viele Einstellungen.

Im Gegenteil, es wird nur ganz wenig übernommen. Ganz einfach gesprochen: Es wird nur der Status des einen presence-Readings in einem PRESENCE Device auf as Reading "presence" eines ROOMMATE/GUEST Devices übertragen. Anders ausgedrückt: Es wird das kommen und gehen übernommen, mehr nicht.

Ich glaube du verwendest die unterschiedlichen Status nicht so wie sie gedacht sind. In den Status "gotosleep" zu wechseln, indem man das Handy ausschaltet kann man zwar machen, ist aber doch IMHO höchst ungewöhnlich/eigensinnig (is dann eben halt Kacke  ;) ).
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

FunkOdyssey

Vorab erst einmal vielen Dank für die ausführliche Erklärung.
Ich werden die Vereinfachung dann bei mir besser wieder deaktivieren und zurück zu einem DOIF gehen.
Darüber steuere ich dann vollständig die Verknüpfung zwischen PRESENCE und ROOMMATE.
Damit kann ich leben. Ich wollte nur wissen, ob ich nicht beides nutzen könnte.
Danke dennoch.

Zitat von: Loredo am 13 Januar 2017, 15:24:24
Ich glaube du verwendest die unterschiedlichen Status nicht so wie sie gedacht sind. In den Status "gotosleep" zu wechseln, indem man das Handy ausschaltet kann man zwar machen, ist aber doch IMHO höchst ungewöhnlich/eigensinnig (is dann eben halt Kacke  ;) ).

Okay, zugegeben. Erst einmal ist "gotosleep" vollkommen unsinnig, weil es eigentlich "asleep" sein sollte. Ich war halt zu faul, die anderen States über "r*_showAllStates" freizuschalten. :-)

Aber ansonsten verstehe ich deine Aussage nicht. Ist das nicht legitim, den Schlafensstatus über eigene Regeln zu setzen?
(Das DOIF überprüft in Wirklichkeit auch noch mehr Parameter).

Loredo

Zitat von: FunkOdyssey am 13 Januar 2017, 15:07:05
Hat jemand einen Tipp, woran man zuverlässig erkennen kann, dass im Roommate-Device die Abwesenheit durch ein Presence-Device gesetzt wurde?

Derzeit nein, dafür wäre ein eigenes Reading erforderlich, bei dem ich aber irgendwie den Sinn und Zweck nicht ganz verstehen würde. Der Status wird ja 1-zu-1 ins ROOMMATE Device übernommen und der Sinn dahinter ist, dass du sämtliche Automationen dann nicht mehr von PRESENCE abhängig machst, sondern von ROOMMATE und RESIDENTS. Ansonsten erhältst du keinen Vorteil.

Zitat von: FunkOdyssey am 13 Januar 2017, 15:07:05
Wenn die Handys in der Nacht ausgeschaltet sind, werden die Roommates auf "absent" geschaltet. Dann setze ich unter Prüfung weitere Bedingungen (Licht aus, Jalousien runter, Türen zu) den "gotosleep"-Status.

Sowas macht man ja in der Regel eher abhängig von einem RESIDENTS Device und nicht einem einzelnen ROOMMATE. Dafür ist es da und es bietet auch Readings dafür, welches ROOMMATE Device zuletzt seinen Status geändert hat, um das z.B. in DOIF entsprechend mit auswerten zu können.

Zitat von: FunkOdyssey am 13 Januar 2017, 15:07:05
Ich suche also die Unterscheidung zwischen "absent" durch Presence oder "absent" durch Geofancy/manuell.

Hm, dafür ließe sich vielleicht ein zusätzliches Reading rechtfertigen. Ich baue das bei Gelegenheit mit ein und denke auch nochmal darüber nach, wie man ggf. sinnvoll beinflussen kann in welchen Status das ROOMMATE/GUEST Device bei present/absent eines PRESENCE Devices wechseln soll.
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

FunkOdyssey

Zitat von: Loredo am 13 Januar 2017, 15:37:35
Sowas macht man ja in der Regel eher abhängig von einem RESIDENTS Device und nicht einem einzelnen ROOMMATE. Dafür ist es da und es bietet auch Readings dafür, welches ROOMMATE Device zuletzt seinen Status geändert hat, um das z.B. in DOIF entsprechend mit auswerten zu können.

Hier muss ich noch einmal nachkorrigieren.
Jeder Bewohner hat sein eigenes Handy. Ich habe vielleicht den Plural oben benutzt, aber jedes ausgeschaltete Handy schaltet das dazugehörige ROOMMATE-Device. Schlussendlich landen die Ergebnisse natürlich in RESIDENTS.

Loredo

Zitat von: FunkOdyssey am 13 Januar 2017, 15:32:29
Okay, zugegeben. Erst einmal ist "gotosleep" vollkommen unsinnig, weil es eigentlich "asleep" sein sollte.

Nee, gar nicht. Es macht ja Sinn, wenn man sich auf den Weg ins Bett begibt und man entsprechend die Lichtstimmung anpassen will und TV aus, Schlummermusik im Bad einschalten etc.
Danach den Status auf "asleep" zu setzen ist dann auch richtig, z.B. über einen Schalter am Bett oder das ausschalten der Nachttischlampe (die man vorher bei "gotosleep" eingeschaltet hat  ;) ).

Zitat von: FunkOdyssey am 13 Januar 2017, 15:32:29
Ich war halt zu faul, die anderen States über "r*_showAllStates" freizuschalten. :-)

Man muss da nix "freischalten", um diesen oder andere Status zu nutzen. Es geht dabei rein um die visuelle Einblendung in FHEMWEB; den Status kann man jederzeit und immer so setzen, wie man das will. "Show" in der Bezeichnung des Attributes ist also durchaus wörtlich zu nehmen.

"asleep" ist per Default ausgeblendet, weil der Standardprozess eigentlich ist, dass zunächst "gotosleep" ausgewählt werden sollte. Dann wird auch "asleep" in der Liste aufgeführt bzw. alternativ der Status über die Nutzung dev devStateIcons entsprechend zum nächsten Status gewechselt. Wer das anders möchte, kann r*_showAllStates verwenden und jemand, der FHEMWEB gar nicht benutzt, sondern z.B. TabletUI, muss gar nichts tun.

Zitat von: FunkOdyssey am 13 Januar 2017, 15:32:29
Aber ansonsten verstehe ich deine Aussage nicht. Ist das nicht legitim, den Schlafensstatus über eigene Regeln zu setzen?
(Das DOIF überprüft in Wirklichkeit auch noch mehr Parameter).

Doch natürlich. Wie man von einem Status in den anderen geht ist ganz egal und das Modul interessiert sich auch nicht dafür. Man kann auch jeden Status so nutzen, wie man ihn möchte.
Die einzige Abhängigkeit besteht zum Reading "presence", welches durch den Wechsel zu bestimmten Status eben dann auf "absent" oder "present" wechselt.
Man muss also unterscheiden zwischen dem Anwesenheitsstatus (im Reading "presence") und dem Aktivitätsstatus (im Reading "state"). Außerdem muss man sich bewusst machen, dass man nur den Aktivitätsstatus selbst setzt (oder mit Hilfe von GEOFANCY/PRESENCE) und davon dann indirekt der Anwesenheitsstatus von abgeleitet wird.

Wenn man das einmal verinnerlicht hat, ist es eigentlich ganz einfach.
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

ujaudio

In https://sourceforge.net/p/fhem/code/9978/ steht:
ZitatRESIDENTStk.pm: make Wakeuptimer compatible with Tablet UI settimer widget:

<div data-type="settimer"
data-device="rr_Firstname_wakeuptimer1"
data-get="nextRun"
data-set="nextRun"></div>

Damit kann ich den Wecker grundsätzlich auch stellen, aber die eingestellte Zeit wird nicht angezeigt, insbesondere kommt beim Aufruf die Anzeige "NaN"
Auch wenn ich die Zeit in FHEM setze wird sie auf dem Tablet nicht aktualisiert - sollte ja aber sein, weil am nächsten Tag bei mir die Standard-Weckzeit wieder verwendet wird, wenn ich am Tag zuvor mal extra früher aufstehen musste.
Ungünstig ist auch, dass man nicht erkennen kann, ob der Wecker an oder aus ist. Vielleicht muss ich es doch anders lösen, aber das Widget schien so praktisch...

Ich habe immer die zulässigen Zeiten ("alle 15 Minuten") mit dem Widget eingestellt, wie ich ihm die unzulässigen abgewöhne muss ich noch herausfinden.
Einen lieben Gruß
Jürgen

Loredo

Zitat von: ujaudio am 24 Januar 2017, 21:57:36
Damit kann ich den Wecker grundsätzlich auch stellen, aber die eingestellte Zeit wird nicht angezeigt, insbesondere kommt beim Aufruf die Anzeige "NaN"


Für TabletUI kann hier keine Unterstützung gegeben werden, dafür solltest du hier einen separaten Thread starten. Deine Schwierigkeit hat nichts mit dieser Modulfamilie zu tun.


Zitat von: ujaudio am 24 Januar 2017, 21:57:36
Ich habe immer die zulässigen Zeiten ("alle 15 Minuten") mit dem Widget eingestellt, wie ich ihm die unzulässigen abgewöhne muss ich noch herausfinden.


Es kann jede beliebige Uhrzeit minutengenau gesetzt werden. Die 15min Abschnitte sind nur für die Anzeige in FHEMWEB so hinterlegt und können auch beliebig angepasst werden.
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

CoolTux

Zitat von: ujaudio am 24 Januar 2017, 21:57:36
In https://sourceforge.net/p/fhem/code/9978/ steht:
Damit kann ich den Wecker grundsätzlich auch stellen, aber die eingestellte Zeit wird nicht angezeigt, insbesondere kommt beim Aufruf die Anzeige "NaN"
Auch wenn ich die Zeit in FHEM setze wird sie auf dem Tablet nicht aktualisiert - sollte ja aber sein, weil am nächsten Tag bei mir die Standard-Weckzeit wieder verwendet wird, wenn ich am Tag zuvor mal extra früher aufstehen musste.
Ungünstig ist auch, dass man nicht erkennen kann, ob der Wecker an oder aus ist. Vielleicht muss ich es doch anders lösen, aber das Widget schien so praktisch...

Ich habe immer die zulässigen Zeiten ("alle 15 Minuten") mit dem Widget eingestellt, wie ich ihm die unzulässigen abgewöhne muss ich noch herausfinden.


<div data-type="settimer" data-device="rr_Marko_wakeuptimer1"
                        data-get="nextRun"
                        data-set="nextRun"
                        data-off="OFF"
                        data-running-set-off="stop"
                        class="cell top-space">
</div>


Klappt ohne Probleme
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

DeeSPe

Ich finde gerade irgendwie nicht was ich suche!

Gab es nicht mal eine Möglichkeit RESIDENTS auf Deutsch zu stellen, oder habe ich das nur geträumt?
Bin ich schon geistesgestört?  ??? ??? ???

Danke.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Loredo

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

DeeSPe

Zitat von: Loredo am 27 Januar 2017, 17:33:06
Die Vorlage dazu gibt es in GEOFANCY als Setter.


Gruß

Julian

Ich benutze aber kein GEOFANCY und habe es auch noch nie benutzt!
Geht das noch woanders?

Danke.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Loredo

Jetzt sitze ich vorm Rechner.


Hier der Artikel, wie man generell Devices in Fhem übersetzen kann:
Frontend übersetzen mit widgetOverride und eventMap (am Beispiel ROOMMATE)


msgConfig hat einen Setter "createResidentsDev", der RESIDENTS Devices in Deutsch oder Englisch vorkonfiguriert.



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