Autor Thema: Modulfamilie für Bewohner / 10_RESIDENTS 20_ROOMMATE 20_GUEST  (Gelesen 203957 mal)

Offline gestein

  • Sr. Member
  • ****
  • Beiträge: 991
Antw:Modulfamilie für Bewohner / 10_RESIDENTS 20_ROOMMATE 20_GUEST
« Antwort #705 am: 28 September 2020, 19:42:03 »
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

Offline Nestor

  • Developer
  • Full Member
  • ****
  • Beiträge: 104
Antw:Modulfamilie für Bewohner / 10_RESIDENTS 20_ROOMMATE 20_GUEST
« Antwort #706 am: 12 Dezember 2020, 00:11:48 »
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) );

Offline Jamo

  • Hero Member
  • *****
  • Beiträge: 1463
Antw:Modulfamilie für Bewohner / 10_RESIDENTS 20_ROOMMATE 20_GUEST
« Antwort #707 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?
« Letzte Änderung: 29 Oktober 2021, 14:07:11 von Jamo »
Inten NUC mit Linux Debian 10, Homematic (UART/HMUSB), HUEBridge, Zigbee, FB, Alexa (fhem-lazy), livetracking, fhemApp Frontend für FHEM

Online DeeSPe

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4428
  • Wer anderen eine Bratwurst brät...
    • Buy me a coffee
Antw:Modulfamilie für Bewohner / 10_RESIDENTS 20_ROOMMATE 20_GUEST
« Antwort #708 am: 29 Oktober 2021, 14:24:23 »
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

Offline Jamo

  • Hero Member
  • *****
  • Beiträge: 1463
Antw:Modulfamilie für Bewohner / 10_RESIDENTS 20_ROOMMATE 20_GUEST
« Antwort #709 am: 30 Oktober 2021, 12:10:28 »
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!
Inten NUC mit Linux Debian 10, Homematic (UART/HMUSB), HUEBridge, Zigbee, FB, Alexa (fhem-lazy), livetracking, fhemApp Frontend für FHEM

Offline Jamo

  • Hero Member
  • *****
  • Beiträge: 1463
Antw:Modulfamilie für Bewohner / 10_RESIDENTS 20_ROOMMATE 20_GUEST
« Antwort #710 am: 03 November 2021, 14:38:29 »
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
Inten NUC mit Linux Debian 10, Homematic (UART/HMUSB), HUEBridge, Zigbee, FB, Alexa (fhem-lazy), livetracking, fhemApp Frontend für FHEM
Informativ Informativ x 1 Liste anzeigen

 

decade-submarginal