State einer Structure, wenn Mitglieder verschiedene State haben

Begonnen von rabehd, 14 März 2018, 10:28:03

Vorheriges Thema - Nächstes Thema

rabehd

Hallo,

ich habe hier im Forum gesucht und auch die Commandref gelesen. Wahrscheinlich verstehe ich die möglichen Lösungen nicht.
Die Anwesenheit steuere ich über Dummys für die einzelnen Personen. Über eine Struktur sehe ich den Hausstatus.
Das geht sicher auch über ein Modul. Tortzdem möchte ich bei dieser Lösung bleiben, es ist ja auch weiterhin eine Frage zu structure.

Der State der Structure ist bisher:
jemandda, wenn mindestens eine Person anwesend ist
niemandda, wenn keine einzige Person anwesend ist
schläft, wenn mindestens eine Person schläft
Das funktioniert bisher auch gut.

Jetzt möchte ich den State schläft zu ändern.
schlafen, wenn alle anwesenden Personen schlafen (der Rest ist abwesend)
leise, wenn mindestens eine Person schläft und mindestens eine Person anwesend ist
Das kriege ich nicht hin.
Alle Versuche mit "clientstate_priority" und Any_, bzw. All_ waren nicht erfolgreich.


So sieht die Structure aus:

Internals:
   ATTR       Personen
   CFGFN      ./FHEM/fhem_Personen.cfg
   CHANGEDCNT 142
   DEF        Personen Anwesenheit1 Anwesenheit1 AnwesenheitGast AnwesenheitService
   NAME       Anwesenheit
   NR         297
   NTFY_ORDER 50-Anwesenheit
   STATE      jemandda
   TYPE       structure
   READINGS:
     2018-03-14 10:05:17   LastDevice      Anwesenheit2
     2018-03-14 10:05:17   LastDevice_Abs  Anwesenheit2
     2018-03-14 10:05:17   state           jemandda
Attributes:
   clientstate_behavior relativeKnown
   clientstate_priority schläft|schläft jemandda|jemand|zuhause niemandda|niemand|abwesend
   devStateIcon niemandda:control_building_empty jemandda:status_available schläft:status_night
   event-on-change-reading .*


So sieht eine Person aus:
Internals:
   CFGFN      ./FHEM/fhem_Personen.cfg
   NAME       Anwesenheit1
   NR         288
   STATE      zuhause
   TYPE       dummy
   READINGS:
     2018-03-14 10:06:13   state           zuhause
Attributes:
   Personen   Anwesenheit
   devStateIcon zuhause:status_available abwesend:status_away_2 schläft:scene_sleeping_alternat
   event-on-change-reading .*
   userattr   Personen Personen_map structexclude
   webCmd     zuhause:abwesend:schläft
Auch funktionierende Lösungen kann man hinterfragen.

CoolTux

Meine Empfehlung. Schau Dir mal Resident und Roommate an. Ist genau das was Du suchst.
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

rabehd

Finde ich unübersichtlich.
Das Haus in den Zustand "eine Person schläft, bitte leise sein" scheint mir da nicht besonders einfach umsetzbar.

Wie gesagt, es geht eher um den State einer Structure.
Beispiel:
leise, wenn jemand anwesend ist UND jemand schläft
schläft, wenn alle anwesenden schlafen

Zitat"clientstate_priority" und Any_, bzw. All_
Hätte ich gern verständlich erklärt, für solche Fälle.
Auch funktionierende Lösungen kann man hinterfragen.

betateilchen

 Nimm zwei structure devices, eines für die Anwesenheit und eines für die Schlafzustände.

Wenn Du willst, kannst Du die beiden structures dann in einer dritten structure kombinieren und die möglichen Zustände einfacher bestimmen.

Und stelle solche Fragen zu structure nächstes Mal bitte im richtigen Unterforum.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!