Seite 1 von 2

Anwesenheitserkennung nachtriggern

Verfasst: 29. Jan 2022 13:33
von cyrill.sneer
Hallo zusammen,

ich habe eine Anwesenheiterkennung mittels dem Network-Bindung erstellt. Das funktioniert beim iPhone bedingt durch den WLAN-Standby mehr schlecht als recht.
Auf meinem Homeserver habe ich mir damit beholfen, dass ich minutlich die iPhones gepingt habe. Nur wenn ich innerhlab von 30 Minuten keines erreicht habe, wurde die Abwesenheit detektiert. Das hat recht gut funktioniert.

Diese will ich gerne in OH3 umsetzen. Könnt Ihr mir den richtigen Denkanstoß geben?

Code: Alles auswählen

rule "Anwesenheit"
   when
      Item iPhone_1 changed to ON or
      Item iPhone_2 changed to ON
   then
      sendCommand(Z_ZENTRAL_Ein, ON)
end

rule "Abwesenheit"
   when
      Item iPhone_1 changed to OFF or
      Item iPhone_2 changed to OFF
   then
      if(iPhone_1.state == OFF && iPhone_2.state == OFF) {
      sendCommand(Z_ZENTRAL_Aus, OFF)
      }
end

Re: Anwesenheitserkennung nachtiggern

Verfasst: 29. Jan 2022 13:58
von peter-pan
Wo siehst du hier ein Problem ?

Ich denke die Regel kann 1:1 weiter laufen.

Re: Anwesenheitserkennung nachtiggern

Verfasst: 29. Jan 2022 14:09
von cyrill.sneer
Hallo Peter?,

ich möchte 30 Minuten lang prüfen, ob eines der beiden iPhones Online war. Wenn das der Fall ist soll der Timer neu gestertet werden.
Ich dachte so...

Code: Alles auswählen

rule "Anwesenheit"
   when
      Item iPhone_1 changed to ON or
      Item iPhone_2 changed to ON
   then
      if(Z_ZENTRAL_Ein.state == OFF) {
        sendCommand(Z_ZENTRAL_Ein, ON)
        } 
end

rule "Abwesenheit"
   when
      Item iPhone_1 changed to OFF or
      Item iPhone_2 changed to OFF
   then
      if(iPhone_1.state == OFF && iPhone_2.state == OFF)
        timer_online = createTimer(now.plusMinutes(30), [ |
          sendCommand(Z_ZENTRAL_Aus, OFF)
          ]) 
      }
      if(iPhone_1.state == ON || iPhone_2.state == ON) {
        timer_online?.cancel
      }
end

Re: Anwesenheitserkennung nachtiggern

Verfasst: 29. Jan 2022 15:16
von int5749
cyrill.sneer hat geschrieben: 29. Jan 2022 13:33 ich habe eine Anwesenheiterkennung mittels dem Network-Bindung erstellt. Das funktioniert beim iPhone bedingt durch den WLAN-Standby mehr schlecht als recht.
Hallo

hast Du evtl eine Fritzbox im Einsatz oder Interesse eine zuzulegen?

Hintergrund: Es gibt ein Fritzbox Binding und dort eine Erkennung für Netzwerk Geräte.

Neben der Überwachung meiner Aussen-Cam und dem FTP Server, läuft dies auch stabil mit unseren iPhones und zur Anwesenheitserkennung.

Wir haben iPhone 6, 6 Plus, 8, XS und 12 im Einsatz


VG

Re: Anwesenheitserkennung nachtiggern

Verfasst: 29. Jan 2022 15:54
von cyrill.sneer
Hallo,

doch habe ich. Ich hätte nur nicht gedacht das die Off-/Onlinerkennung zuverlässiger sein soll. Oder macht die Fritzbox von sich aus eine Verzögerung bevor das Gerät als Offline erkannt wird?

Re: Anwesenheitserkennung nachtiggern

Verfasst: 29. Jan 2022 22:33
von peter-pan
Hallo @int5749 hat dir ja schon geantwortet, aber muss man den Timer nicht vorher "global initialisieren vor deinen Rules ?

Re: Anwesenheitserkennung nachtiggern

Verfasst: 30. Jan 2022 00:08
von int5749
Hola,

Also mit dem Timer und der vorherigen Initialisierung als global kann ich leider nichts zu sagen :-/

Die FRITZ!Box und daher das Binding sind von jeher etwas „träger“ und somit stabiler, denn es kann ja immer mal sein das ein Gerät kurzzeitig die WLAN Verbindung verliert. Ping erreicht das Gerät dann nicht, die FRITZ!Box hält die Verbindung noch eine Weile „aktiv“ und prüft nach einigen Sekunden erneut.

Wie gesagt: Für die Anwesenheitserkennung und Simulation läuft dies bei mir seit min. 2-3 Jahren sehr zuverlässig.

Es dauert meist 5-20 Sekunden, wenn man nach Hause kommt und das Gerät erkannt wird, beim verlassen des Hauses gerne auch schon mal 5 Minuten. Aber so kann mal auch mal kurz in die Garage und wenn man etwas vergessen hat auch wieder zurück ohne dass das Haus (der Status) flippert ;-)

VG int5749

Re: Anwesenheitserkennung nachtiggern

Verfasst: 30. Jan 2022 03:24
von udo1toni
Da ist von vornherein ein Denkfehler drin. Der Timer sorgt nur dafür, dass Code verzögert ausgeführt wird.

So wird eher ein Schuh draus:

Code: Alles auswählen

var Timer timer_online = null // Globale Variablen zu Beginn der Datei anlegen

rule "Anwesend oder Anwesend"
when
    Member of gPhones changed //Group gPhones anlegen und dort alle Items für den Online-Status zusammenfassen
then
    if(gPhones.members.filter[i|i.state == ON].size > 0) {
        timer_online?.cancel
        if(Z_ZENTRAL_Ein.state != ON)
            Z_ZENTRAL_Ein.sendCommand(ON)
    } else {
        timer_online = createTimer(now.plusMinutes(30), [ |
            if(Z_ZENTRAL_Ein.state != OFF)
                Z_ZENTRAL_Ein.sendCommand(OFF)
        ])
    }
end
Punkt 1: Der Timer muss global definiert werden (hast Du vielleicht auch gemacht... aber vergessen, dazu zu schreiben)
Punkt 2: Warum überhaupt zwei Rules? das ist viel sinnvoller in einer Rule abzufeiern:
Punkt 3: selbst bei nur zwei Geräten ist es schon sinnvoll, eine Gruppe zu verwenden.
Punkt 3.1: geht schon beim Trigger los...
Punkt 3.2: Und wird mächtig bei der Auswertung, ob eines der Geräte Online ist. Der Trick ist hier, die Anzahl der Geräte auszuwerten, deren Status ON ist. Das geht, wie man sehen kann, super bequem.
Punkt 4: Der Timer kann bequem gecancelt werden, wenn mindestens eines der Geräte Online ist (der true-Teil)
Punkt 5: es ist sinnvoller, auf !=ON zu testen, da ein Item mindestens beim Systemstart zunächst den Zustand UNDEV oder NULL hat.
Punkt 6: Es ist besser, die Methode Item.sendCommand(Befehl) zu verwenden, statt die Action sendCommand(Itemname,Befehlstext)

Re: Anwesenheitserkennung nachtiggern

Verfasst: 30. Jan 2022 12:42
von peter-pan
int5749 hat geschrieben: 30. Jan 2022 00:08 Wie gesagt: Für die Anwesenheitserkennung und Simulation läuft dies bei mir seit min. 2-3 Jahren sehr zuverlässig.
..ich hab auch das Problem mit der Anwesenheitserkennung. Deshalb würde mich interessieren, wie @int5749 das gelöst hat.

Ich hab das "AVM FRITZ!Box Binding" und das "Network-Binding" installiert. Als Router kommt eine Fritz-Box 7490 zum Einsatz. Tablet und Smartphones melden sich beim "nachhause" kommen als online, aber nach einer Weile gehen sie in einen "deep sleep" und wachen erst wieder auf, wenn man damit "arbeitet".
Bei mir liegen aber IPad und IPhone doch schon mal einen halben Tag oder auch mal 2 Tage "im Eck" :) und dann mach ich mich unter Umständen mit dem "normalen" Telefon auf die Suche um zu hören in welchem Zimmer oder in welcher Jackentasche das Ding steckt :lol: (und dann wacht's auch wieder auf aus dem "Deep-Sleep".

Re: Anwesenheitserkennung nachtiggern

Verfasst: 30. Jan 2022 12:54
von oh73
wie @int5749 schon geschrieben hat mit einer Fritzbox klapt das relativ gut und zuverlässig!

ich hab mehrere Android Geräte, mit Ping funktioniert da bei den meißten nichts!

ich nutze das tr064 Binding mit der Fritzbox 7490 und das funktioniert zuverlässig.

wenn ich weg gehe kann das je nach Gerät schon mal 5-10 Minuten dauern, bis das erkannt wird.
wenn ich komme registriert das die Fritzbox sofort!