YESLY Smart Home

netatmo welcome – Anwesenheits-Status mit dem Fibaro HomeCenter 2 auslesen

Geschrieben von boomx
siio-App
[vc_row][vc_column][vc_column_text]Nachdem wir am Montag den Test der netatmo welcome veröffentlicht haben, könnt Ihr bereits 2 Tage später die Kamera-API mit dem Fibaro HomeCenter 2 auslesen.

Als erstes müsst Ihr über „Scenes“, „Add Scenes“ eine neue LUA-Szene erstellen. Ihr kopiert dann den LUA-Code (findet Ihr weiter unten) in das Fenster für den Code. In dem Skript müsst Ihr nicht viel anpassen. Es müssen lediglich die Zeilen 8 – 11 angepasst werden.

Die Client ID/Client secret findet Ihr unter den App-Einstellung auf dev.netatmo.com. Mail-Adresse und Passwort sind eure Login-Daten für die netatmo-Seite.

dev_netatmo

Anmeldeinformation auf der netatmo-Seite

Wenn Ihr die Szene soweit eingerichtet habt, dann werdet Ihr beim ersten Start der Szene Fehler im Debug-Fenster erhalten. Beim Start werden die eingerichteten User auf der netatmo welcome ausgelesen, welche dann als Variablen eingerichtet werden müssen. Diese könnt Ihr unter „Panels“, „Variables Panel“ und mit einem Klick auf „Add“ anlegen. Das Skript zeigt euch an, welche Variablen eingerichtet werden müssen. (Siehe Bild; in diesem Fall Daniel_status & Daniel_lastseen)

debug_var

Das Debug nach dem ersten Start

Nachdem Ihr die Variablen in eurem Fibaro HomeCenter 2 eingerichtet habt, sollte kein roter Debug mehr erscheinen. Abwesenheitsmeldungen werden in Orange und Anwesenheitsmeldungen werden in Grün debuggt.

debug_var_rdy

Der Debug nach Erstellung der Variablen

In der Grundeinstellung der Szene wird nur ein Debug geschrieben, wenn sich der Status einer eingetragenen Person ändert. Dadurch bleibt es ein wenig übersichtlicher. Sollte irgendetwas bei euch nicht funktionieren, dann könnt Ihr über die Zeile 13 in dem Skript den Debug aktivieren. Ersetzt in so einem Fall die 0 durch eine 1.

Einschränkungen der natatmo API

Es gibt leider seitens der API eine Einschränkung. Es dürfen pro Account „nur“ 2000 Anfragen in einer Stunde gestellt werden. Das bedeutet im Umkehrschluss, dass die Szene nur alle 4 Sekunden (60 min * 60 sek = 3600 Sekunden/4 Sekunden Pause = 900 Calls * 2 = 1800 Calls; Szene besteht aus 2 API-Calls) ausgeführt werden kann. In unserer Testphase hat sich allerdings gezeigt, dass 4 Sekunden oft zu einem Fehler führen und von der API nichts zurückgeliefert wird, bzw. der Account für API-Calls gesperrt wird. Mit 8 Sekunden haben wir widerum gute Ergebnisse erzielt. Solltet Ihr unter eurem netatmo-Account auch noch andere Geräte von netatmo angebunden haben, denkt bitte daran, dass zum Beispiel die Wetterstation über das Fibaro Plugin API-Calls generiert oder wenn Ihr das Windmesser-Skript nutzt, auch zusätzliche API-Calls an netatmo gesendet werden.

api_fehler

Fehlermeldung bei zu niedrigen Refresh-Zeiten

8 Sekunden sind Stand jetzt unsere Empfehlung. Ihr könnt aber auch selbst mit den Werten ein wenig expementieren. Dazu findet Ihr im Skript in Zeile 12 eine lokale Variable „refresh„, mit der Ihr die Sekunden selbst einstellen könnt.

Hier findet Ihr das Skript:

Virtuelles device für die netatmo welcome

Wenn Ihr neben den Variablen auch ein virtuelles device nutzen möchtet, dann stellen wir euch hier eins zum Download zur Verfügung. Dieses könnt Ihr dann einfach unter „devices“ importieren.

netatmo welcome vd

In den erweiterten Einstellungen des virtuellen device findet Ihr unter dem Refresh-Button dreimal folgenden Code:

Hier müsst Ihr dann natürlich eure Variablen einsetzen ;) Sollten weniger Personen bei euch im Haushalt leben, dann könnt Ihr den nicht benötigten Code, bzw. die nicht benötigten Labels des virtuellen device natürlich löschen.

In der Szene müsst Ihr noch in der Zeile 15 die lokale Variable vd_ID ändern und dort die ID eures virtuellen device eintragen. Dann wird der Refresh-Button bei jedem Durchlauf der Szene gedrückt und die Werte werden aktualisiert.

Und hier gibt es natürlich auch wieder die passenden Icons. Diesmal stellen wir euch allerdings vor die Qual der Wahl ;)

Anwendungsgebiet für die netatmo welcome Integration

Aufgrund der bereits oben erwähnten Einschränkung der netatmo-API (API nur alle 8 Sekunden abrufbar), der geringen Möglichkeit, dass aus bestimmten Gründen euer Gesicht (Im Winter Mütze auf, im Sommer Sonnenbrille auf) nicht erkannt wird und die API nur über das Internet abrufbar ist (Gefahr eines Ausfalls), verringern sich die Anwendungsgebiete erheblich. Um zum Beispiel den Alarm automatisch beim nach Hause kommen zu deaktivieren, wäre mir persönlich zu risikobehaftet.

Als eine reine Anwesenheitserkennung kann eine einzelne netatmo welcome nicht genutzt werden, da die Kamera nach einem bestimmten Zeitraum die Person automatisch auf abwesend stellt, sofern diese in dem Zeitraum nicht gesehen wurde. Theoretisch müssten in alle Räume Kameras gestellt werden. Finde ich persönlich aber ein wenig too-much, da ich ungern Bilder von meinem Sofa + auf dem Sofa sitzenden Personen in die Cloud schicken würde. ;)

Eigentlich will ich ja nur den Flur überwachen, damit ich weiß, wer grad die Haustür geöffnet hat, bzw. wer gerade nach Hause kommt. In diesem Fall könnte die netatmo welcome Integration vielleicht als fallback level (Rückfallebene) im Alarmfall genutzt werden. Das würde bedeuten, Ihr kommt nach Hause und vergesst den Alarm zu deaktivieren: Eure Sirenen gehen an und Ihr bekommt wilde Push-Mitteilungen, dass in eure/r Wohnung/Haus eingebrochen wurde. Theoretisch könntet Ihr dann den Alarm automatisch deaktivieren lassen, wenn euer Gesicht erkannt wird. Dies würde mit Sicherheit schneller gehen, als das Handy aus der Tasche zu holen, die Fibaro-App zu starten und damit den Alarm zu deaktivieren.

Eine andere Möglichkeit wäre natürlich eine persönliche Begrüßung über ein TTS-System oder ein farblich-passendes RGBW-Licht, sobald sich der Status eine Person von abwesend auf anwesend ändert. Vielleicht habt Ihr aber auch noch andere Ideen… Dann würden wir uns auf jeden Fall freuen, wenn Ihr uns ein Comment dazu schreibt. :)[/vc_column_text][/vc_column][/vc_row][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 el_class=““ width=“1/4″ css=“.vc_custom_1442917949199{padding-top: 10px !important;padding-bottom: 5px !important;padding-left: 10px !important;}“][vc_single_image image=“16142″ alignment=“center“ style=“vc_box_circle_2″ border_color=“grey“ img_link_large=““ img_link_target=“_self“ css_animation=““ 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]

Diesen Blogpost hat geschrieben ...

boomx

26 Kommentare

  • Hi,
    leider bekomme ich im Debug: ….O2 auth lieferte keinen wert zurück.
    Client-ID, -secret und Userinfo habe ich mehrfach gecheckt..
    Die Szene hat jetzt mein Netatmo-Konto gesperrt…
    Wo kann das Problem sein?
    Gruß TT

    • Hi,

      die API von netatmo kann nur eine bestimmte Anzahl von Anfragen abfangen. Ab einer bestimmten Anzahl von Zugriffen wird das Konto gesperrt und nach einer Stunde wieder freigegeben. Wir empfehlen für die Anbindung der Welcome-Kamera einen eigenen Account bei netatmo zu verwenden.

      Gruß

  • Hi,
    sorry dass ich noch mal nachfrage….
    Habe die Welcome auf einem eigenen Account (habe sowieso keine anderen Netatmo-Geräte..). Gehe auf die Seite dev.netatmo.com mit dem Login für die Kamera. Dort tue ich so, als wolle ich eine neue App kreieren, nenne ich „Test“. Dann bekomme ich auf der Seite Details Client-ID und Client-Secret für die App. Die habe ich in Dein Script eingetragen, bekomme aber weiter nur die Fehlermeldung o2 auth lieferte keinen Wert zurück. Das Sperren des Kontos habe ich mit Hochsetzen des delays auf 20 sec. erfolgreich verhindert.
    Wo ist mein Fehler? Vermute beim Anlegen der neuen App, aber ich finde sonst nirgendwo die Client-Infos?
    Habe die werte auch schon reseted und neue generiert, leider ohne Erfolg.
    Vielen Dank!
    LG TT

  • Tja, habe jetzt noch mal ordentlich gegoogelt, aber schlau werde ich nicht. Ich klicke auf Deinen Link oben, gehe auf sign in und logge mich mit meinen Zugangsdaten für die myNetatmo-Seite ein. (MyNetatmo funktioniert ohne Probleme).
    Auf der Dev-Seite habe ich Documentation, Create an App, My Applications. Meine Kamera sehe ich da nirgends..???
    Lege eine neue App an (nicht Test) , gebe Name und Description ein und speichere. Die URLs lasse ich leer. Auf dem Reiter Settings finde ich dann die Daten, die ich in das Script übertrage. Right? Sieht alles so aus, wie in Deinem Screenshot oben. (Kann hier leider keinen von mir anhängen) Oder mache ich da den Fehler?
    LG TT

    • Ist die Kamera überhaupt diesem Account zugeordnet? Mach im Forum am Besten mal einen neuen Thread auf und lad paar Screens hoch. Dann schau ich mir das mal an.

      Gruß

  • Moin!
    Gleiches Problem wie TT.
    Habe den Debug:
    ‚[DEBUG] 22:13:03: oAuth-API-Call konnte nicht durchgeführt werden! oAuth 2.0 lieferte keinen Wert zurück‘
    Bedeutet das,dass die Szene nicht mit der API kommunizieren kann oder die API nicht mit der Kamera.
    Meine Kamera wird mir im Dev-Account nicht angezeigt, aber im normalen schon. Kann sie abrufen und das bild sehen.
    Wie kann ich sichergehen , dass die API mit der Kamera kommuniziert und die Szene mit der API???
    hab die client id und das client secret sowie username und passwort eingegeben.
    refresh ist auf 30 weil ich meinen account gerne behalten würde und nicht einen tag warten muss.

    Bitte um Hilfe
    gruß
    Milan

  • Hi,

    könnt Ihr bitte beide mal den debug auf 1 setzen und posten was debuggt wird?

    Habe das Skript grad mal wieder getestet und es funktioniert soweit ohne Probleme.
    [DEBUG] 22:33:53: netatmo welcome Integration v.1.0 gestartet.
    [DEBUG] 22:33:53: Debug = 1. Es wird alles debuggt.
    [DEBUG] 22:33:53: Szene wird alle 60 Sekunden ausgeführt
    [DEBUG] 22:33:54: Corinnas Status hat sich nicht geändert. Mache nichts
    [DEBUG] 22:33:54: Lillis Status hat sich nicht geändert. Mache nichts
    [DEBUG] 22:33:54: Daniel ist jetzt anwesend. Setze den Status 1 in der globalen Variblen

    Wenn die Daten nicht zu 100% korrekt sind, dann schmeißt mir das Skript euren Fehler.

    Gruß

  • Hallo, erst einmal vorweg „super Artikel“. Die Einrichtung klappt, aber … Ich bin gerade über ein paar kleine Probleme gestolpert:
    1. ich habe für erkannte Personen Namen mit Leerzeichen verwendet – für diese kann man im HC2 keine Variable anlegen (oder ich mache etwas falsch)
    2. die Variablen im HC2 sind auf eine Zeichenlänge von 18 Zeichen beschränkt – d.h. die Personenbezeichnung innerhalb der Netamo Welcome darf nicht länger als 9 Zeichen betragen – da den Variablen noch _status oder _lastseen angehangen werden müssen.

    Zwei wesentliche Punkte die man vor der Einrichtung beachten sollte – meiner Meinung nach.

    • Hi,

      muss ehrlicherweise gestehen, dass ich das Skript schon länger nicht angefasst habe und es selbst derzeit auch nicht nutze. Denke mal, dass ich mir i.wann nochmal die API von netatmo anschaue und schaue, ob es neue Features gibt. Würde das Skript stand heute auf jeden Fall ein wenig anders bauen ;)

      Zu deinen Punkten:
      1. Das ist leider richtig. Da ich aus der Informatik komme, gibt es in Codes/Namen/usw. von Grund auf keine Leerzeichen, weshalb ich darauf nicht eingegangen bin. Sorry ;)
      2. Eine Beschränkung der Zeichenlänge ist mir bisher nicht aufgefallen. Hab automatisch erstellte Variablen mit einer Länge von bis zu 25 Zeichen bei mir drin. Keine Probleme.

      Gruß

    • Hi,

      nachdem ich grad ein wenig getestet habe, habe ich es wirklich hinbekommen. :) Der jpg-Stream kann eingebunden werden, ist allerdings ein wenig kompliziert. Werde die Welcome-Szene wohl erweitern müssen…

      Gruß

  • Hi,
    bei mir bricht das Skript nach unterschiedlicher Laufzeit leider immer mit diesem Fehler ab:

    [DEBUG] 14:43:53: [1;31m2016-10-09 14:43:53.992241 [ fatal] LUA error: /usr/share/lua/5.2/json/decode/util.lua:35: unexpected character @ character: 1 0:1 [<] line:
    [DEBUG] 14:43:53: <

    Danke und Gruß

  • hi boomx,
    da ich das HCL verwende wollte ich fragen, ob euer virtual device trotzdem funktioniert? Ich moechte mit Hilfe der Gesichtserkennung eine Szene starten wie z.B. „Alarmszene ein“ oder „Alarmszene aus“.
    Grüße
    Mo

  • Ein ganz großes Kompliment! Ich konnte das Skript hervorragend integrieren. Ich musste lediglich die Zertifikats-Prüfung in der Funktion „getResponseData deaktivieren (checkCertificate=false):

    function getResponseData(url, body, func)
    local http = net.HTTPClient()
    http:request(url, {
    options = {
    checkCertificate = false,
    method = ‚POST‘,
    headers = {
    [‚Content-Type‘] = ‚application/x-www-form-urlencoded;charset=UTF-8‘
    },
    data = body
    },
    success = function(response)
    func(json.decode(response.data))
    end
    })
    end

  • Was mache ich falsch, wenn ich den LUA Code in eine neue Scene hereinkopiere und dieser Code beim Speichern immer aus dem LUA Editor verschwindet? Codefehler?

    • Hi, irgendwie scheint im Skript etwas nicht zu stimmen. Dieses sonderbare Verhalten verschwindet, wenn man die gesamte function oAuth(nextFunction) aus dem Skript löscht. Dann lässt sich der Code zwar speichern, läuft aber natürlich nicht ohne Fehler… Hat jemand eine Idee?

Gib deinen Senf dazu!