Hallo,
ich habe auf meinem FHEM eine Anwesenheitssteuerung installiert.
und zwar...
Handy1 per PRESENCE lan-ping den Status abfragen
Handy2 per PRESENDE lan-ping den Status abfragen
Darauf aufbauend watchdog
Anwesendheit Handy1:Present - Status Home: anwesend
Abwesenheit Handy1:absent - Status Home: abwesend
die gleiche Konfiguration dann noch mal für Handy2
und jetzt kommt mein Problem...
Wenn Handy2 das Haus verlässt reagiert das System, erkennt absent und setzt den Status auf ABWESEND.
Da aber Handy1 noch zu Hause ist, soll dies aber nicht geschehen.
Also quasi setze Status ABWESEND wenn Handy1 und Handy2 absent.
Ist Handy1 und/oder Handy2 present, dann keine Statusänderung.
Wahrscheinlich total easy, aber ich packs leider nicht...
Danke für Eure Hilfe...
Viele Grüße
Mit einem DOIF würde ich es so lösen, s. http://fhem.de/commandref_DE.html#DOIF
DOIF ([Phone1] eq "abwesend" and [Phone2] eq "abwesend") (set Anwesendheitssteuerung ABWESEND)
DOELSEIF ([Phone1] eq "anwesend" or [Phone2] eq "anwesend") (set Anwesendheitssteuerung ANWESEND)
habe das mal eingebunden...
die Watchdog kann ich doch dann jetzt eigentlich löschen oder?
folgenden Code habe ich nun installiert...
define a_Anwesenheit DOIF ([Handy1] eq "present" and [Handy2] eq "present") (set HomeStatus zu Hause)
define a_Abwesenheit DOIF ([Handy1] eq "absent" and [Handy2] eq "absent") (set HomeStatus nicht zu Hause)
das wird doch richtig sein oder?
Wobei ja eigentlich besser das hier wäre oder
define Status_Anwesenheit
DOIF ([Handy1] eq "absent" and [Handy2] eq "absent") (set HomeStatus nicht zu Hause)
DOELSEIF ([Handy1] eq "presence" or [Handy2] eq "presence") (set HomeStatus zu Hause)
Zitat von: Tutti_Bomovski am 21 Januar 2016, 14:48:00
folgenden Code habe ich nun installiert...
define a_Anwesenheit DOIF ([Handy1] eq "present" and [Handy2] eq "present") (set HomeStatus zu Hause)
define a_Abwesenheit DOIF ([Handy1] eq "absent" and [Handy2] eq "absent") (set HomeStatus nicht zu Hause)
das wird doch richtig sein oder?
Wobei ja eigentlich besser das hier wäre oder
define Status_Anwesenheit
DOIF ([Handy1] eq "absent" and [Handy2] eq "absent") (set HomeStatus nicht zu Hause)
DOELSEIF ([Handy1] eq "presence" or [Handy2] eq "presence") (set HomeStatus zu Hause)
Das wird so nicht funktionieren, spar Dir das zweite DOIF und mache es wie im Beispiel mit DOELSEIF.
Also dann diese Variante?
define Status_Anwesenheit
DOIF ([Handy1] eq "absent" and [Handy2] eq "absent") (set HomeStatus nicht zu Hause)
DOELSEIF ([Handy1] eq "presence" or [Handy2] eq "presence") (set HomeStatus zu Hause)
Ja.
und ohne Watchdog?
und aus einem unerfindlichen Grund wird dann der Status nicht aktualisiert...
:-(
Ja. Welcher Status?
Der Anwesenheitsstatus HomeStatus wird nicht geändert.
Mit den Watchdog´s hat es noch funktioniert.
ein kleiner Schreibfehler für mich ergibt einen großen Fehler für FHEM
es muss natürlich present heißen und nicht presence. :-/
define Status_Anwesenheit
DOIF ([Handy1] eq "absent" and [Handy2] eq "absent") (set HomeStatus nicht zu Hause)
DOELSEIF ([Handy1] eq "present" or [Handy2] eq "present") (set HomeStatus zu Hause)
Damit ist alles gelöst... Danke für die Hilfe!
Warum nutzt du nicht das Residents und Roommate Modul?
Da kannst du mehrere Personen einem Resident zuordnen und musst dich nicht mit DOIFs und co ärgern.
Vor allem lässt es sich super einfach erweitern, wenn noch eine weitere Person hinzu kommt.
Man könnte auch die Handys alle in eine Struktur zusammenfassen und dann die Prüfung nur auf die Struktur machen.
Zitat von: gloob am 22 Januar 2016, 07:13:12
Warum nutzt du nicht das Residents und Roommate Modul?
Hast du da ein Beispiel für?
Hier ein Auszug aus meiner Config:
##############
# Residents
##############
define rgr_Residents RESIDENTS
attr rgr_Residents alias Residents
attr rgr_Residents devStateIcon .*home:status_available:absent .*absent:status_away_1:home .*gone:status_standby:home .*none:control_building_empty .*gotosleep:status_night:asleep .*asleep:status_night:awoken .*awoken:status_available:home .*:user_unknown:home
attr rgr_Residents group Home State
attr rgr_Residents icon control_building_filled
attr rgr_Residents room Presence
attr rgr_Residents webCmd state
##############
# Stefan
##############
define rr_Stefan ROOMMATE rgr_Residents
attr rr_Stefan alias Stefan
attr rr_Stefan devStateIcon .*home:user_available:absent .*absent:user_away:home .*gone:user_ext_away:home .*gotosleep:scene_toilet:asleep .*asleep:scene_sleeping:awoken .*awoken:scene_sleeping_alternat:home .*:user_unknown:home
attr rr_Stefan event-min-interval presence:60
attr rr_Stefan event-on-change-reading presence
attr rr_Stefan event-on-update-reading presence
attr rr_Stefan group Home State
attr rr_Stefan icon people_sensor
attr rr_Stefan room Presence
attr rr_Stefan rr_geofenceUUIDs xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
attr rr_Stefan rr_realname group
attr rr_Stefan webCmd state
##############
# Tina
##############
define rr_Tina ROOMMATE rgr_Residents
attr rr_Tina alias Tina
attr rr_Tina devStateIcon .*home:user_available:absent .*absent:user_away:home .*gone:user_ext_away:home .*gotosleep:scene_toilet:asleep .*asleep:scene_sleeping:awoken .*awoken:scene_sleeping_alternat:home .*:user_unknown:home
attr rr_Tina group Home State
attr rr_Tina icon people_sensor
attr rr_Tina room Presence
attr rr_Tina rr_geofenceUUIDs xxxxxxxxxxxxxxxxxxxx
attr rr_Tina rr_realname group
attr rr_Tina webCmd state
Zitat von: yogiflop am 22 Januar 2016, 07:42:25
Man könnte auch die Handys alle in eine Struktur zusammenfassen und dann die Prüfung nur auf die Struktur machen.
So hab ich es auch gemacht. Das Handy von meiner Frau und mir als Structure Familie und dann der Structure gesagt das der Wert present eine stärkere Gewichtung hat. Sonst schaltet die Structure ihren Status auf absent sobald einer geht. Dann den watchdog auf den statuswechsel der Structure setzen.
Gruß Christian