Mehrere Anwesenheits-Strukturen "hintereinander"

Begonnen von Dangermouse, 08 Januar 2015, 15:54:24

Vorheriges Thema - Nächstes Thema

Dangermouse

Hallo zusammen,

ich bin gerade dabei einen Anwesenheitsstatus über die Fritzbox zu realisieren und stecke etwas fest.
Meine Vorstellung:                                           Struktur Wohnung
                                                                           /                     \
                                                                          /                        \
                                                                 Struktur                   Struktur
                                                                      Thorsten                   Tanja
                                                               /          |          \                   /     \
                                                         Handy1   Handy2   iPad   Handy3   iPad2i
Zur Funktionsweise: Über die WLAN-Endgeräte wird über die Fritzbox der Status auf dem RasPi geschrieben und je nach Endgerät dem jeweiligen Benutzer zugewiesen.
Diese Benutzer wiederum sollen ihrerseits den Status (anwesend/abwesend) in die Struktur Wohnung schreiben (bewohnt/unbewohnt) um damit dann Schalt- und Meldungsaufgaben auszuführen.
Bis zu den Namensstrukturen läuft alles, ich bekomme bei beiden entweder den Status "anwesend" oder "abwesend".
Die Struktur Wohnung hängt allerdings bei "undefined" fest.
Hier der Code:
####################### Anwesenheits-Erkennung #########################
define ThorstensiPhone dummy
attr ThorstensiPhone userattr Anwesenheit Anwesenheit_map home_structure home_structure_map structexclude
attr ThorstensiPhone Anwesenheit Wohnung
attr ThorstensiPhone event-on-change-reading state
attr ThorstensiPhone room Personen
define ThorstensiPhone2 notify DummyThorstensiPhone { fhem "%" }

define MiniMe6 dummy
attr MiniMe6 userattr Anwesenheit Anwesenheit_map home_structure home_structure_map structexclude
attr MiniMe6 Anwesenheit Wohnung
attr MiniMe6 event-on-change-reading state
attr MiniMe6 room Personen
define MiniMe62 notify DummyMiniMe6 { fhem "%" }

define ThorstensiPad dummy
attr ThorstensiPad userattr Anwesenheit Anwesenheit_map home_structure home_structure_map structexclude
attr ThorstensiPad Anwesenheit Wohnung
attr ThorstensiPad event-on-change-reading state
attr ThorstensiPad room Personen
define ThorstensiPad2 notify DummyThorstensiPad { fhem "%" }

define Thorsten structure Anwesenheit ThorstensiPhone ThorstensiPad MiniMe6
attr Thorsten userattr Anwesenheit Anwesenheit_map home_structure home_structure_map structexclude
attr Thorsten Anwesenheit Wohnung
attr Thorsten clientstate_behavior relative
attr Thorsten clientstate_priority anwesend|present abwesend|absent
attr Thorsten event-on-change-reading state
attr Thorsten room Personen


define TanjasiPhone dummy
attr TanjasiPhone userattr Anwesenheit Anwesenheit_map home_structure home_structure_map structexclude
attr TanjasiPhone Anwesenheit Wohnung
attr TanjasiPhone event-on-change-reading state
attr TanjasiPhone room Personen
define TanjasiPhone2 notify DummyTanjasiPhone { fhem "%" }

define TanjasiPad dummy
attr TanjasiPad userattr Anwesenheit Anwesenheit_map home_structure home_structure_map structexclude
attr TanjasiPad Anwesenheit Wohnung
attr TanjasiPad event-on-change-reading state
attr TanjasiPad room Personen
define TanjasiPad2 notify DummyTanjasiPad { fhem "%" }

define Tanja structure Anwesenheit TanjasiPhone TanjasiPad
attr Tanja userattr Anwesenheit Anwesenheit_map home_structure home_structure_map structexclude
attr Tanja Anwesenheit Wohnung
attr Tanja clientstate_behavior relative
attr Tanja clientstate_priority anwesend|present abwesend|absent
attr Tanja event-on-change-reading state
attr Tanja room Personen


define Wohnung structure Anwesenheit Thorsten Tanja
attr Wohnung userattr Anwesenheit Anwesenheit_map home_structure home_structure_map structexclude
attr Wohnung clientstate_behavior relative
attr Wohnung clientstate_priority bewohnt|anwesend unbewohnt|abwesend
attr Wohnung event-on-change-reading state
attr Wohnung room Personen

Ich hoffe Ihr könnt mir helfen....

Liebe Grüße
Thorsten


                                                           
FHEM auf Synology-NAS via Docker
piVCCU
HM-LAN & SCC 868 (MAX!) als Funkschnittstelle

Zephyr

Warum benutzt Du dafür nicht die Module ROOMMATE, GUEST und RESIDENCE? Die Modulgruppe macht genau das, was Du haben möchtest völlig automatisch.
FHEM 5.5 auf Fritz!Box 7390 und Beagle Bone black mit RFXtrx433

rudolfkoenig

@Dangermouse: dein Beispiel funktioniert hervorragend, falls du vorher ein
deleteattr .* event-on-change-reading
durchfuehrst.

Dangermouse

#3
Hallo Rudolf,
Dies würde mir allerdings alle "attr Event-on-Change-Reading" in der gesamten fhem.cfg löschen, auch die für die LogFiles, sehe ich das richtig?
Ich hoffe, ich werde nicht falsch verstanden, der Code erfüllt jetzt so seine Aufgabe, ich würde gerne verstehen was sich speziell bei meiner Konfiguration oben und im Gesamten ändert, wenn ich diesen Attribut raus nehme...

LG
Thorsten
P.S.über kurz oder lang werde ich mich sicher in ROOMMATE und RESIDENCE einarbeiten, ich bin ja gefühlt erst mal bei den Basics des Grundgerüstes ;) ...und dabei, den Gedankengängen des Erfinders/Programmierers zu folgen ;)
FHEM auf Synology-NAS via Docker
piVCCU
HM-LAN & SCC 868 (MAX!) als Funkschnittstelle

rudolfkoenig

"event-on-change-reading state" besagt, dass nur eine _Aenderung_ der state Reading als Event an
die FHEM-Module weitergericht wird, alle anderen Events von diesem Geraet werden unterdrueckt.

Sobald irgendwelche Stati out-of-sync sind (das Wieso dafuer kann ich z.Zt. nicht erklaeren),
werden kene Events weitergereicht, und das System heilt sich nicht.

P.S.: es reicht mAn die event-on-change-reading Attribtue der Strukturen zu aendern.

Dangermouse

#5
Klingt logisch, nun macht er ja die gleiche Arbeit doppelt, wenn ich das richtig sehe...
Etwas sinnfrei... :-P Dankeschön :)
...das würde vielleicht auch erklären, warum er gefühlt so fürchterlich lange brauchte, um meine Abwesenheit zu erkennen. Ich werde das morgen gleich mal raus nehmen...
Kreativ gefragt: kann ich eigentlich mit deleteattr *.event-on-change-reading stateauch nur den Schalter "State" aus den Event-readings entfernen?

Liebe Grüße
Thorsten
FHEM auf Synology-NAS via Docker
piVCCU
HM-LAN & SCC 868 (MAX!) als Funkschnittstelle

rudolfkoenig

Nein, selectives Loeschen der Attributswerte kann man mit deleteattr nicht.