Anwesenheitserkennung nachtriggern

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

cyrill.sneer
Beiträge: 17
Registriert: 25. Jan 2022 12:14
Answers: 0

Anwesenheitserkennung nachtriggern

Beitrag 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
Zuletzt geändert von cyrill.sneer am 1. Feb 2022 20:08, insgesamt 1-mal geändert.

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Anwesenheitserkennung nachtiggern

Beitrag von peter-pan »

Wo siehst du hier ein Problem ?

Ich denke die Regel kann 1:1 weiter laufen.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

cyrill.sneer
Beiträge: 17
Registriert: 25. Jan 2022 12:14
Answers: 0

Re: Anwesenheitserkennung nachtiggern

Beitrag 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

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Anwesenheitserkennung nachtiggern

Beitrag 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
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

cyrill.sneer
Beiträge: 17
Registriert: 25. Jan 2022 12:14
Answers: 0

Re: Anwesenheitserkennung nachtiggern

Beitrag 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?

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Anwesenheitserkennung nachtiggern

Beitrag von peter-pan »

Hallo @int5749 hat dir ja schon geantwortet, aber muss man den Timer nicht vorher "global initialisieren vor deinen Rules ?
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Anwesenheitserkennung nachtiggern

Beitrag 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
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

Benutzeravatar
udo1toni
Beiträge: 15241
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Anwesenheitserkennung nachtiggern

Beitrag 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)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Anwesenheitserkennung nachtiggern

Beitrag 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".
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

oh73
Beiträge: 302
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: Anwesenheitserkennung nachtiggern

Beitrag 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!
OH 4.3.0 auf HP 26o G1 Dm Mini Pc mit MX_Linux

Antworten