presence

Anwesenheitserkennung leicht gemacht

homeean presence stellt Dir eine einfache Möglichkeit zur Anwesenheitserkennung bereit. Über IP-Geräte und BLE-Devices (z.B. Beacons) wird der Anwesenheitsstatus einer Person ermittelt. Außerdem wird für jede Person ein Webhook bereitgestellt, mit dem die Anwesenheit manuell gesteuert werden kann.

Installation

homeean presence lässt sich auf verschiedenen Geräten installieren. Auf einem Raspberry Pi 3 ist die Installation Dank eines Buildscriptes von homeean besonders einfach. Wähle bei den Paketen einfach homeean presence aus, stimmte den Bedingungen zu und erzeuge Dein individuelles Buildscript.

Möchtest Du homeean presence lieber selbst installieren, musst Du folgende Schritte ausführen:

sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev libpcap-dev
sudo setcap cap_net_raw+eip $(eval readlink -f `which node`)
sudo npm install -g homeean-presence --unsafe-perm

Zur Sicherheit kannst Du mit dem Befehl sudo hciconfig kurz überprüfen, ob Dein Bluetooth Modul aktiv ist

Damit homeean presence weiß, welche Personen für die Anwesenheit relevant sind, muss jetzt eine Konfigurationsdatei angelegt werden.

Konfiguration

Bei der Installation über homeean wird die Konfigurationsdatei bereits automatisch erstellt. Bei der manuellen Installation muss die Datei unter dem Pfad ~/.homeean-presence/config.json nach dem folgenden Beispiel neu erzeugt werden.

{
    "interval": 20,
    "threshold": 300,
    "port": 3000,
    "webhooks": {
        "absent": "https://webhook-for-absence",
        "present": "https://webhook-for-presence"
    },
    "persons": [
        {
            "name": "Your Name",
            "ip": "192.168.1.1",
            "ble": "AA:BB:CC:DD:EE:FF",
	        "webhooks": {
	            "absent": "https://webhook-for-absence",
	            "present": "https://webhook-for-presence"
            }
        },
        ...
    ]
}
interval:
Intervall in Sekunden, in welchem die Personen gesucht werden
threshold:
Zeit in Sekunden, in denen keine Statusänderung vorgenommen wird. Dadurch werden Fehlerkennungen reduziert. Gerade bei der Anwesenheitserkennung von iPhones sollte der Wert bei etwa 600 Sekunden liegen.
port:
Der Port, unter dem die Webhooks erreichbar sein sollen
webhooks:
Hier lassen sich unter absent und present Webhooks (z.B. homee Webhooks aus Homeegrammen) definieren, die nach Statuswechsel getriggert werden. (Absent: Keine Person ist Zuhause, Present: Mindestens eine Person ist anwesend). Das funktioniert über folgendes URL Schema auch mit lokalen Webhooks direkt an den homee, ohne Umwege über den Proxy http://[ip-des-homee]:7681/api/v2/webhook_trigger?webhooks_key=[WEBHOOKKEY]&event=[HOMEE-EVENT-NAME]
persons:
Hier werden die Personen definiert. Vergib einen eindeutigen Namen. Anschließend kannst Du die IP-Adresse (z.B. eines Smartphones) und die MAC-Adresse eines BLE-Gerätes (Smartphone, Beacon) eintragen.
webhooks:
Hier können wie auch weiter oben Webhooks für einzelne Personen hinterlegt werden. Diese werden ausgelöst, sobald sich der Anwesenheitszustand der jeweiligen Person ändert.

Start der Anwesenheitserkennung

Bei der Verwendung von homeean ist bereits ein Autostart von homeean-presence eingerichtet. Nach dem ändern der Konfiguration muss der Service mit sudo systemctl restart homeean-presence neu gestartet werden.

Bei der manuellen Installation kannst Du homeean-presence mit dem Befehl homeean-presence starten. Willst Du sehen, was im Hintergrund passiert, starte die Anwendung mit LOG_LEVEL=DEBUG homeean-presence im Debug-Modus

Funktionsweise

homeean-presence prüft im angegeben Intervall, welche Personen Zuhause sind. Wird eines der definierten Geräte erkannt, gilt die Person nach Ablauf der definierten Schwelle (threshold) als anwesend. Wird kein Gerät erkannt, gilt die Person als abwesend. Sind Webhooks für die Person definiert, werden diese passend zum neuen Status ausgelöst.

Nach jeder Statusänderung einer einzelnen Person wird außerdem überprüft, wie der Gesamtstatus des Haushalts ist. Ist mindestens eine Person anwesend, wird der Webhook present ausgelöst. Ist keine Person anwesend, wird der Webhook absent ausgelöst.

Eingehende Webhooks

homeean presence stellt neben der Automatischen Anwesenheitserkennung auch eingehende Webhooks bereit. Unter http://[ip-des-raspberry]:[port]/homeean-presence/[name] also z.B. http://192.168.178.1:3000/homeean-presence/manni kann ein Post-Request mit folgendem JSON-Body empfangen werden.

{
    "state": true,
    "duration": 30
}

Der state kann true oder false (Anwesend/Abwesend) sein. Die duration ist optional. Dieser Wert definiert, wieviele Sekunden der gesetzte Status gelten soll. Damit wird die übrige Erkennung für den gewählten Zeitraum deaktiviert. Der Standard ist 30 Sekunden.

Fehler, Support und Unterstützung

Du vermisst eine wichtige Funktion oder etwas funktioniert nicht wie erwartet? Hinterlasse ein Feedback auf Github oder in der homee Community.

Wenn Dir die Anwesenheitserkennung gefällt, lasse einen Star auf Github da. Ansonsten freue ich mich auch über eine Einladung zum Kaffee.

Group Created using Figma Buy me a coffee