Website-Icon Dein Smart Home Blog

Tutorial: Anwesenheitssteuerung im Smart Home via iBeacon

Wenn ich nach Hause komme, öffnet sich wie von Geisterhand die Haustür, denn mein Smart Home erwartet mich bereits. Wie ich die Anwesenheitssteuerung im Smart Home mit iBeacons umgesetzt habe, erkläre ich in diesem Tutorial.

Wie ich schon in einem meiner letzten Artikel beschrieben habe, basieren die effektivsten Automatisierungen daheim immer auf dem Status der Wohnung. Schlafend, Urlaub und das Wichtigste: die Anwesenheit.
So kann die Heizung um ein paar Grad abgesenkt werden, sobald der letzte das Haus verlassen hat, die Lichter erlischen und auch die Standby Geräte werden abgeschaltet. Und wenn der Erste nach Hause kommt soll sich die Tür gefälligst von allein aufschließen!

Die Frage ist aber immer wieder nach dem "Wie"?  Wie sage ich es meinem Smart Home, das ich nicht zuhause bin, oder woher weiß mein Smart Home, das ich wieder da bin?

Wir hatten schon einige Artikel hier auf dem siio Blog zu diesem Thema. Mal mehr, mal weniger praktikabel.

Ping Pong - ich bin da

Schon damals als ich mit Homematic begonnen habe, schrieb ich diesen Artikel, wie man via Ping prüfen kann, ob ein Handy im Netzwerk ist. Das gleiche hatte ich dann auch für Fibaro umgesetzt und in diesem Artikel hier beschrieben.
Das Problem daran war, das die Smartphone ihr WLAN abschalten, sobald der Homescreen in Lockmode geht. Dadurch brauchte man immer eine Pushmitteilung, um das Handy zu wecken. Das nervt dann aber mit der Zeit ziemlich doll. Vor allem wenn mehrere Bewohner im Haus sind, da die Pushmitteilung immer an alle Benutzer gesendet werden muss, sobald  die Haustür geöffnet wird.

Pin Pad - sicher ist sicher

Dann hatten wir mal im Zusammenhang mit dem Fibaro Alarmpanel das Zipato Keypad verwendet. Netter Nebeneffekt: Der Anwesenheitsstatus, in Form als Variable "Presentstate" wurde dabei auch gesetzt.
Tolle Möglichkeit, ich habe das Zipato Keypad immernoch im Einsatz - aber für die Automatische Erkennung war mir das noch nicht smart genug. Statt einer Pin-Eingabe, könnte ich auch eine Fernbedienung nutzen.

Mother Sense - Schlüsselbund-Tracker

Und ich hatte mal eine Lösung für Fibaro mit Mother Sense vorgestellt. War eine coole Lösung, da es nicht den Akku vom Handy beeinträchtigt hat. Allerdings musste man immer den Coockie  (so nannten sich die Sensoren) mitnehmen. Inzwischen ist das Projekt wohl auch eingestellt worden. Leider.

GPS - follow me

Eine weitere Alternative ist GPS. Die Fibaro Zentrale unterstützt es als Boardmittel- bei allen anderen Systemen die es nicht out-of-the-Box unterstützen könnte man den IFTTT Dienst nutzen (sofern das Smart Home Webhooks unterstützt). Hier muss dann die IFTTT App auf dem Smartphone installiert werden, welche auf das GPS vom Handy zurückgreift.

Ich hatte zwischenzeitlich auf die Lösung von tado° gesetzt. Die intelligenten Heizungsthermostate hatte ich vor einiger Zeit hier ausführlich in einem Video vorgestellt. tado° erkennt, wann der Letzte das Haus verlässt, oder wann sich der Erste auf den Weg nach Hause macht und steuert darüber die Heizung. Cool! Zudem besitzt tado° einen IFTTT Channel und stellt darin die Anwesenheit und Abwesenheit als Trigger zur Verfügung. So konnte ich mein homee Smart Home System via Webhook verknüpfen und den Modus automatisch auf "Zuhause" oder "Abwesend" ändern.
Das funktionierte super! Allerdings merkte meine Freundin schnell an, dass ihr iPhone Akku jetzt noch schneller leer sei. Klar - die ?Ei-Phones sind so schon keine Akku-Wunder und bei aktiviertem GPS kann man diese gleich direkt am Ladekabel stecken lassen.

iBeacons - die perfekte Lösung?

Vor kurzem sprachen wir mit meinem Kollegen Thomas über das Thema "Anwesenheitserkennung" in welchem wir als Quintessenz die "iBeacons" als derzeit beste Lösung am Markt herausstellten.

Warum?

Was sind iBeacons?

Das die Reichweite von Bluetooth nicht besonders groß ist wissen wir als Smart Home Fans alle. Was aber sonst ein großer Nachteil von Bluetooth ist - wenn es um die Verbindung mit smarten Geräten wie beispielsweise Elgato Eve geht, macht man sich hier zu Nutze.
Aufgrund der begrenzten Reichweite können iBeacons dazu verwendet werden, um eine einfache und akkuschonende Positionsbestimmung durchzuführen. Die Position wird einfach aus der Empfangsstärke des iBeacons ermittelt. Man erhält also keine GPS Koordinate, sondern eine Entfernung in Metern zum iBeacon.

Der iBeacon sendet in kurzen Abständen eine GUID aus - ähnlich dem WLAN Netzwerk, das seine SSID, also seinen Netzwerknamen sendet. Kommt man mit seinem Handy in die Nähe des iBeacons, reicht es aus, wenn das Smartphone den Broadcast mit der ID „sieht“. Es muss also keine aktive Bluetooth Verbindung mit dem Beacon hergestellt werden, wie es etwa der Fall beim Koppeln eines Headset ist.

"Sieht" das Smartphone die ID des iBeacon, so kann eine zuvor definierte Aktion - wie etwa ein Webhook - ausgelöst werden.

[alert variation="alert-info"]Hast du dich schon mal gefragt, warum du immer (passender Weise) wenige Meter vor dem T-Mobile, Vodafone Store oder einem anderen Laden dessen App du installiert hast ein tolles Angebot bekommst? Auch dies beruht auf der iBeacon Technik.[/alert]

Kurzum: Ein iBeacon sendet ähnlich dem WLAN Router eine eindeutige Kennung aus. Die ab Werk voreingestellte Kennung = GUID kann mithilfe von Apps wie zum Beispiel "BeaconSET" sehr simpel geändert werden. Somit können mehrere iBeacons die gleiche GUID tragen, um ein größeres Areal (Wohung) auszuleuchten.

[itunes url="https://itunes.apple.com/de/app/beaconset/id1052655664?mt=8"/]

Hardware - diese iBeacons gibt es

iBeacons gibt es in vielen verschiedenen Bauformen. Als flache Aufkleber oder kleine, mit Batterie versorgte iBeacons. Es gibt sie aber auch in dauerhaft mit Strom versorgten Variante (zum Beispiel via USB) und sogar als Outdoor Beaons.

[amazon_link asins='B00OM7M5KU,B06WRN7SJY,B018KVBO82,B00KEN2DHQ' template='CopyOf-ProductGrid' store='siio.de-21' marketplace='DE' link_id='c7452c0a-fbde-11e7-a4e8-653387d46a88']

Ich habe mich für die USB Variante entschieden. Einen freien USB Port an einer Steckdose, oder an der FRITZ!Box findet sich immer und aufgrund der dauerhaften Spannungsversorgung ist das Ganze recht wartungsfrei.

Einrichtung eines iBeacon

Wie bereits beschrieben lassen sich die Einstellungen der iBeacons mithilfe diverser Apps bearbeiten. Folgende Konfiguration habe ich mit der iOS App "BeaconSET" vorgenommen, welche es übrigens auch für Android Smartphones gibt.

Nach dem Öffnen der App werden alle für das Smartphone sichtbaren / erreichbaren iBeacons aufgelistet. Nach einem Klick auf den gewünschten iBeacon, welcher konfiguriert werden soll, öffnet sich die Detailansicht:

[carousel arrows="display" buttons="display" interval="3"] [panel title="App - BeaconSET"][/panel] [panel title="App - BeaconSET"][/panel] [/carousel]

homee konfigurieren - ich bin Zuhause!

So, nun weist du, dass es verschiedene Bauformen von iBeacons gibt und weist, wie du einen iBeacon konfigurieren kannst. Nun geht es endlich an den Smart Home Teil, in welchem dein Handy (lies: Smartphone) eine Information an dein Smart Home System sendet:

Das passiert mit einer anderen App, welche eine Aktion auslöst, sobald das Handy den iBeacon sieht (bei Eintritt) - bzw. die UUID nicht mehr gesehen wird (bei Austritt).
Auch hier ist die Auswahl an Apps groß - ich habe mich aus dem homee Forum inspirieren lassen und nutze die "GeoFency" App für iOS.

[itunes url="https://itunes.apple.com/de/app/geofency-zeiterfassung/id615538630?mt=8"/]

Für Android Nutzer soll wohl die App "Beacon Locator" ganz nett sein.

[alert variation="alert-success"]Wenn du die App öffnest, will die App auf die "Standort Informationen" zugreifen. Nicht erschrecken! Standortinformationen sind nicht nur GPS Daten! Standortinformationen erhält iOS auch durch WLAN Netzwerke, Mobilfunkmasten und iBeacons. Daher musst du den Zugriff erlauben, sonst funktioniert es nicht![/alert]

Im folgenden will ich euch zeigen, wie ich bei meinem "homee" Smart Home System via iBeacon den Modus (Zuhause / Abwesend) ändern kann.

[alert variation="alert-info"]Für Freunde des Fibaro Systems geht das natürlich auch - allerdings bietet Fibaro keine Webhooks "out-of-the-box" an, ihr müsst euch mit einer Portfreigabe und DynDns behelfen. Mehr dazu in diesem Artikel: IFTTT für Fibaro Home Center[/alert]

Als erstes erstellst du dir ein Homeegramm, welches durch einen Webhook getriggert (ausgelöst) wird und dadurch den Modus ändert:

" WENN Webhook  >Chris-Zuhause< ausgelöst wird, dann setze Modus auf Zuhause"

Das Event "Chris Zuhause" kann frei benannt werden und ist dann ein Teil der URL, welche homee für dich generiert. Diese besteht aus deiner homee ID, einem geheimen Schlüssel (behalte diesen auf jeden Fall für dich!) und dem Event. Immer wenn diese URL aufgerufen wird, startet das Homeegramm.

Diese URL kopierst du nun und fügst sie in der Smartphone App "Geofency" im Menüpunkt "Webhook -> Bei Eintritt URL" ein.

[carousel arrows="display" buttons="display"] [panel title="Geofency App konfigurieren"][/panel] [panel title="Geofency App konfigurieren"][/panel] [panel title="Geofency App konfigurieren"][/panel] [/carousel]

Nun wird dein Handy jedesmal, wenn es in Reichweite des iBeacons kommt diese URL aufrufen und damit den Modus des homee auf "Zuhause" ändern.

[alert variation="alert-danger"]Wenn du dich für die App Geofency entschieden hast, musst du die URL von "https://..:" auf "http://..." ändern, damit der Webhook ausgelöst wird. https wird von der App nicht unterstützt.[/alert]

Nun benötigst du natürlich noch einen zweiten Webhook, welcher ausgelöst wird, wenn du den Bereich des iBeacon verlässt.
Dazu legst du ein weiteres Homeegramm an, welches durch einen Webhook getriggert (ausgelöst) wird. Auch hier kannst du wieder ein Eventnamen vergeben, welcher Teil der URL wird.

Ich habe eine Freundin - muss sie jetzt im Dunkeln sitzen wenn ich gehe?

Wenn mehrere Personen im Haushalt leben, wird es etwas komplexer, denn das Homeegramme darf dann natürlich nicht sofort den Modus umschalten, nur weil eine Person die Wohnung verlässt. Das ist etwas komplexer, heißt aber nicht, dass es nicht umsetzbar ist.

Wir müssen also den Status jeder einzelnen Person festhalten.
Da der homee für diesen Fall noch keine Variablen beherrscht, behelfen wir uns mit "Trick 17".

Wir legen ein "Dummy Homeegramm" an. Homeegramme können nämlich folgenden Zustand haben:

Somit können wir ein Homeegramm auch als Variable nutzen:

Lege also für jede im Haushalt lebende Person ein "Dummy Homeegramm" an, das nichts weiter enthält als:

"WENN Homeegramm abgespielt wird - DANN Webhook XXX"

, und speicherst es unter dem Namen "Dummy Ich" und ein weiteres speicherst du unter "Dummy Freundin"

Nun brauchst du für jede Person jeweils zwei Homeegramme, getriggert (ausgelöst) via Webhook:

  1. " WENN Webhook  >Chris-Zuhause< ausgelöst wird, dann aktiviere Homeegramm Dummy Chris UND setze Modus auf  Zuhause"
  2. " WENN Webhook  >Chris-Abwesend< ausgelöst wird, dann deaktiviere Homeegramm Dummy Chris"
  3. " WENN Webhook  >Freundin-Zuhause< ausgelöst wird, dann aktiviere Homeegramm Dummy Freundin UND setze Modus auf  Zuhause"
  4. " WENN Webhook  >Freundin-Abwesend< ausgelöst wird, dann deaktiviere Homeegramm Dummy Freundin"

Das Aktivieren, bzw. Deaktivieren eines Homeegramm kann wiederum als Trigger - also als Auslöser einer Aktion genutzt werden. Somit kann ein weiteres Homeegramm den Abwesenheitsstatus setzen:

"WENN
Homeegramm >Dummy Chris< wird deaktiviert
ODER
Homeegramm >Dummy Freundin< wird deaktiviert
UND
Homeegramm >Dummy Chris< ist deaktiviert UND Homeegramm Dummy >Freundin< ist deaktiviert
DANN setze Modus auf Abwesend"

tl;dr

Wie bereits beschrieben, funktioniert diese Anwesenheitssteuerugn via iBeacon mit allen Smart Home Systemen, welche Szenen via Webhook auslösen können.
Der Vorteil von iBecons liegt auf der Hand: Ich werde von keinem GPS Signal verfolgt, welches an meinem Handy Akku zerrt und damit ist es Datenschutzrechtlich unbedenklich. iBeacons verbrauchen wenig Strom und jene iBeacons mit USB Stromversorgung sind wartungsfrei. Beacons können innerhalb von Häusern den Standort auf wenige Meter genau bestimmen und somit auch Aktionen je nach Raum auslösen -> so zum Beispiel den Status auf "schlafend" setzen, wenn man nach 21 Uhr ins Schlafzimmer kommt. In diesem Sinne: Gute Nacht!

Die mobile Version verlassen