18

Anwesenheitserkennung im Fibaro Home Center per MotherSense Cookie

by crissxcross10. Juni 2015

[vc_row full_width=““ parallax=““ parallax_image=““ seperator_indeed_locker=“Indeed Social Locker“ lk_sl=““ lk_t=““ lk_la=“horizontal“ lk_dc=“true“ lk_dfn=“true“ lk_lt=“2″ lk_etl=“0″ lk_tl=“30″ lk_nru=“0″ lk_rl=“0″ lk_lra=“30″ lk_lrt=“days“ lk_io=““ lk_lp=“50″ lk_dm=“0″ lk_thm=“0″ lk_tuo=“0″ lk_dt=“ „][vc_column width=“1/1″ css=“.vc_custom_1442767910088{background-color: #f4f4f4 !important;}“][vc_row_inner][vc_column_inner width=“1/4″ css=“.vc_custom_1442917949199{padding-top: 10px !important;padding-bottom: 5px !important;padding-left: 10px !important;}“][vc_single_image image=“16142″ border_color=“grey“ img_link_large=““ img_link_target=“_self“ style=“vc_box_circle_2″ alignment=“center“ img_size=“60×60″][/vc_column_inner][vc_column_inner el_class=““ width=“3/4″][vc_column_text]

New: Read this article in english

This article is now available in english on siio.com.[/vc_column_text][/vc_column_inner][/vc_row_inner][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]Vor kurzem habe ich euch hier Mother Sense vorgestellt. So verbindest du Mother Sense mit deiner Fibaro und nutzt die Cookies an deinem Schlüsselbund als Anwesenheitssteuerung.

In diesem Tutorial soll es darum gehen, eine zuverlässige Anwesenheitsvariable im Fibaro System zu erhalten, um darüber Szenen zu steuern. So kannst du alle Lichter automatisch ausschalten, oder den Staubsauger losputzen lassen sobald du weg bist. Das Ganze wollen wir über das Sensorsystem Mother Sense und die Cookies realisieren. Warum nicht über die Fibaro App? Ich persönlich finde die Geofunktion der Fibaro App nicht brauchbar, da der iPhone Akku so schon kein Überlebenswunder ist und bei aktivierter GPS Funktion in der Fibaro App der Handy Akku schneller leer ist als man gucken kann. Ich hatte ja hier auf siio.de schon mal die Anwesenheitsprüfung via Ping beschrieben. Geht – aber ich bin der Überzeugung mit den Cookies von Mother geht’s besser.

Mother Sense hatte ich dir vor kurzem hier auf siio ausführlich inkl. Video vorgestellt, das Sensorsystem für Fitness, Gesundheit & Sicherheit. Dabei ist Mother (die Matroschka ähnliche Figur) der Hub, welcher per LAN Kabel mit deinem Router verbunden wird und so mit deinem Mother Sense Online Account kommuniziert. Über das 868Mhz Band kommuniziert Mother mit Ihren Cookies. Das sind die Sensoren welche Temperatur und Bewegung messen können. Sollten diese mal keine Verbindung zu Mother haben, so speichern Sie ihre Daten bis zu 10 Tagen. Also perfekte Sensoren für Daheim und unterwegs.

Mother Sense - und Cookies

Mother Sense – und Cookies

Auf Mother selbst konntest du verschiedene Apps installieren und die Cookies den Apps zuordnen. So konnte ein Cookie, befestigt an meiner Kaffeemaschine, anhand der Erschütterung messen wie viel Kaffee ich am Tag getrunken habe, ein anderer an meinem Schlüsselbund befestigt hat meine Schritte gezählt. Da ein Cookie auch mehreren Apps zugewiesen werden konnte habe ich den Cookie an meinem Schlüsselbund auch der „Anwesenheits“ App zugewiesen.

.. und hier wird es spannend. Wie in meinem Mother Sense Artikel im Fazit erwähnt ist es ein tolles Spielzeug, aber es ist eine reine Sensorik. In diesem Artikel will ich dir zeigen, wie schnell du Mother Sense per API mit deiner Fibaro (oder jedem anderen Smart Home System) verbindest und so die Sensorwerte von Mother für dein Smart Home zu nutzen.

Erstelle so zum Beispiel eine An– und Abwesenheitserkennung und schalte zuhause alles automatisch aus, sobald du das Haus verlässt.

So geht’s:

1. Mother Sense API Key registrieren

Zunächst benötigen wir einen API Access Token. Das ist quasi dein Schlüssel um nachher per API Schnittstelle, auf deine Mother Sense Daten zuzugreifen. Dieser Zugang ist unabhängig von deinem Mother Sense Online Account Passwort. Solltest du dieses mal ändern, funktioniert unser Script, welches ich dir nachher zeige weiterhin.

Gehe zunächst auf dei Webseite. https://sen.se/developers und klicke dort auf „Become a developer“. Fülle das folgende Formular aus, am besten nutzt du bei eMail Adresse die gleiche Mailadresse auf welche auch dein bestehender Mother Sense Account läuft. Als „Usage“ gibt Personal an, Programming language ist „LUA“. Als Grund habe ich schlichtweg angegeben, das ich Mother Sense mit einem Smart Home System verbinden möchte.

Innerhalb 1-2 Tagen sollte dein Developer Account freigeschalten werden. Danach konnte ich mich in meinen Mother Sense Online Account einloggen und im Menü oben auf den Punkt „Developers“ navigieren. Anstelle des Menüpunktes „Become a developer“ findest du nun den Menüpunkt „API Key“.  Nach einem Klick auf den Menüpunkt siehst du schon deinen API Token. Eine schier unglaublich lange Kombination aus Zahlen und Buchstaben.

Mother Sense API Access Token

Mother Sense API Access Token

2.Mother App „Presence“ für Anwesenheit installieren

Natürlich brauchen wir nun noch mindestens einen Cookie, welcher Mother flüstert ob du Zuhause bist, oder nicht. Diesen Cookie kannst du dir an dein Schüsselbund hängen, deine Tasche packen, einen Turnschuh kleben, oder was auch immer. Hauptsache das Ding ist aus dem Haus, wenn du auch weg bist.

Mother Sense - Schlüsselbund

Mother Sense – Schlüsselbund

Logge dich dazu in deinem Mother Sense Online Account ein. Gehe im Fuß der Seite auf „MORE“ – Add Apps & Devices. Hier wählst du die App: Presence aus. In der Installationsroutine gib an, wessen Anwesenheit getrackt werden soll. Wenn du mit deiner Freundin zusammen wohnst, wäre es blöd wenn das Licht zuhause ausgeht und die Heizung runter fährt wenn du weg gehst, Sie aber noch zuhause ist ;-) … obwohl .. :-D

Falls du deine Freundin noch nicht als „Person“ in Mother angelegt hast, dann mache dies fix über den Menüpunkt: My Account > My Family

Zurück zur Installation der App „Presence“. Nun wähle im Drop Down unter den jeweiligen Personen die zugehörigen Cookies aus. Also die Cookies welche ab sofort der persönliche Begleiter sind und die Anwesenheit / Abwesenheit melden werden. Im letzten Schritt kannst du noch auswählen ob du informiert werden möchtest per eMail / Push ect. wenn einer der Personen nach Hause kommt. Praktisch wenn du auf Arbeit sitzt und per Push benachrichtigt werden möchtest sobald der Junior aus der Schule angekommen ist.

Fertig. next Step.

3. Fibaro HC2 Variable erstellen

Wir werden in Schritt 5 per LUA Szene alle 30 Sekunden die API um den Zustand unseres Cookie befragen, welcher der App „Presence“ zugeteilt ist, also der App auf Mother, welche erkennt ob der Cookie Zuhause ist oder nicht. Den Status wollen wir dann in eine globale Variable schreiben, um diese später weiteren Szenen verwenden zu können.

Um eine Variabel in im Fibaro Home Center anzulegen, gehe auf die Weboberfläche deiner Fibaro, dann unter Steuerungen > Variablen Steuerungen. Klicke hier auf Hinzufügen und lege eine neue Variable an. Den Namen kannst du nach Belieben wählen. Ich habe in diesem Beispiel die Variable „Cookie_Chris“ benannt.

Wenn du in Schritt 2 mehrere User verwendest, dann musst du hier entsprechend weitere Variablen anlegen.

Fibaro HC2 Variablen anlegen

Fibaro HC2 Variablen anlegen

4. Cookie ID aus XML herausfinden

Mit Mother erhältst du 4 Cookies. Damit wir nachher per API den richtigen „Cookie“ befragen, benötigen wir die UID. Das ist eine eindeutige ID, welche jeder Cookie, jede App und jedes Smartphone mit der Mother App in deinem Online Account erhält.

Gehe dazu auf: https://apis.sen.se/v2/

Hier wirst du nach Benutzernamen und Passwort gefragt. Hier benötigst du den Benutzernamen (nicht deine eMail) deines Mother Online Accounts und das Passwort deines Online Accounts. Den Benutzernamen findest du auch unter https://sen.se/profile (Menüpunkt My Account).

Nachdem du nun die API aufgerufen und dich angemeldet hast, siehst du 5 weitere Feeds. Darunter den Feed Users (https://apis.sen.se/v2/user„) Wähle diesen aus. Hier sind alle Geräte wie der Mother Hub, deine Smartphones mit der Mother App und alle Cookies aufgelistet.

Suche dir nun den / die Cookies heraus, welche du in der „Presence“ App (unter Schritt 2) vergeben hast. in meinem Beispiel war dies der Cookie „Brisk Ahead“ und „adored blackberry“. Klicke bei dem entsprechenden Cookie auf Link hinter „url:“.  Hier siehst du nun alle „Apps“ welche du auf Mother installiert hast. Das jeweilige Feld „used“ gibt mit dem Wert „true“ oder „false“ an ob dieser Cookie darin verwendet wird. Suche nach der App „Presence„. Bei used sollte „true“ stehen. Wichtig ist uns nun der Wert hinter „“uid“: Diese kryptische Abfolge an Zahlen und Buchstaben benötigen wir im nächsten Schritt.

Klicke nun auf den Link bei „url“ in dem Block mit dem label „Presence„. Danach auf den Link bei „eventsURL“. Hier kannst du schon mal prüfen, was die Fibaro Szene nachher lesen wird. Steht im Body Present , bist du Zuhause, wenn nicht sollte dort Absent stehen. Wir brauchen noch den Wert der bei „Profile“ steht. In meinem Beispiel ist das „WalkStandard“.


So das war der schwierigste Teil, nun ist es nur noch Copy & Paste ;-)

5. LUA Szene befüllt Anwesenheits Variable

LUA Szene

LUA Szene

Zunächst hier mal das fertige LUA Script, welches du im Fibaro HC2 in eine LUA Szene kopierst. Im Anschluss erkläre ich dir ein paar die wichtigsten Zeilen davon.

--[[
%% autostart
%% properties
%% globals
--]]

-----------------------------------------------------------------
--[[
 Mother and motion cookies scene

 An presence scene that use a cookies to track when arrive or leave home
 and set a global variable with the actual value, then you can use the
 variable as trigger to do other things with your HC2 like turn On a lamp,
 turnOff alarm etc.

 Scene will run every 30 seconds.
 Change this to rows:
 local cookiePresence = 'D6se3zRof0bAB5Mxxxxxxxxxxxxxxxx' <--- Uid of cookie
 ['Authorization'] = 'xxxxxxxxxxxxxxxx' <--- API Token for apis.sen.se

--]]

local sourceTrigger = fibaro:getSourceTrigger();
function tempFunc()
local currentDate = os.date("*t");
local cookiePresence = 'hjeIhyH2Pu8jqeU180nFWPHKCylqtBiE'
local httpClient = net.HTTPClient();

 httpClient:request('https://apis.sen.se/v2/feeds/'..cookiePresence..'/events/?limit=1&format=json', {
 success = function(response)
 if tonumber(response.status) == 200 then

 local jsonData = json.decode(response.data)  

 local total=0
 for i = 1, #jsonData.objects do
 if jsonData.objects[i].profile == 'WalkStandard' then
 if string.sub(jsonData.objects[i].dateEvent,1,10) == os.date("%Y-%m-%d") then
 presence = jsonData.objects[i].data.body
 end
 end
 end
 print('Presence: '..presence)

if presence == "Present" then
          fibaro:setGlobal("cookie_Chris", "1")
else
      fibaro:setGlobal("cookie_Chris", "0")      
end
else
 print('call::checkUpdate ERROR [HTTPClient:request] status: ' .. response.status)
 end
end,
 options = {
 headers = {
 ['Authorization'] = 'Token 1f086678bXXXXXXXXXXXXXXXXXXxxXXXX157a2b0'
 }
 }
});

setTimeout(tempFunc, 30*1000)
end
if (sourceTrigger["type"] == "autostart") then
 tempFunc()
 else
 fibaro:debug("Set scene to %%autostart to have it run by automatic")
end

Folgende Zeilen musst du anpassen:

Beginnen wir in Zeile 26.

mother-presense-zeile26

Hier trägst du als „CookiePresense“ die UI deines Cookies ein, welchen wir in Schritt 4 herausgefunden haben.

Aus dieser UID wird im folgenden die URL für den API Aufruf zusammen gebaut. Ist der Status des Aufrufes =200, ist alles okay und weiter geht’s. Dann schaut das Script in die XML Antwortdatei und springt in den Block „Objects“ und sucht nach dem Profile. Auch dieses haben wir in Schritt 4 herausgefunden. Ändere dies entsprechend, passend für dich in Zeile 37 ab. In meinem Beispiel ist das Profil „WalkStandard“.

mother-presense-zeile37

Danach ließt er den Status von „presence“ aus. Ist dieser Present, so beschreibt er in Zeile 46 die Globale Variable (welche du in Schritt 3 angelegt hast) mit 1 für Anwesend. Falls der Wert Absent ist wird in Zeile 48 die Variable mit 0 für Abwesend beschrieben. Hier musst du nun den Namen deiner in Schritt 3 angelegten Globalen Variable eintragen:

mother-presense-zeile47

Zum Schluss definieren wir noch den Access Token unter den „Options“. Trage für die Autorisierung in Zeile 56 deinen Access Token ein, welchen du dir in Schritt 1 erstellt hast.

mother-presense-zeile56

Speichern, fertig. Die API wird nun alle 30 Sekunden abgefragt und deine Globale Variable (welche du in allen Szenen verwenden kannst) wird entsprechend mit 1 oder 0 für Anwesend oder Abwesend beschrieben.

Für weitere Cookies, die zur Anwesenheitsprüfung weiterer Familienmitglieder genutzt werden, lege einfach eine weitere Globale Variable an, sowie eine neue LUA Szene mit dem Script und passe auch da die UID des Cookie, sowie das Standardprofil an.

Die Cookies melden sich im Intervall von ca 15 Minuten an der Mother. Heißt wenn du das Haus verlässt oder auch nach Hause kommst, wechselt der Status nicht sofort sobald du die Tür öffnest auf „Anwesend“ (1) .

Beispiele für Szenen

Ich verwende die Szene nun, um das Licht und alle elektrischen Geräte wie Kaffeemaschine, Wasserkocher, TV, HiFi Receiver, Subwoofer… per Zwischenstecker / Steckdose abzuschalten.

Außerdem startet mein Staubsauger Roboter und beginnt zu putzen. Randnotiz: Dafür frage ich noch weitere Variablen ab, zum Beispiel ob es Tag ist (Tageszeit Variable per Szene setzen), denn Roomba muss nicht loslegen wenn ich Abends nochmal weggehe. Ausserdem prüfe ich ob der Akku mind. 50% geladen ist – das bekomme ich über die RooWifi API raus (Roomba putzt jetzt im Smart Home). Zusätzlich habe ich mir eine Globale Variable angelegt: „Roomba_schon_geputzt“, welche ich mit der Szene beim starten von Roomba auf 1 setze. Mit einer weiteren Szene resette ich diese in der Nacht im 0:01 Uhr wieder auf 0. So verhindere ich das der Staubsauger mehrfach am Tag losfährt, falls ich öfter das Haus verlasse.

Roomba putzt beim Verlassen des Hauses

Roomba putzt beim Verlassen des Hauses

 

… und was stellst du so mit der Anwesenheit-Variable an? bzw: /// Was würdest du mit der Anwesenheit-Variable anstellen? – berichte doch unten in den Kommentaren!

[/vc_column_text][/vc_column][/vc_row]

siio-App
About The Author
crissxcross
crissxcross
Chris, Gründer und Blogger von siio. Gelernter IT-Systemelektroniker, seit vielen Jahren beruflich als Produktmanager im Smart Home unterwegs. Technikverliebter Familienvater, Apple Fan. Nach einigen Jahren Stadtleben wieder froh auf dem Land zu sein.
18 Comments
  • Hoggle
    Hoggle
    11. Juni 2015 at 7:43

    Coole Sache.
    Das hört sich dank deiner Amleitung auch einfach an nachzubauen!
    Der ÜbertragungsIntervall von ca 15 Minuten an Mother kann manchmal recht lang sein. Dieser lässt sich nicht reduzieren, oder?

    • crissxcross
      11. Juni 2015 at 15:58

      Hi, ja die Intervalle lassen sich etwas beeinflussen. Du kannst im Online Account von Mother einstellen, ob der ookie auf Eco oder Boost Funken soll. Geht dann natürlich auf die Akkuleistung.
      Ich habe das Ganze nun seit 3 Tagen im Einsatz und die Intervalle sind echt top. Bin gestern heimgekommen, da kurvte natürlich schön der Staubsauger durch die Gegend. Habe grad dem Junior die Schuhe ausgezogen, das bekam der Roomba schon den Befehl zur Basis zurück zu fahren. Ging also innerhalb von 1-2 Minuten das mein „Home“ wusste das ich zuhause bin.
      Sowas lässt sich sicher auch noch mit Bewegungsmeldern und Türkontakten erweitern.

      mfg
      Chris

  • Dennis
    11. Juni 2015 at 19:07

    Mir missfällt beim Thema Heimautomation immer noch, dass meine Daten je nach Anbieter in der Cloud liegen..
    Gerade beim Thema Bewegungsprofil etc. bin ich da vorsichtig.
    Gibt’s ne Möglichkeit, das Ganze hinzukriegen, wenn die Daten im Heimnetzwerk sind? An sich hat das ja schon nen gewissen Charme.

    Zweite Frage: Würde das Deiner Meinung nach auch mit einem Razberry + Z-Way funktionieren?
    Ich bin am Planen, mir so einen als Einstieg zuzulegen.

    • crissxcross
      11. Juni 2015 at 19:15

      Du kannst auch die Variante mit dem Ping machen, die ich hier beschrieben habe: Anwesenheitsprüfung via Ping .
      Das ginge dann auch mit dem RaZberry, gibt dort meiner Meinung nach ein Plugin.

      • Dennis
        11. Juni 2015 at 19:56

        Danke Dir.
        Den Beitrag hatte ich auch schon verfolgt – wäre mir persönlich aber zu „gebastelt.“ Die Lösung hier ist definitiv zuverlässiger. (Denn meine Partnerin und ich haben die Angewohnheit, WLAN auf unseren mobilen Geräten auszuschalten. Weiterhin läuft nicht immer der TV, wenn jemand zuhause ist..)
        Ich nutze aktuell ein Xiaomi Mi Band (kriegt man teilweise für 11€ inkl. Versand, Lieferung aus China) .. da könnte man eine Anwesenheitserkennung via Bluetooth MAC-Adresse machen. (Und somit auch erkennen, in welchem Raum sich wer befindet. Ist im FHEMWiki beschrieben)
        Die Frage ist, ob es sowas auch als Schlüsselanhänger o.ä. gibt.
        Nicht zuletzt fände ich eine Lösung mit einem passiven Chip besser. (Denn auch beim Mother funzt nach einem Jahr nix mehr, wenn man erst einmal Batterien für Alle kaufen muss :-D )

    • Gelegenheitsleser
      12. Juni 2015 at 6:12

      Genau aus diesem Grund, habe ich mich für HomeMatic entschieden, somit bleiben meine Daten auch meine Daten. Es ist zwar nicht so super Apple easy, dafür fast uneingeschränkt in der Funktionalität.

  • crissxcross
    12. Juni 2015 at 14:23

    Hi Gelegenheitsleser,
    also in meinem Beispiel hier, verwende ich die Fibaro HC2. Diese arbeitet auch lokal, so wie die Homematic CCU2.
    Die Anwesenheitsdaten hole ich mir von Mother – diese Daten liegen in der Cloud. Ich schreibe Sie dann als lokale Variable in mein Fibaro. Das Prinzip würde auch mit Homematic gehen. CCU2 ließt Daten über API aus der Mother Sense Cloud und schreibt Sie als lokale Variable.
    Eine integrierte Anwesenheitserkennung ist mir bei Homematic nicht bekannt – oder gibt es sowas inzwischen?

  • Alex-81
    21. Juni 2015 at 11:20

    Gibt es eine Möglichkeit, das MotherSense mit dem Fibaro HCL kommunizieren zu lassen?
    Danke schon mal für die Antwort.
    LG

  • DUC750
    23. Juni 2015 at 10:33

    Hi Chris,

    wie groß ist denn die Reichweite von Mother? Wäre doof wenn ich im Garten bin und die Kaffeemaschine aufhört zu brodeln

    • crissxcross
      23. Juni 2015 at 12:08

      Hi,

      konnte ich noch nicht so genau herausfinden. Aber bis in Garten wird schwierig. Ich habe in meiner 3 Raum Masionett Wohnung Probleme bis in das obere Stockwerk zu kommen.

  • Crashburn
    15. November 2015 at 13:41

    Hi, ich bin ganz neu hier aber habe bereits HC2 und als Slave HCL mit einigen Szenen und Modulen am laufen, auch habe ich schon oft mir hier Scripts besorgt und getestet.

    Ab jetzt wird es zeit das ich mal was gebe!

    Zu diesem Beitrag muss ich sagen, zur Lichtsteuerung wäre mir die Erkennung der Anwesenheit etwas träge da es ca. 1-3 Minuten dauert bis die sense Mother Zentrale merkt das jemand da ist und die Variable „Cookie_Person“ mit dem Script von 0 auf 1 wechselt!

    Dein Script „crissxcross“ habe ich noch etwas beschleunigt und zwar in Zeile
    45 „if presence == „Present“ or presence == „Present, not linked“ then“

    da meiner Prüfung nach „Present, not linked“ auch schon eine Anwesenheit darstellt und dadurch die Variable schneller
    mit einer „1“ aktiv wird, oder liege ich da falsch? ;o)

    Ansonsten tolles Script und das Produkt macht einen guten Eindruck, ich werde es wohl für meine Heizungssteuerung nutzen und ggf. Licht- Stromsteuerung, das beim verlassen alles ausgeschaltet wird was da noch an war oder die Alarmsensoren aktiviert, deaktiviert werden! ^^

  • Markus
    Markus
    26. Oktober 2016 at 16:40

    Hallo,
    erstmal großes Lob für Deine Arbeit!

    Du hast nicht zufällig mal probiert den „Sleep“ Zustand auszulesen oder?

    Gruß

    Markus

  • Stefan
    9. Januar 2017 at 17:49

    Hallo Criss,

    hab mir gerade Mother angeschaut, da der Preis momentan bei Mediamarkt bei gerade mal 99 Euro liegt wird es langsam interessant.
    Nutzt du es immer noch? Ich würde es rein als Erkennung der Anwesenheit und damit die Steuerung der Alarmanlage nutzen (Anstatt RFID Chip).

    Kannst du mir dazu eine Empfehlung geben?

    Viele Grüße

    Stefan

  • malagsch
    16. Dezember 2017 at 14:37

    Das ganze hört sich sehr interessant an.
    Bin leider etwas spät auf den Artikel gestossen.

    Mir macht aktuell eher sorge das twitter, instagram und facebook von mother sense nicht mehr existiert.
    aktuell gibt es nur noch den youtube kanal.
    hoffe dies hat nichts zu bedeuten da ich mir das ding eigentlich zulegen will.
    Ich denke das ganze wird nicht mehr funktionieren sobald die page mal down ist oder sehe ich das falsch?

  • malagsch
    26. Dezember 2017 at 15:43

    So liebe Leute habe nach etwas forschen herausgefunden das die Insolvenz angemeldet haben von sen.se
    somit würde ich sagen finger weg davon. NICHT KAUFEN!!!
    Mail seit 1 Monat nicht beantwortet sowie api nicht freigeschaltet seit 1.5 Wochen

    https://www.procedurecollective.fr/fr/liquidation-judiciaire/1340333/sen-se.aspx

Leave a Response