Geofencing in homee - DIY Projekt (Geofency App, Beacon, Fritzbox, NodeRed, Enocean Simulation)

Hi zusammen,

nach Jahren der Bastelei mit Probieren verschiedener Settings und durch großartige Inspirationen hier in der Community wollte ich nach letztem Feintuning meine Anwesenheitssteuerung für homee präsentieren.

Ich weiß, dass DIY nicht alle hier anspricht und manche lieber Plug & Play möchten… für Interessierte will ich mein Vorgehen im Detail hier darlegen.

Zum Thema selber:
Geofencing ist schon lange ein Thema und gerade im Smart Home macht das Sinn. homee hat vor knapp zwei Jahren die Status-Setzung eingeführt. Nur macht diese nicht so wirklich viel Sinn, wenn man den jeweiligen Status manuell setzen muss, um nachgeschaltete Aktion automatisch auszulösen. Um die automatische Statussetzung geht es also hier.
Meine jetzige Lösung hat eine Zuverlässigkeit von ca. 99,9 % und ist auf mehrere Benutzer/ Familienmitglieder gleichzeitig anwendbar.

Voraussetzungen:
a) Geofency App (iOS) oder EgiGeoZone App (Android) -> ich beziehe mich hier nur auf die iOS Variante
b) ein oder mehrer Beacons (hier: Minew C3 USB << Klick >>
c) Fritzbox (günstig für VPN-on-demand, lokales PHP-Script kann von außen erreicht werden)
d) Raspberry Pi für NodeRed, PHP-Server und ggf. Enocean Simulation (dazu später mehr), Basiskenntnisse notwendig

Vorüberlegungen:
Zuerst muss man sich überlegen, wie das eigene Geofencing genau funktionieren soll.
Bei mir verbindet sich mein iPhone, sobald es in Reichweite kommt, mit den zu Hause installierten und in der Geofency App verknüpften Beacons (ich habe zwei, jeweils eingesteckt in einem Oomi Plug in der Garage und nahe der Haustür). Dadurch wird der Anwesenheitsstatus gesetzt.
Beim Verlassen der Hauses läuft das Ganze über die GPS-Lokalisation in der Geofency App (100m Radius wird überschritten). Dann wird der Status auf Abwesenheit gesetzt.
In beiden Fällen ruft die Geofency App ein lokales PHP-Script auf, welches jeweils einen Webhook an homee sendet. Mittels Homegrammen macht man dann weiter.
Ich bin noch einen Schritt weiter gegangen und erzeuge mittels NodeRed und Enocean Simulation virtuelle Präsenzmelder in homee, die so den aktuellen Status der einzelnen Familienmitgliedern in homee oder HomeKit anzeigen. Über die Gruppenbedingung in Homegrammen kann so auch die übergeordnete Statussetzung in homee erfolgen.

Fotos
Zunächst ein paar Fotos für den ersten Eindruck:

Querverweise/ Literatur/ Vorarbeiten:

Vorgehen:
a) Geofency App
Den USB-Beacon mittels Netzteil oder wie in meinem Fall in einem Oomi-Plug mit Strom versorgen. Mittels der App BeaconSet passt man ggf. die UUID und die Sendestärke des Beacons an (Rest ist egal). Mittels der UUID kann man dann den Beacon als Überwachungspunkt in der Geofency App konfigurieren.
Entsprechend der Anzahl der Beacons (bei mir 2 Stück) legt man dann die Überwachungspunkte an. Genauso verfährt man mit dem Abwesend-Status (hier eben anstatt Beacon über “aktuelle Position”).
Anschließend definiert man jeweils in den Einstellungen die Webhooks in der Form von PHP-Aufrufen, auf GET setzen, User und PW eintragen:

Bsp: http://diskstation.fritz.box/geofency/michael_home.php

<?php header("Location:https://DEINEHOMEEID.hom.ee/api/v2/webhook_trigger?webhooks_key=DEINWEBHOOKKEY&event=Michael_home"); exit; ?>

Für jedes Familienmitglied braucht man dann ein home.php und ein away.php Script anhand des Beispiels. Dieses muss auf einen lokalen Server gepackt werden. Extern und frei im Internet empfiehlt sich aufgrund der sensiblen Daten (homee ID und webhook key definitiv nicht.

b) Raspberry Pi, alternativer PHP-Server
Die angelegten php-Skripte müsst ihr dann noch auf einen Server packen. Das geht mit dem Raps (braucht ihr sowieso wegen NodeRed) oder mit anderen. Ich habe alternativ meine Diskstation verwendet, da hier schon PHP installiert und auch ein Apache-Server lief. Die Skripte habe ich einfach in einen Share gepackt. Ihr müsst eigentlich nur drauf achten, dass die Berechtigungen stimmen und ihr die Benutzerdaten (user/pw) habt.
Liegen die php-Skripte bereit, könnt ihr alles in der Geofency App fertig machen und gleich testen. Der Webhook sollte für den Homestatus bei Betreten und für den Away Status bei Verlassen aktiviert werden.
Habt ihr alles richtig gemacht, bekommt ihr im eigenen WLAN eine “OK” Meldung.

c) Fritzbox, VPN-on-demand
Damit ihr auch von außen, aus dem Mobilfunknetz die lokalen php-Skripte erreichen könnt, braucht ihr eine VPN-Verbindung, am besten on-demand. Mit der Fritzbox und iOS funktioniert das perfekt. Die Einrichtung ist wirklich relativ einfach. Dank @fisch habe ich es mit folgender Anleitung schnell hinbekommen:
https://www.meintechblog.de/2015/02/vpn-on-demand-zwischen-iphone-und-fritzbox-einrichten/

Alternativ kann man die Skripte natürlich auf einem Webspace ablegen. Man sollte aber absolut auf die Absicherung achten, damit eure Daten nicht frei im Internet stehen.

d) Webhooks von Geofency und die Weiterverarbeitung
Die von Geofency an homee gesendeten Webhooks nutzt man für Homegramme, um z.B. direkt die Statussetzung vorzunehmen.
In meinem Fall sende ich jeweils einen weiteren Webhooks an NodeRed weiter um dort ein virtuelles Gerät zu steuern:

Auslöser ist der Webhook von Geofency, den ich im php-Skript konfiguriert habe. Bedingung ist der Staus meines virtuellen Präsenzmelders (der Webhook soll nicht mehrfach, wenn ich mich zu Hause bewege neu abgesetzt werden). Und die Aktion sendet einen neuen Webhook an NodeRed.

e) virtuelle Präsenzmelder in NodeRed mittels Enocean Simulation
In Anlehnung an die oben angeführten Threads habe ich in NodeRed virtuelle Präsenzmelder erzeugt, die in homee dann als Geräte auftauchen. Gesteuert werden diese durch die weitergeleiteten Webhooks (Geofency -> homee).

Flow in NodeRed lautet folgendermaßen:

[{"id":"f9ff3918.a1ea58","type":"change","z":"2cc975df.7f8f7a","name":"","rules":[{"t":"move","p":"payload.On","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":390,"y":2500,"wires":[["3362a2cd.b6086e"]]},{"id":"3362a2cd.b6086e","type":"change","z":"2cc975df.7f8f7a","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"true","fromt":"bool","to":"{\"meta\":{\"eep\":\"a5-07-01\",\"channel\":6,\"type\":\"data\"},\"data\":{\"PIRS\":250}}","tot":"json"},{"t":"change","p":"payload","pt":"msg","from":"false","fromt":"bool","to":"{\"meta\":{\"eep\":\"a5-07-01\",\"channel\":6,\"type\":\"data\"},\"data\":{\"PIRS\":0}}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":620,"y":2500,"wires":[["294ea16b.879a0e"]]},{"id":"20aaf3c6.0371cc","type":"enocean-out","z":"2cc975df.7f8f7a","serialport":"36056171.b343b6","name":"","logOutput":false,"x":970,"y":2500,"wires":[[]]},{"id":"294ea16b.879a0e","type":"msg-resend","z":"2cc975df.7f8f7a","interval":"2","intervalUnit":"hours","maximum":"0","bytopic":false,"clone":false,"firstDelayed":false,"addCounters":false,"highRate":true,"outputCountField":"","outputMaxField":"","name":"","x":810,"y":2500,"wires":[["20aaf3c6.0371cc"]]},{"id":"610fdead.4ab978","type":"inject","z":"2cc975df.7f8f7a","name":"Präsenzmelder CH6","topic":"","payload":"{\"meta\":{\"eep\":\"a5-07-01\",\"channel\":6,\"type\":\"teach-in\"},\"teach-in\":{\"type\":\"4BS\"},\"data\":{\"LRN\":1}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":130,"y":2440,"wires":[["f87738b.87feac8"]]},{"id":"f87738b.87feac8","type":"enocean-out","z":"2cc975df.7f8f7a","serialport":"36056171.b343b6","name":"","logOutput":true,"x":350,"y":2440,"wires":[[]]},{"id":"e8f84b59.c66ee","type":"http in","z":"2cc975df.7f8f7a","name":"Michael @Home","url":"michael_anwesend","method":"post","upload":false,"swaggerDoc":"","x":120,"y":2500,"wires":[["f9ff3918.a1ea58"]]},{"id":"361be23e.2081d6","type":"http in","z":"2cc975df.7f8f7a","name":"Michael Away","url":"michael_abwesend","method":"post","upload":false,"swaggerDoc":"","x":110,"y":2540,"wires":[["f9ff3918.a1ea58"]]},{"id":"36056171.b343b6","type":"enocean-config-node","z":"","serialport":"/dev/ttyUSB0"}]

Die virtuellen Präsenzmelder lassen sich auch in HomeKit nutzen.

f) Integration in die homee Statusmeldungen
Die Integration zur Steuerung der homee Statussetzung ist durch einfache Homeegramme unter Benutzung der Gruppenfunktion möglich.

Anwesenheit: Wenn einer aus der Gruppe Familie den Status Anwesenheit zeigt.
Abwesenheit: Wenn alle aus der Gruppe Familie den Status Abwesenheit zeigen.

Danksagung:
An dieser Stelle möchte ich, stellvertretend für die ganze Community, dreien der “alten Hasen” @micha, @fisch, @Sven meinen besonderen Dank aussprechen für die Unterstützung, Ideen und Hilfe bei der Umsetzung solcher Projekte.

Fragen, Anregungen, Hinweise:
Sind gerne willkommen! :wink:

Viel Spaß beim Selbermachen!

VG
Michael

35 „Gefällt mir“

Hallo Michael, da habe ich gleich mein neues Projekt! Ich mache derzeit meine Presence über die Einwahl der Handys im WLAN der Fritzbox. Funktioniert ganz gut, nur mit zwei Unzulänglichkeiten. Zum Energiesparen schalten die Handys ab und zu das WLAN aus und melden somit abwesend und die Fritzbox meldet die Geräte erst nach 10 Minuten abwesend. Ist eine Einstellung in der Fritzbox, wo man nicht ran kommt. :+1:

2 „Gefällt mir“

Hier gehören definitiv mehr Likes dran. :tumbler_glass:

4 „Gefällt mir“

Super zusammengefasst @medicus07 Michael :+1:

4 „Gefällt mir“

Hi Steffen,
ich hatte vorher auch Lösungen über Fritzbox und UniFi getestet… jeweils ohne zufrieden stellenden Erfolg.

Ich weiß nicht wann und wie etwas von homee kommen wird, aber ich denke, dass auch homee auf eine Beacon/GPS-Lösung setzen sollte, da sie sehr zuverlässig ist und man dann auch noch mal mehr Hardware verkaufen könnte.

Na @Chris wie steht’s?

3 „Gefällt mir“

Moin Michael,

eine echt tolle Zusammenfassung zu unserer Lösung der Anwesenheitssteuerung :+1:

Aus der Erfahrung der letzten zwei Jahre und verschiedenen Lösungswegen kann ich nur sagen, das dies die einzig wirklich zuverlässige Lösung ist. Ich habe zusätzlich sämtliche Logik nach Node Red ausgelagert und übergebe mit der Enocean Simulation die Stati an homee. Anfangs war ich da auch etwas skeptisch, aber die Simulation der Präsenzmelder, danke :pray: hier an die großartige Arbeit von @Micha, funktioniert perfekt. So habe ich nach einigen Wochen testen komplett darauf umgestellt. Meine Webhooks der Geofency App laufen in ioBroker in den dort verfügbaren Adapter und von da zu Node Red.

Ich hoffe das homee eine ähnlich perfekte Lösung liefern wird um allen die sich die Umsetzung nicht zutrauen oder den Aufwand einen Pi für Node Red und ioBroker zu betreiben scheuen, ebenfalls eine smarte Anwesenheitssteuerung zu ermöglichen.

VG Sven

5 „Gefällt mir“

homee hätte ja einen Großteil der benötigten Dinge ja schon an der Hand…

  • Zugriff auf homee über Proxy, kein VPN nötig
  • Logik durch Homegramme schon in der App, keine Zusatzapp nötig
  • Standortbestimmung integriert

Man müsste sich nur noch für eine Beacon Variante entscheiden und dies zum Beispiel Benutzer bezogen integrieren.

3 „Gefällt mir“

Ja es könnte so einfach sein. Aber mal ehrlich was wäre homee ohne die ganzen Basteleien rundherum. Ich glaube das wäre total langweilig :wink:

5 „Gefällt mir“

Ich habe noch eine kleine Änderung vorgenommen…

Es ist im Verlauf bei meiner Frau einmal vorgekommen, dass der Abwesend Status nicht richtig gesetzt wurde. Der Webhook aus Geofency wird nur einmal gesendet… Zur Sicherheit habe ich dies jetzt verdoppelt.

Nach 100 m so wie nach 500 m Entfernung von zu Hause meldet Geofency den Abwesend-Status.

1 „Gefällt mir“

Coole Bastelei. Für mich aber zu Zeitaufwendig. Ich habe für die Anwesenheitssteuerung im homee den Zwischendienst IFTTT verwendet.

Ich nutze zu Hause tado Heizkörperthermostate, die können bereits Geofence, Nuki kann ebenfalls Geofence. Also wenn tado in Abwesenheitsmodus gesetzt . wird, schließe Nuki ab. Und wenn Nuki abgeschlossen wird, schalte auf Abwesenheit… Und dann schicke folgenden Webhook ab zb die IR Frequenz (über den Blastbot) des Saugroboters.

So habe ich das Problem für mich gelöst.

Grüße Kevin

Hallo zusammen,
eine sehr interessante Diskussion. Nur aus Interesse: Was spricht gegen eine reine Fritzbox + Node Red + Handy Lösung, also ohne IFTTT, Beacons, Geofency, … ?

Ich habe das spaßeshalber in meiner Wohnung ausprobiert, ohne das ich aktuell tatsächlich Aktionen damit auslösen würde, aber die An- und Abwesenheitserkennung funktioniert lt. meines Logfiles erstaunlich genau. Node Red checkt jetzt eben, ob die MAC Adressen unserer Handys in der Fritzbox angemeldet sind und das war es auch schon. Anwesenheit wird in unter einer Minute erkannt, Abwesenheit nach ca. einer Viertelstunde. Ich hatte hier im Forum etwas von Problemen mit iPhones gelesen (tiefer Schlafmodus in der Nacht), aber lt. Logfile kommt das System auch damit zurecht.

Klar, die Lösung hat Schwächen, z. B. ein leerer Akku, aber dafür war die Umsetzung echt simpel. Gutes “Preis-Leistungs-Verhältnis” möchte man sagen.

Wenn du zusätzliche AP benutzt wird das schon wieder schwierig. Daher sendet bei mir Node red einen Ping an das Gerät und das im 10 Sekunden Takt.
Das funzt auch sehr gut.

Ich mache bei mir die Presence über Node Red und die FritzBox. Habe halt zwei Einschränkungen - ab und zu gehen die Handys in einen Sparmodus und schalten ihr WLAN ab und sind damit als abwesend gelistet. Habe da alles mögliche in den Einstellungen versucht und nix gefunden was das löst. Zum Zweiten dauert es 10 Minuten nach dem Abmelden, bis die FritzBox hier den Status ändert. Da ist es auch egal, welches Gerät das ist (Fernseher, Laptop, etc.). Auch hier ist das eine feste Einstellung, wo man nicht ran kommt. Sonst funzt das sehr gut. Für meine Abwesenheit in den Heizplänen recht das vollkommen aus.
Die Lösung von medicus07 bietet ja noch viel mehr Möglichkeiten über die genaue Ortung. Da muss dann jeder selber wissen, was man damit machen will. Hier gilt aber auch, wenn die Möglichkeiten da sind dann findet man schon eine passende Anwendung.

Ping habe ich auch versucht, hier wirkt sich das Energiesparen noch viel stärker aus.

Das habe ich durch einen Counter gelöst.
Da das Phone alle x Minuten erreichbar ist.
Und sieht da es passt zu hundert Prozent.
Aber das ist sehr individuell.

Ich finde das Projekt zwar auch sehr spannend, aber leider scheitert die _Zuverlässigkeit bei uns daran, daß bei 4 Personen immer mindestens einer sein Handy zuhause liegen lässt :man_shrugging:t2::frowning:

1 „Gefällt mir“

Da hilft nur Erziehung! :wink:

Das ist der Grund warum ich das Bluetooth Signal meiner myfox (jetzt somfy) Alarmanlagen-Fernbedienung (hängt am Schlüsselbund) mit nem pi zero tracke und in node red als EnOcean Präsenzmelder simuliere :slight_smile:

Schlüssel werden seltener vergessen (schafft irgendjemand aber auch immer mal wieder)

Im Zeitalter von smarten Schlössern bleibt bei uns eher der Schlüssel zu Hause als das Handy! :thinking:
Ehrlich gesagt, weiss ich gar nicht wann ich das letzte mal einen Schlüssel eingesteckt habe! :laughing:

2 „Gefällt mir“

Das Internet ist für uns alle Neuland :man_shrugging:

2 „Gefällt mir“