Community

Anwesenheitserkennung mit homeean presence


#1

Im Zusammenhang mit homee war ich auf der Suche nach einer einfachen, aber zuverlässigen Möglichkeit zur Anwesenheitserkennung. Die bestehenden Lösungen haben mich jedoch nicht zu Einhundertprozent überzeugt, so dass ich mit homeean-presence eine eigene Lösung geschaffen habe. Vor allem wollte ich, dass ich verschiedene Erkennungssystem miteinander verbinden kann (Bleacons, IP-Geräte und Webhooks via Geofence o.ä.), ohne homee mit einer Masse an Homeegrammen zu belasten und mich selbst zu verwirren :wink:

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

Bei der Entwicklung habe ich mich von den umfangreichen Themen zur Anwesenheitserkennung aus der homee-community sowie von bestehenden Lösungen (z.B. homeassistant) inspirieren lassen. @hblaschka hat mich mit wertvollen Hinweisen und einem gesponserten Bleacon unterstützt.

Dank homeean ist die Installation auf einem Raspberry Pi 3 auch für Anfänger machbar. Bei der Installation auf einem Raspberry Pi 2 wird noch ein Bluetooth Stick benötigt (Ein Beispiel zu einem funktionierenden Stick findet ihr auf meiner Seite https://himpler.com/blog/anwesenheitserkennung-homeean-presence)

Eine ausführliche Anleitung sowie Details zu homeean presence lassen sich unter homeean nachlesen. Dort ist nicht nur die Installation (via homeean oder manuell) sondern auch die Funktionsweise beschrieben.

Das Projekt steckt noch in den Kinderschuhen, also bitte nicht gleich verzweifeln wenn eine Funktion fehlt oder etwas nicht wie erwartet funktioniert. Wer unterstützen möchte, ist herzlich eingeladen. Sei es mit Fehlerhinweisen, Verbesserungsvorschlägen oder PullRequest im Repository.

Wenn Euch das Projekt gefällt, freue ich mich hier über ein Like und auf Github über einen Star.


#2

Hallo Stefan,

super!
Wenn ich das richtig verstehe, könnte man also das Handy als “Auslöser” nehmen oder einen iBeacon.
Hast Du hierfür mal Beispiele? Handys werden gerne mal vergessen, aber iBeacons könnte man z.B. am Schlüsselbund haben :wink:

Hoffe ich liege damit nicht falsch :thinking:


#3

Dickes Thumbs Up, Stefan!


#4

Du liegst richtig. Handy oder Beacon bzw. Handy und Beacon sind möglich. Ich hab den Minew C6 im Einsatz. Läuft bei meinen rudimentären Tests bisher ganz gut.

Zusätzlich zu der automatischen Erkennung kann man den Status per Webhook setzen. Dabei kann dann eine Zeit angegeben werden, in der der Status durch die automatische Erkennung nicht geändert wird.
Ist zum Beispiel hilfreich, wenn ich 5 Minuten vor Ankunft schonmal „anwesend“ sein will. Bis zur tatsächlichen Ankunft wäre bei einem Intervall von 30 Sekunden der Status ja wieder abwesend. Durch diese Funktion bleibt er aber mindestens für die Dauer X auf Anwesend.


#5

Wer den dazu passenden Beacon sucht:

https://www.beaconshop24.de/minew-c6.html


#6

gehen die G-tags auch??


#7

Ich geh mal davon aus. Die sollten ja auch über eine uuid verfügen und per ble trackbar sein.
Kann man auf einem Raspberry nach Installation der Bluetooth Pakete mit
sudo hcitool lescan
testen. Damit sollte er was finden.


#8

Ok werde ich heute Abend mal testen. DAnke!


#9

Es funktioniert (nach einigen von Stefan inzwischen ausgeräumten Wehen) bei mir sehr gut. Wer Issues beim Starten des Dienstes hatte, einfach noch mal neu installieren, da war bis heute Nachmittag noch ein Bock im Service-Autostart-File.

Ich kann auch bestätigen: Es läuft auch auf dem Raspberry Pi Zero-W (ohne zusätzlichen Bluetooth-Dongle).

Wenn die im Slack angekündigten Optimierungen beim Tracking von iPhones (die haben einen etwas tieferen Schlafmodus) noch kommen und auch lokale Webhooks in Richtung homee unterstützt werden (die Webhooks im config.json unterstützen derzeit nur https:// was Webhooks in Richtung homee derzeit noch über den Proxy zwingt), dann ist das eine runde Sache.

Ach ja: Die unten gezeigten von homee ausgehenden Webhooks in Richtung homeean-presence könnt Ihr auch von Apps wie Geofency aus beim Eintritt in die Home-Location oder den erweiterten Kreis derselben auslösen…

So habe ich es bei mir für die Tests implementiert…

Auf homeean-Seite:

Meine config.json

{
    "interval": 30,
    "threshold": 180,
    "port": 3000,
    "webhooks": {
        "absent": "https://HOMEEID.hom.ee/api/v2/webhook_trigger?webhooks_key=WEBHOOKKEY&event=homeean-presence-absent",
        "present": "https://HOMEEID.hom.ee/api/v2/webhook_trigger?webhooks_key=WEBHOOKKEY&event=homeean-presence-present"
    },
    "persons": [
        {
            "name": "holger",
            "uuid": "AABBCCDD-ABCD-12AB-AB12-AABBCCDD1234",
            "ip": "192.168.178.66"
        },

          {
            "name": "koenigin",
            "uuid": "AABBCCDD-ABCD-23AB-AB23-AABBCCDD2345"
        } 
    ]
}

Meine Holde vergisst immer wieder Ihr Handy, deswegen hat sie nur einen Minew-Dongle am Schlüsselbund (den vergisst sie in der Regel nicht, sie sucht ihn regelmässig in den Tiefen einer Ihrer Taschen - aber sie vergisst ihn nicht). Mich tracke ich mit iPhone UND Minew.

Nach dem Speichern der config.json den Dienst noch mal neu starten nicht vergessen:
sudo systemctl restart homeean-presence

In dieser Beispielkonfiguration springt der homee auf Abwesend wenn KEINES der getrackten Geräte erkannt wird und auf Anwesend sobald EINES der getrackten Geräte erkannt wird.

Der absent und der present Webhook triggern zwei entsprechende HGs auf homee-Seite.

Auf homee-Seite:

Im homee habe ich mir vier HGs angelegt.

Warum nicht nur zwei, mag sich jetzt manch jemand fragen?

Ganz einfach, ihr wollt ja ggf. auch lokal (übers Handy oder über das Walltablet) den Status übersteuern können, allerdings muss das homeean-presence ja auch (möglichst zeitnah) mitbekommen, der Präsenzstatus ändert sich jedoch nicht sofort ohne, dass eine der o.g. Bedingungen eintritt. Ihr müsst das also ggf. lokal übersteuern.

Deshalb braucht es mindestens diese vier HGs:

homeean-presence-present

Das ist der eingehende Anwesend-Webhook, der von homeean-Presence bei Anwesenheit einer der definierten Personen ausgelöst wird.

homeean-presence-absent

Das ist der eingehende Abwesend-Webhook, der von homeean-Presence bei Abwesenheit aller Geräte aller definierten Personen ausgelöst wird.

homeean-presence-lokal-anwesend

Das ist ein aus homee ausgehender Webhook in Richtung homeean. Damit meldet Ihr eine manuelle lokale Übersteuerung der Anwesenheit an homeean. Im Webhook (Methode: Post, Content-Type: Applications/JSON) packt Ihr folgenden Body:

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

homeean-presence-lokal-abwesend

Das ist ein aus homee ausgehender Webhook in Richtung homeean. Damit meldet Ihr eine manuelle lokale Übersteuerung der Abwesenheit an homeean. Im Webhook (Methode: Post, Content-Type: Applications/JSON) packt Ihr folgenden Body:

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

Wenn Ihr auf der absolut sicheren Seite sein wollt, dann jagt bei den vom homee ausgehenden Webhooks den Status für JEDE getrackte Person nacheinander raus (zwei Webhooks Richtung homeean (jeweils endend auf /name - der Personen, welche Ihr im Config definiert habt) und setzt die Duration ggf. etwas höher (es kann etwas dauern, bis Geräte erkannt bzw. nicht mehr erkannt werden).

Wie ihr oben seht melde ich auch ein manuelles Übersteuern des Modus auf Urlaub im homeean-presence-lokal-abwesend HG.

Jedwedes Feedback und weitere Anwendungsbeispiele sind hier willkommen.


#10

Für mich wäre es noch schön wenn man pro Person anwesend oder abwesend webhooks senden könnte, so könnte man abbilden wer gerade alles zu Hause ist so wie beim bash Skript von Julian. Sind dann zwar wieder deutlich mehr HGs, aber ich nutze das für mein Wandtablet.

Viele Grüße

Daniel


#11

Das würde Sinn machen, allerdings gibt es (zumindest jetzt noch nicht) keine ansprechbaren Objekte für Personen (bzw. User) in homee. Aber wer weiss, evtl. denken die homees (@Thomas, @Timo?) bei der anstehenden Implementierung von Präsenzfunktionen da dran und machen damit die Integration von Drittfunktionen einfacher?


#12

Ich werd mal sehen ob man das einfach über die Einstellungen realisieren kann.

Ich habe gerade ein Update veröffentlicht. Damit geht jetzt sowohl http als auch https.


#13

Hey.
Dann bitte aber konfigurierbar. Ich finde es gut das man egal wieviele Personen es sind nur einen Webhook hat. Die Information wer zuhause ist interessiert mich in diesem Szenario nicht, da sich homee egal wieviele zuhause sind immer gleich verhalten soll.


#14

Stefan,

Ich bin da derselben Meinung wie @Baschtl - entweder alle (wenn im Header der Config gesetzt) oder individuelle Webhooks, wenn bei den einzelnen Personen gesetzt. Damit hättest Du dann volle Flexibiliät.


#15

Ich hab homeean-presence bei mir auch mal testweise installiert und tracke damit vorerst ein Android Handy, bei dem leider die Variante per Geofency nicht funktioniert. Bis jetzt läuft es sehr gut. Super wäre wenn die Meldung per webhook für jedes Device möglich ist. Damit könnte ich die Automatic Lösung in den Ruhestand schicken, vorausgesetzt die iPhones laufen auch zuverlässig.
Bis hierher schon mal vielen Dank an @stfnhmplr für die super Umsetzung.

VG Sven


#16

Doofe Frage, muss man den „webhookkey“ noch anpassen? Wenn ja wo finde ich den mittlerweile? :face_with_raised_eyebrow:


#17

Den erzeugst Du im homee via HGs, siehe Bilder…


#18

Klappt soweit ganz gut, allerdings springt er ab und zu doch wieder von Anwesend auf Abwesend und zurück.
Als Werte hab ich folgende ausgewählt:
interval 10
threshold 180

Handy ist ein iPhone 6s.

Hast du da noch einen Tipp, bzw. Erfahrungswerte zu anderen Werten für Interval und Threshold?


#19

Mit den Werten habe ich selbst noch nicht viel rumgespielt. iPhone geht wie gesagt noch nicht vernünftig. Das kommt aber bald.


#20

Huhu,
da ist das WE ja ausgebucht! Sch… auf WM :wink:
Ich habe ja momentan die Presence-Lösung via Beacon-App auf meinem DashboardTablet.
Leider ist die Beacon-App nicht zuverlässig oder der BT-Empfang vom Tablet - keine Ahnung.
Manchmal läuft es tagelang durch, momentan wieder ein Kommen und Gehen bei uns. :sweat_smile:
Auf jeden Fall liegt mein P3 und zusätzlicher BT-Stick (soll angeblich besser sein) bereit.
Die G-Tags sollten jedenfalls funtionieren denke ich.
Habe nur noch auf die Funtion hier gewartet. :+1: