NEWS
fb.checkpresence mit iPhone Ergänzung
-
Hallo zusammen.
Ich nutze zu Hause für die Anwesenheitserkennung den Adapter fb.checkpresence, welcher für die Samsung-Geräte von meiner Frau und mir auch sehr zuverlässig funktioniert. Allerdings sind die beiden Jungs iPhone-Jünger. Leider werden die iPhones auch bei Anwesenheit und Aktivität trotzdem unregelmäßig in den Schlafmodus geschickt. Bei Änderungen an den Anwesenheiten lassen wir uns eine Telegram-Nachricht schicken. Siehe angehängtes Blockly. Bei den iPhones der Jungs bekomme ich aber alle Nase lang Nachrichten ist weg, ist da, ist weg. Jetzt wollte ich das mit einem timeout lösen. Bei Änderung auf Abwesenheit funktioniert das auch. Allerdings bekomme ich dann immer wieder die Nachricht, dass jemand nach Hause kommt.
Wie muss ich den timeout setzen bzw. stoppen, damit ich tatsächlich erst nach 10 Minuten eine Abwesenheitsnachricht bekomme und in der Zwischenzeit auch keine Anwesenheitsnachricht mehr bekomme?
Vielen Dank für euren Input.
Gruß
Dennis -
Servus,
wir haben hier im Haushalt nur Androide aber auch diese können ja mal die Verbindung zum WLAN verlieren, z.B. durch einen Neustart.
Um nervigen Nachrichten aus dem Wege zu gehen habe ich dies mit folgendem Blockly gelöst (in diesem Fall mein Smartphone):Dazu frage ich aber nicht den DP
fb-checkpresence.0.familyMembers.Familie.Marc.presence
ab sondern zur Erkennung der Anwesenheit
fb-checkpresence.0.familyMembers.Familie.Marc.present.since
und zur Abwesenheit diesen
fb-checkpresence.0.familyMembers.Familie.Marc.absent.since
Ebenso hab ich mir für jeden User einen boolschen DP angelegt (hier MarcWLAN)
und im Skript eine Variable (Marc) erzeugt.
Beim Skriptstart wird die Variable erstmal auf false gesetzt.
Falls ich daheim bin wird spätestens nach einer Minute der DP MarcWLAN nun auf true gesetzt und die Variable Marc ebenfalls (Entprellerfunktion).Falls ich nun das Haus für längere Zeit verlasse dann wird nach 10 Minuten der DP MarcWLAN auf false gesetzt und die Variable Marc ebenfalls um die Entprellerfunktion zu deaktivieren.
Sollte ich aber mal das Smartphone neu starten, es kurz das WLAN verlieren oder ich bin mal eben nur 5 Minuten weg passiert ... NIX, also keine Änderung des DP MarcWLAN auf false da die beiden TriggerDatenpunkte die Zeit (in Minuten) nur bei An- bzw. Abwesenheit hochzählen und sich jeweils bei Statusänderung von "presence" auf Null setzen.
Hoffe ich konnte das verständlich rüberbringen -
@djmarc75 Moin
Oh da muss ich erstmal durchsteigen ... vielen Dank schon mal
Ich werde mir das mal in Ruhe angucken und versuchen umzusetzen
-
iphone/ios ist da etwas hartnäckig.
bei manchen geräten reicht ein arp-scan nicht aus.
selbst wenn das gerät aktiv zu sein erscheint, schaltet ios im hintergrund wlan aus. nach einer gewissen zeit verschwinden dann die geräte aus den arp tabellen bspw beim router (was dann die skripte/adapter dann auswerten) und das gerät ist weg.
daher muss man das gerät immer wieder mal wecken. das geht mit einem weiteren tool, mit dem man beliebige layer 3 päckchen erzeugen kann (das normale ping erzeugt layer 2 icmp päckchen)mit der hier beschriebenen lösung funktioniert es bei mir einwandfrei. wohl auch bei den anderen die es ausprobiert haben
https://forum.iobroker.net/topic/56566/probleme-mit-anwesenheitserkennung/15?_=1675935212567 -
@djmarc75 Guten Morgen. Ich habe das jetzt so erstmal für alle umgesetzt was auch bisher funktioniert. Ich werde jetzt mal mit den Zeiten in Bezug auf Abwesenheit spielen. Vielleicht komme ich ja auch mit weniger als 10 Minuten hin.
@OliverIO vielen Dank, diese Variante werde ich mir mal angucken, wenn ich ein wenig mehr Zeit habe
-
Ich habe mir jetzt analog zum Adapter fb.checkpresence noch die Datenpunkte presence, presenceAll, absence und absenceAll erstellt. Über ein Blockly möchte ich mir jetzt mit UND/ODER-Prüfungen die einzelnen Datenpunkte steuern lassen. Aber es werden leider nicht immer die korrekten Werte in die Datenpunkte geschrieben. Hier mein Blockly zur Steuerung der genannten Datenpunkte. Übersehe ich was?
Danke
-
@dennismenger
Was ist Dein genaues Ziel von dem Blockly?
presence und absence gehen ja beide auf true sobald mind. 1 Person anwesend ist - macht wenig Sinn. -
@djmarc75 gibt ja unterschiedliche Konstellationen wo man die verschiedenen Anwesenheiten benötigt. Lichtsteuerung einzelner Zimmer. Ich würde halt gerne einige der Datenpunkte, die es in dem Adapter fb.checkpresence gibt, nutzen. Halt nicht die Originalen, sondern nach dem Prinzip wie du es oben erläutert hast. Müsste doch mit wenn/dann-Abfragen funktionieren. Oder habe ich da einen Denkfehler?
-
@dennismenger kannst Du mal die Ordnerstruktur der Datenpunkte zeigen?
Man könnte u.U. mit einer Aufzählung arbeiten. -
-
@dennismenger ok, dann könnte es nach diesen Prinzip umzusetzen sein (hier nur die DP absenceAll und presenceAll)
Bin jetzt mal ne Weile OFF
-
@djmarc75 ok danke schon mal, gucke ich mir an
-
@DJMarc75 wenn ich das Blockly richtig verstehe zählt er für jeden Eintrag mit *WLAN, wo der Wert "wahr" ist den Wert um einen hoch. Da es maximal 4 Einträge mit *WLAN, die wahr sein können, muss der Wert der Variable "zähler" ja immer zwischen 0 und 4 sein. So weit richtig?
Ich habe mir über einen debug-Output anzeigen lassen welchen Wert die Variable hat. Aber ganz egal welche Personen im WLAN sind, die Variable bekommt nur den Wert 0 oder 4.
Oder habe ich da einen Denkfehler?
-
Du hast den Trigger falsch gesetzt. Hier ein Beispiel wie es aussehe sollte
Deine Variable wlan wird nur beim Start des Script gesetzt danach nicht mehr.
-
@dennismenger sagte in fb.checkpresence mit iPhone Ergänzung:
die Variable bekommt nur den Wert 0 oder 4.
Sorry, Fehler im Skript. So sollte es funktionieren:
-
Hinweis, wenn es um iPhones geht, wie im Eingangspost.
Für iOS ist Geofency (iOS App und iobroker Adapter) absolut zuverlässig. Hierbei wird beim Verlassen des Hausradius ein Signal gegeben, ebenso wie beim Kommen.
Ich habe es als Bonus mit Wireguard verbunden. Mein Handy ist immer per Wireguard mit dem Heimnetzwerk sowie Adguard DNS Zuhause verbunden (befindet sich damit immer im Heimnetzwerk). Für Geofency brauche deshalb nur die lokale iobroker IP hinterlegen.
Das klappt seit bestimmt 6 Jahren problemlos (Wireguard kam später dazu) -
@tt-tom sagte in fb.checkpresence mit iPhone Ergänzung:
Deine Variable wlan wird nur beim Start des Script gesetzt danach nicht mehr.
die Variable wird jedesmal geändert wenn sich eine ID innerhalb der Aufzählung ändert, nicht nur beim Skriptstart.
Bau es mal nach und setze ein Debug direkt unter den ersten (den was Du meinst) Block. -
@djmarc75 Moin. Sieht gut aus bis jetzt. Ich werde das mal beobachten.
Danke schon mal.