Hallo zusammen,
nach mehreren Versuchen hab ich mir jetzt einen Abwesenheits-Watchdog gebaut:
Handy1:absent&&Handy2:absent 00:15 Handy1:present||Handy2:present set FritzBox wlan off
Bei 2 Personen ist das mit UND und ODER noch überschaubar. Wie löst man "Jemand da" und "Keiner da" sinnvoll für mehrere Personen?
Die Abschaltung des WLANs ist jetzt nur ein Beispiel, interessant wäre so etwas z.B. für die Absenkung der Raumtemperatur.
Ich würde mal sagen alle in eine structure packen und auf diese dann den Wachhund ansetzen.
Das ist es, was mir an unserem System so besonders gut gefällt: Es gibt jede Menge Lösungs-Alternativen.
Ich habe das so gelöst.
define Niemand_Da DOIF ([Person1:state] eq "absent" and [Person2:state] eq "absent") (set au_Kamera on) DOELSE (set au_Kamera off)
Helmut
Ich habe pro Person ein Watchdog
Grüße
ZitatDas ist es, was mir an unserem System so besonders gut gefällt: Es gibt jede Menge Lösungs-Alternativen.
Stimmt.
Es kommt aber auch darauf an ob ich nur in einem Code die An-/Abwesenheit prüfe oder mehrere Codes habe.
Bei mehreren macht structure Sinn da ich nur in einem Code neue oder wegfallende Mitbewohner nachpflegen muss.
Für jeden ein Wachhündchen macht mMn nur Sinn wenn in den Codes oder allgemein in FHEM auch unterschiedlich reagiert werden soll.
Für die Frage resp. "Anforderung" des TE
ZitatBei 2 Personen ist das mit UND und ODER noch überschaubar. Wie löst man "Jemand da" und "Keiner da" sinnvoll für mehrere Personen?
würde ich dennoch structure empfehlen.
Er hat EINEN Code wo er mehrere Personen pflegen muss und kann in den restlichen Codes darauf reagieren.
Der Hinweis mit structure bildet das wohl am besten ab. Zitat aus dem Wiki:
Zitat
clientstate_priority
Definiert das Verhalten der structure in Abhängigkeit der enthaltenen Geräte. Das Beispiel
attr myStructure clientstate_priority present absent
bedeutet: wenn mindestens eines des Geräte der Struktur den Status present hat, bekommt die Struktur den Status present (unabhängig vom Status der anderen Geräte der Struktur). Nur, wenn alle Geräte den Status absent haben, bekommt auch die Struktur den Status absent.
In dieser Richtung werde ich wohl weiter probieren.
Ich habe hier mal ein paar Gedanken (http://heinz-otto.blogspot.de/2016/01/anwesenheitserkennung.html) dazu aufgeschrieben. Vielleicht hilft es ja bei den Überlegungen.
Gruß Otto
Warum nicht einfach das Residents und Roommate Modul nutzen? Hierbei kann man beliebige Benutzer definieren und zu einem Resident zuordnen. Da braucht es keine Dummys und Watchdogs und Verknüpfungen
Es hat ein Weilchen gedauert, aber mit Residents bin ich zu einer Lösung gekommen :)
Für Aktionen brauche ich aber immer den Watchdog:
define watchdog_Abwesenheit watchdog rgr_Bewohner:absent 00:15 rgr_Bewohner:home {fhem("set FritzBox wlan off");;;; fhem("setstate watchdog_Abwesenheit defined");;;;}
define watchdog_Anwesenheit watchdog rgr_Bewohner:home 00:02 rgr_Bewohner:absent {fhem("set FritzBox wlan2.4 on") ;;;;fhem("set FritzBox wlan5 on");;;;fhem("setstate watchdog_Anwesenheit defined");;;; }
oder geht das auch anders?
Ich verstehe deinen konkreten Zusammenhang mit der Frage nicht, deswegen antworte ich mal allgemein:
Ein watchdog brauchst Du im Zusammenhang mit Anwesenheitserkennung eigentlich immer nur dann, wenn Du den Zustand "weg" etwas glätten willst. Also kurzes "Wackeln" an den Geräten wie: mal kurz im Garten, neustart Smartphone, Neustart Router oder so soll nicht gleich als Abwesend gewertet werden.
Ein watchdog schaut: ob das Gerät an ist und wenn es länger als Zeit X aus ist "beißt er zu" bzw. schlägt "Alarm"
Gruß Otto
Kommt drauf an was Du machen möchtest. Ein Watchdog überwacht auf Zustandsänderung. Wenn Du das nicht brauchst kannst auch was anderes nehmen.
Grüße
Dann hab ich das richtig verstanden es soll beim Wechsel "jemand da" / "keiner da" etwas passieren.
Zitat von: pcbastler am 06 Februar 2016, 09:06:55
Dann hab ich das richtig verstanden es soll beim Wechsel "jemand da" / "keiner da" etwas passieren.
Ich weiß wieder nicht genau was Du damit meinst. Aber noch mal: Ein watchdog kann man nehmen um die Abwesenheit zu ermitteln. Das ist erstmal nur eine Zustandsbeschreibung.
Wenn dann was passieren soll, macht man das typischerweise nicht mit einem watchdog sondern einfach mit einem notify oder DOIF welcher durch die Veränderung der "Zustandbeschreibung" getriggert wird.
Gruß Otto
Also ein Watchdog löst auch etwas aus.
Beispiel.
Das Licht soll aus gehen wenn Du raus gehst. Es soll aber 5 min gewartet werden, ob Du nicht doch wieder zurück kommst. Müll raus bringen oder so. Da muss das Licht ja nicht gleich aus gehen.
Oder warte nach verlassen der Wohnung 30 min und wenn Du nicht zurück kommst schalten die Heizung aus.
Genau das macht ein Watchdog. Er Übermacht eine Zustandsänderung ob sie so bleibt, wenn ja löst sie etwas aus.
Ja aber das Thema war ja Anwesenheitserkennung. Und ich würde erstmal die Anwesenheit zweifelsfrei feststellen und mir dann überlegen, was ich mit dieser Info alles anstellen will.
Und die Handhabung des watchdog finde ich nicht so simpel, und den watchdog mit weiteren watchdogs zu "überwachen" hält irgendwie fit :-X
Gruß Otto
Bin Deiner Meinung. Es sollte erstmal eine solide funktionierende Anwesenheitserkennung vorhanden sein. Und vor allem stabil.