Zuverlässige Anwesenheitserkennung mit AirPort Extreme

  • Ich verwende zuhause eine zuverlässige Lösung für die Anwesenheitserkennung von Personen mittels ihrer Smartphones. Das Problem bei den Smartphones ist, dass man sie zwar pingen kann, aber sie nur antworten, wenn sie entweder nicht im Standby sind oder geladen werden. Wenn sie einfach nur so rumliegen, dann antworten sie nicht auf das Ping. Plugins wie homebridge-people versuchen das Problem zu reduzieren, aber zuverlässig ist es nicht.


    Meine Lösung funktioniert so: Wenn ein SmartPhone zuhause ist, ist es im WLAN und bleibt auch im WLAN, selbst wenn es im Standby ist! Ich habe bei mir zuhause vier Access Points vom Typ Apple AirPort Extreme, die man per SNMP abfragen kann. So erhält man eine Liste aller aller MAC-Adressen aller Geräte, die im WLAN angemeldet sind. Ich verwende das Plugin homebridge-http-webhooks. Damit lassen sich beliebige Geräte anlegen, unter anderem "Occupy Sensor" für jede Person. Die config.json enthält bei mir den folgenden Eintrag:



    Damit erscheinen insgesamt vier Occupancy Sensors, der letzte soll aktiv werden, wenn irgendjemand zuhause ist. Das Plugin kann nun per URL von außen über Port 10000 gesteuert werden. Die Logik sitzt bei mir im folgenden Perl-Skript:


    Man kann im Kopf der Datei die folgenden Parameter anpassen:

    • aps: Die Liste der Access Points, bei mir axug = Untergeschoss, axeg = Erdgeschoss, axog = Obergeschoss, axdg = Dachgeschoss
    • persons: Die Liste der Personen (die keys müssen natürlich identisch sein mit den Einträgen in der config.json) und die MAC-Adresse ihrer iPhones.

    Das Script ist angepasst für AirPort Extreme bis Generation 4 (die flachen), die neueren (hohen) haben wohl kein SNMP mehr, daher sind sie für mich uninteressant. Aber die Logik lässt sich leicht an andere Access Points anpassen, die ihre Zustände per SNMP rausrücken.


    Dieses Skript muss noch in die Crontab eingetragen werden, damit es minütlich läuft:


    Code: /etc/cron.d/occupancy
    * *     * * *   root    /usr/local/bin/occupancy

    Diese Anleitung dient als Anregung, wie eine zuverlässige Lösung funktioniert und eignet sich für Leute, die sich mit Unix, Perl und SNMP auskennen.

  • Warum nutzt du nicht das People Plugin?


    Läuft bei mir zu 100%.

  • 10 min keiner im WLAN und der Status ändert sich auf Abwesend.

  • dkrizic deswegen erkennt people die abwesenheit erst nach der eingestellten zeit, zb 10min. Bei meiner frau musste ich 20min einstellen, sonst führt dein dir beschriebenes problem dazu, dass people denkt, dass du abwesend bist. Wie ist das denn bei der snmp lösung? Vielleich kann man das in people einbauen...

  • Eine Abwesenheit bei mir aktiviert die folgenden Punkte:

    • Alle Lichter werden ausgeschaltet
    • Die Aussensteckdosen werden ausgeschaltet
    • Die Warmwasserpumpe wird ausgeschaltet
    • Entertainment (TV, Receiver, usw.) werden ausgeschaltet
    • Eine Meldung über offene Fenster/Türen wird per Push-Notification gesendet (geht nicht mit HomeBridge, dafür läuft hier noch OpenHAB)
    • Die Alarmanlage wird auf "Abwesend" gesetzt, d.h. inklusive Innenüberwachung über Bewegungsmelder

    Für sowas wäre mir eine Lösung wie People etwas unzuverlässig, ihr versteht...!?

  • Habe ich doch oben beschrieben. Es reagiert spätestens nach einer Minute, aber wichtiger ist, dass es NICHT reagiert, wenn alle Handies im Standby einfach rumliegen.

  • Das ist eine spezielle Lösung für Apple ,

    es dürfte extrem schwer sein dies für alle Router verfügbar zu machen.

    Da nicht alle WLAN-Router (auch Access Point's) SNMP unterstützen und wenn ja kann es zig verschiedene Abfrageformate haben.

    :(

  • Folgende Voraussetzungen müssen gegeben sein:

    • Alle APs im Haus müssen SNMP unterstützen
    • Der AP muss per SNMP die Liste der aktuell angemeldeten MAC-Adressen rausrücken

    Die Spezifika der APs (OIDs) könnte man relativ leicht anpassbar machen.