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

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

Vorheriges Thema - Nächstes Thema

gestein

Zitat von: volschin am 28 September 2020, 12:27:06
Bzgl. der Einheitlichkeit: Wozu um Himmels Willen braucht der Roommate in FHEM ein Geschlecht?  ::)
Alle Roommates in msg-Nachrichten immer mit "es" anreden passt auch nicht ;-)
Und alles neutral zu formulieren, ist auch nicht immer das Wahre.

Aber es stimmt schon, damit macht man sich ein weites Feld auf ;-)
Vielleicht bleibe ich besser bei meinem User-Attribut.

lg, Gerhard

Nestor

Following patch fixes an issue upon parsing ROOMMATE rr_presenceDevices reading value.

The second regex matches 'maybe present' but not 'maybe absent'. In fact it matches '.* present'. Maybe this is intentional, but it disables the usage of the presenceTimeout attribute in ROOMMATE. 

The first regex has similar issue (start of string is only enforced with value 0).

--- - 2020-12-12 00:08:37.369875325 +0100
+++ /srv/fhem/FHEM/RESIDENTStk.pm 2020-12-12 00:08:33.188543696 +0100
@@ -1514,7 +1514,7 @@
             # early exit if unexpected event value
             next
               unless ( $value =~
-m/^0|false|absent|disappeared|unavailable|unreachable|disconnected|1|true|present|appeared|available|reachable|connected$/i
+m/^(?:0|false|absent|disappeared|unavailable|unreachable|disconnected|1|true|present|appeared|available|reachable|connected)$/i
               );

             my $counter = {
@@ -1536,7 +1536,7 @@
                 # ignore device if it has unexpected state
                 next
                   unless ( $presenceState =~
-m/^(0|false|absent|disappeared|unavailable|unreachable|disconnected)|(1|true|present|appeared|available|reachable|connected|)$/i
+m/^(?:(0|false|absent|disappeared|unavailable|unreachable|disconnected)|(1|true|present|appeared|available|reachable|connected|))$/i
                   );

                 $counter->{absent}++  if ( defined($1) );

Jamo

#707
Hallo Loredo,
ich glaube ich habe einen Fehler gefunden:
Das GUEST device schaltet den guest nach Ablauf der "rg_autoGoneAfter" Zeit nicht auf 'gone', wie in der Dokumentation, sondern auf 'none' (das attribut ''rg_states'' erlaubt auch gar kein 'gone' als Auswahl). Dadurch passiert dann folgendes:

Ich habe ein rgr_Residents device, das hat genau einen ROOMMATE und genau einen GUESTS. Wenn der GUEST state auf 'none' steht, und der ROOMMATE state von 'absent' auf 'home' wechselt, bleibt das rgr Residents device auf 'absent'.

Nur wenn der GUEST state auf 'absent' steht, und der ROOMMATE state von 'absent' auf 'home' wechselt, wechselt auch das rgr Residents device auf 'home'.

Magst Du Dir das mal anschauen?
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

DeeSPe

Zitat von: Jamo am 29 Oktober 2021, 13:40:24
Hallo Loredo,
ich glaube ich habe einen Fehler gefunden:
Das GUEST device schaltet den guest nach Ablauf der "rg_autoGoneAfter" Zeit nicht auf 'gone', wie in der Dokumentation, sondern auf 'none' (das attribut ''rg_states'' erlaubt auch gar kein 'gone' als Auswahl). Dadurch passiert dann folgendes:

Ich habe ein rgr_Residents device, das hat genau einen ROOMMATE und genau einen GUESTS. Wenn der GUEST state auf 'none' steht, und der ROOMMATE state von 'absent' auf 'home' wechselt, bleibt das rgr Residents device auf 'absent'.

Nur wenn der GUEST state auf 'absent' steht, und der ROOMMATE state von 'absent' auf 'home' wechselt, wechselt auch das rgr Residents device auf 'home'.

Magst Du Dir das mal anschauen?

Hallo Jamo,

das ist normal dass GUEST auf "none" statt auf "gone" wechseln, denn wenn der/die Gäste ganz weg sind, dann sind sie weg und es gibt eben keinen Gast mehr. Sobald es ein regelmäßiger Gast ist, so würde ich ihn als ROOMMATE anlegen.
Deine Beobachtung mit dem RESIDENTS Device sind mir bisher in den letzten Jahren nicht aufgefallen. Allerdings habe ich auch mehr als ein ROOMMATE und mehr als einen GUEST.

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

Jamo

Hallo Dan,
das komische ist ja das der Fehler nur auftritt, nachdem der rg_autogone timer gegriffen hat und das state vom rg_ device von 'absent' auf 'none' gestellt hat. Mit einem manuellen einstellen des guest auf none kann ich den Fehler nicht nachstellen.

Ich hab jetzt das rg_ device geloescht und genau mit den selbe attribute als rr_ roommate angelegt. Ich werde berichten.

PS:Zumindest ist die device specific help oder Dokumentation nicht richtig, da steht das 'none' das guest devise 'disabled', und 'gone' der state nach dem timeout des autogone timer ist.

Danke!
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Jamo

Hallo Loredo && Dan,
ich ziehe meinen Fehlerbericht zurück. Der Fehler liegt in meinem perl Code, ich habe wohl irgendeine Schleife im Code, die verhindert das sich der Roomate selber triggert. Nachdem ich ein "sleep 1;" vor die Ausführung des "set roomate home" eingebaut habe, also "sleep 1;set roomate home", funktionierts.

Danke fürs mitdenken, beste Grüsse Jamo
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

rakete123

#711
Hallo zusammen,
ich hätte eine Frage zur wakeupWaitPeriod. Grundsätzlich verstehe ich die Funktion dahinter und alles ist wunderbar.
Aber, ab und zu, kommt es bei mir vor das jemand vor der Weckzeit, z.B. eine Stunde vorher, kurz aufsteht (awoken->home) und sich wieder hinlegt (asleep).
Scheinbar greift dann auch die wakeupWaitPeriod und der Wecker klingelt eine Stunde später nicht mehr.
Ist das möglicherweise ein Bug? Die Person hat sich ja wieder "ordentlich" auf asleep gesetzt und daher würde ich erwarten, dass der Wecker dann klingelt.
Beispielhafte Daten:
Asleep 22:30
Toilettengang 04:00 -> awoken
Wieder hinlegen 04:15 -> asleep
Weckzeit 07:00

In diesem Beispielszenario klingt bei mir der Wecker nicht und im Log finde ich den entsprechenden Verweis auf wakeupWaitPeriod

Kann mich jemand aufklären? Alternativ kann ich natürlich verhindern, dass man bei dem Toilettengang überhaupt als awoken/home gemeldet wird. Aber trotzdem wollt ich mal fragen.
Zwave: ZMEEUZB1 (Fibaro, Aeotec, diverse)
Zigbee: Conbee (HUE, Xiaomi, osram)
Homematic: HM-MOD-RPI-PCB + diverse HM-CC-RT-DN
Sonstiges: Harmony, Android, Netatmo, Jabber (talk2fhem)
https://resize2fs.de

l2r

hi,

deine Frage kann ich dir leider nicht beantworten. Mich würde aber interessieren, wie du den Toilettengang tracst.

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