[Neues Modul - 32_fitbit.pm] Fitbit Web API

Begonnen von TeeVau, 17 Juni 2017, 17:40:41

Vorheriges Thema - Nächstes Thema

TeeVau

Hallo FHEM'ler,

anbei die erste Beta-Version des Fitbit Moduls. Das Modul benutzt die WEB API von Fitbit (https://dev.fitbit.com/docs/). Das Modul läuft jetzt seit 24 Stunden bei mir, so wie es aussieht auch Stabil ;-)
Für das Benutzen der API muss, ein wenig umständlich, eine Applikation bei Fitbit registriert werden. Das geht ganz fix und kostet auch nichts. Anbei quick and dirty die Anleitung:

       
  • App Registrtieren:
    https://dev.fitbit.com/apps/new aufrufen, mit den Fitbit Benutzerdaten einloggen. Daten wie folgt angeben: 1.PNG
    Hinweis: Als URL sollte eine eigene Webseite angegeben werden. Später wird durch Fitbit die angegebene URL aufgerufen (Callback). In dieser Callback-URL ist der Token enthalten. Bei dem Benutzen von www.fhem.de als Callback URL, wird im Webserver von fhem.de das Token protokolliert.
  • App authorisieren:
    Siehe 2.PNG
    Klickt auf "OAuth 2.0 tutorial page" und es öffnet sich ein neues Fenster (Siehe 3.PNG).
    In diesem Fenster muss der gelb markierte Link angeklickt werden. Es öffnet sich ein neues Fenster (Siehe 4.PNG).
    Dort muss man angeben, welche Daten von der API benutzt werden dürfen. Ebenso wird angegeben wie lange das ganze Freigegeben ist. Nach dem klick auf "Erlauben" kommt man auf die Callback Website. Der Token ist in dem Link mitangegeben! (Siehe 5.PNG)
  • Token aus Link extrahieren.
    Der Callback Link im Browser sieht wie folgt aus: http://www.fhem.de/#access_token=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI1UVo3REYiLCJhdWQiOiIyMjhGR1giLCJpc3MiOiJGaXRiaXQiLCJ0eXAiOiJhY2Nlc3NfdG9rZW4iLCJzY29wZXMiOiJyc29jIHJzZXQgcmFjdCBybG9jIHJ3ZWkgcmhyIHJudXQgcnBybyByc2xlIiwiZXhwIjoxNTI5MjQ4NjcxLCJpYXQiOjE0OTc3MTI2NzF9.s3Fk_mymuMreOYOiOxDg6f9awoD544FsL59qlnJgMTE&user_id=5QZ7DF&scope=sleep+settings+nutrition+activity+social+heartrate+profile+weight+location&token_type=Bearer&expires_in=31536000
    Für uns ist der Inhalt von "access_token=" wichtig. Also der Fett markierte Teil.
  • FHEM Device vom Typ ACCOUNT anlegen
    Nun wird mit dem folgenden Befehl der ACCOUNT angelegt. Das Modul legt dann automatisch die Devices, den eigenen Beutzer sowie Freunde als eigene Devices an.
define fitbit_IO fitbit ACCOUNT eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI1UVo3REYiLCJhdWQiOiIyMjhGR1giLCJpc3MiOiJGaXRiaXQiLCJ0eXAiOiJhY2Nlc3NfdG9rZW4iLCJzY29wZXMiOiJyc29jIHJzZXQgcmFjdCBybG9jIHJ3ZWkgcmhyIHJudXQgcnBybyByc2xlIiwiZXhwIjoxNTI5MjQ4NjcxLCJpYXQiOjE0OTc3MTI2NzF9.s3Fk_mymuMreOYOiOxDg6f9awoD544FsL59qlnJgMTE

       
  • [/l]
       

            
    • So sollte es dann aussehen :-)
      Siehe 6.PNG bis 9.PNG
    Testen konnte ich das nur mit Benutzern die einen Schrittzähler haben. Zur Zeit sind die Datenpunkte für die Waage nicht berücksichtigt. Werde ich demnächst noch angehen, kann dann aber nur eine Trockenübung machen, da ich selber keine Fitbit Waage habe.

    Wer es Testen möchte: Bitte sehr :-)

    Tobias


2017-07-04

       
       
  • commandref EN created
  • reading summary_activeScore removed
  • fitbit_parseUserWeight: set reading weight
  • fhem() is used with silent param
2017-06-25

       
  • fitbit_initDevice beschreibt Reading batteryLevel, anstatt battery
2017-06-24, 2. Beta-Version


       
  • Einige Werte von INTERNAL zu Reading umgestellt
  • FHEM sollte nicht mehr abstürzen, wenn der Token ungültig ist
  • "weight" Daten werden zur Verfügung gestellt (API: Get Weight Logs)
  • Sleep Daten der letzten Nacht werden ausgelesen (API: Get Sleep Logs by Date)
  • Die eigentlich statischen Daten (Name,Geburtsdatum, Geschlecht etc.) je Device werden alle 6 Stunden neu ausgelesen
  • Alle 6 Stunden wird nach neuen FRIEND, DEVICE, oder USER gesucht.
  • Error Meldungen im JSON Reply werden erkannt und ausgegeben.
  • Freunde können im Device ACCOUNT mit "set getFriends" gesucht und ggf. als Device angelegt werden
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

igami

Vielen Dank,
werde ich gleich mal einrichten.

Darf ich fragend warum die Schlafphasen auskommentiert sind? Das ist einer der Punkte dich mich stark interessiert um anhand dessen den Lichtwecker zu stellen :)
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

CoolTux

Kurze Meinung/Frage meiner seits. Persönlich, wohl gemerkt persönlich, finde ich das viele Internals mehr Readings sind.

battery, device Version, id, lastSync, dateOfBirth, displayName und und und



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

jojoja

Hallo Tobias,

danke für die Arbeit! Hat auf Anhieb funktioniert, werde das Modul auf jeden Fall verfolgen.
Hab ein Charge 2 Armband, wenn was neues kommt werde ich es gleich probieren :D

Gruß Johannes
FHEM 6.0 @ IntelNUC6CAYH;  Unifi USG, Switch, AP AC Pro; HM-MOD-UART;  Sonos Play 1 & 3, One, Beam; Philips Hue

Helmi55

Hallo
Installation hat funktioniert und ich empfange Daten.
Auch von allen Freunden!  Nicht nur die vom eigenen Fitbit.
Schönen Sonntag
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

reibuehl

Die Abfrage von Gewichtswerten einer Aria Waage scheint nicht zu funktionieren. Im State steht "weight kg", also kein numerischer Wert. Außerdem scheint bei Umlauten im Internal fullName was schief zu gehen. Ein "ü" wird als "ÃÆ'Æâ€â„¢ÃƒÆ’â€Å¡Ãƒ,¼" angezeigt.
Die Waage selbst und die für die Waage registrierten Benutzer werden aber sonst angelegt. Was ich nicht so toll finde, ist dass es keine Zuordnung bei den Namen der Devices gibt, die anzeigt, was zusammengehört. Hier wäre m.M.n. ein Konzept wie bei den "Channels" der HomeMatic Devices besser, falls das von der Logik her geht.
Reiner.

TeeVau

Hallo zusammen,

danke für das Feedback. Das mit den INTERNALs werde ich noch umstellen. Vieles habe ich aus dem Withings-Modul (einfach blind) übernommen.
Die Schlafphasen sind deshalb auskommentiert, da ich an diesem Teil noch nichts gemacht habe. Der Code ist noch aus dem Withingsmodul. Ich hab das aber auf dem Schirm. Das sind allerdings relativ viel Daten, da weis ich noch nicht so genau wie das sinnvoll in Readings zu packen ist.
Das bezüglich der Umlaute gucke ich mir an, danke für den Hinweis. Die Werte der Waage werden zur Zeit nicht ausgelesen, das korrigiere ich noch.

@reibuehl
Was meinst du genau, mit der Zuordnung der Namen zu den Devices? Ich selber hab kein Homematic, kenne deshalb die Logik der "Channels" nicht.
Die API liefert immer nur die Devices, die dem eigenen Account gehören. Hast du also ein Fitbit Device, dann ist das auch deins. Du kannst dir kein Device von einem Freund anzeigen lassen. Demnach ist die Zuordnung, wenn ich nichts falsch verstanden habe, einfach: Jedes Fitbit Device gehört dem eingerichteten ACCOUNT/USER

Grüße, Tobias
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

reibuehl

Hallo Tobias,

bei den HomeMatic Thermostaten gibt es ein Device, z.B. HM_ABCD1234 und davon abhängige Channels, z.B. für die Verbindung zu Fensterkontakten einen HM_ABCD1234_WindowRec, die in FHEM auch als eigene Devices definiert sind. Damit ist schon beim ersten Blick klar, das HM_ABCD1234_WindowRec zu HM_ABCD1234 gehört.

Ich hab aber inzwischen gesehen, dass Du die Device Namen ähnlich vergibst und mich nur die Aliase verwirrt haben, da diese erst mal keinen Rückschluss auf Fitbit gegeben haben, z.B. "Reiner B." als alias für das "Device" fitbit_<ID> vom Subtype USER. Hier denke ich könnte der Subtype noch im Namen des Devices auftauchen, also fitbit_USER_<ID>.

Gruß,
Reiner
Reiner.

reibuehl

Was mir gerade noch eingefallen ist: In der Anleitung zur Registrierung an der API sollte man vermutlich eher die URL zu einer eigenen Webseite verwenden, da bei Verwendung von http://www.fhem.de die ganzen API Keys im Logfile von www.fhem.de gesammelt werden. Dass ist Sicherheitstechnisch eher unschön.

Gruß,
Reiner
Reiner.

DS_Starter

Hallo Tobias,

ich freue mich dass es nun auch ein Modul für fitbit gibt. :)  Danke sehr !
Habe es natürlich auch gleich ausprobiert. Mein Tracker ist ein Blaze (erst seit kurzem).

Die Einrichtung hat auch soweit gut funktioniert. Aufgefallen ist mir dass bei einem FHEM-Neustart zunächst solche Einträge im Log stehen:


2017.06.19 19:21:49.135 3: fitbit: define() fitbit_IO fitbit ACCOUNT crypt:5d4e7b0a5a72065f295b292f....................................
2017.06.19 19:21:49.135 3: fitbit_IO: Define an account
2017.06.19 19:21:49.137 3: Init NOT done
2017.06.19 19:21:49.137 3: fitbit: define() fitbit_U5RMVHT fitbit USER 5RMVHT
2017.06.19 19:21:49.137 3: fitbit_U5RMVHT: Define an USER
2017.06.19 19:21:49.138 3: Init NOT done
2017.06.19 19:21:49.139 3: fitbit: define() fitbit_D435990681 fitbit DEVICE 435990681
2017.06.19 19:21:49.139 3: fitbit_D435990681: Define an DEVICE
2017.06.19 19:21:49.140 3: Init NOT done


Zunächst denkt man dass hier etwas nicht funktioniert hat. Alle vorher definierten devices, also der fitbit_IO, der Tracker und mein User stehen auf "initialized".
Aber der Schein trügt, denn wenig später werden wieder Daten empfangen/upgedated, der state ändert sich und alles sieht dann normal aus.

Vllt. kann man die Startseequenz noch etwas tunen ... oder bei mir hat tatsächlich etwas nicht richtig funktioniert.

Danke und Grüße
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

rabehd

Ich habe gestern das Modul installiert, danke für die Arbeit.

Der erste Versuch des Define schoss FHEM erstmal ab. Meine Vermutung ist, dass ich beim Kopieren des Token etwas unaufmerksam war.

Der zweite Versuch war erfolgreich.
Das STATE-Attribut habe ich angepasst (jeweils für jedes Device).
Als nächster Schritt muss ich meine Batterieliste pflegen, da erscheint der Tracker als fast leer, während das Device den Level high hat.

Was mir noch fehlt ist eine Verwendung in FHEM  :-\, Anzeige ist erstmal schön, aber etwas damit auslösen besser.
Auch funktionierende Lösungen kann man hinterfragen.

TeeVau

Zitat von: DS_Starter am 19 Juni 2017, 19:39:45
...
Zunächst denkt man dass hier etwas nicht funktioniert hat. Alle vorher definierten devices, also der fitbit_IO, der Tracker und mein User stehen auf "initialized".
Aber der Schein trügt, denn wenig später werden wieder Daten empfangen/upgedated, der state ändert sich und alles sieht dann normal aus.
Vllt. kann man die Startseequenz noch etwas tunen ... oder bei mir hat tatsächlich etwas nicht richtig funktioniert.

Danke und Grüße
Heiko
Das Abfragen der Daten erfolgt zeitverzögert, nachdem define. Die LOG Meldungen sind noch nicht so korrekt. Da sind noch hier und da Sachen enthalten, die ich zum Entwickeln brauchte..

@rabehd
Das mit dem Token ist mir gestern Abend auch aufgefallen. Wollte "mal eben" noch etwas programmieren. Wenn der Token ungültig ist, stürzt FHEM ab. Hab ich auf dem Schirm.

Urlaub ist leider vorbei, jetzt dauert es hier und da noch etwas ;-)

Trotzdem Danke für das Feedback. Ich nehme es auf.

Tobias
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

rabehd

Großkotzig könnte ich sagen: "Mir doch egal, ich habs ja drin".
Es ist schön, wenn Du für folgende Nutzer sowas ausschließt. Aber, FHEM ist leider nicht alles...
Du bist hoffentlich erholt.
Auch funktionierende Lösungen kann man hinterfragen.

rabehd

Ich habe ein wenig Verständnisprobleme/Vertrauensprobleme mit den Readings.

Was sagt battery aus? Warum wird es nicht aktualisiert?
Warum ist das letzte Einlesen des batteryLevel so lange her?



batteryok2017-06-19 22:04:44
batteryLevelMedium2017-06-21 13:22:33
lastSyncTime2017-06-22T10:13:57.0002017-06-22 10:18:10

Auch funktionierende Lösungen kann man hinterfragen.

CoolTux

Weil es keine Änderung des Readings gab. Der Timestamp des Readings ändert sich nur bei Änderung des Readings.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

rabehd

erklärt erstmal den Zeitstempel. Aber, nicht die Bedeutung der Readings. Ich frage mich was mir "battery" sagen soll? Bedeutet OK, dass der Akku "gesund" ist und hat nichts mit der verfügbaren Kapazität zu tun? Oder ist das eine andere Auskunft des Levels? Bei anderen Devices erkenne ich an dem Reading ob die Batterie gewechselt werden muss.
Auch funktionierende Lösungen kann man hinterfragen.

CoolTux

Das bedeutet das der Batteriestand oder Batterielevel ok ist. Du also noch genügend saft drauf hast.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

rabehd

Zwar wird unser Leben immer mehr von außen bestimmt, trotzdem möchte ich selbst entscheiden was in dem Fall genügend ist. Bei Level Medium ist battery OK für mich nicht mehr genügend. So ist es auch nicht vergleichbar mit anderen Devices.
Ohne Definition ist dieses Reading für mich nutzlos. (Das ist kein Vorwurf an den Modulentwickler)
Den Wert finde ich auch nicht im Dasboard der fitbit (Level schon).
Auch funktionierende Lösungen kann man hinterfragen.

CoolTux


readingsBulkUpdateIfChanged( $hash, "batteryLevel", $detail->{battery}, 1 );
readingsBulkUpdateIfChanged( $hash, "battery", ($detail->{battery} eq "Low"?"low":"ok"), 1 );


Du darfst Dir gerne selber eine Meinung diesbezüglich bilden. Hier siehst Du wie der/die Wert/Werte zu Stande kommen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

rabehd

Mach ich und hilft mir schon mal.
Es gibt wohl 2 Werte, aber fitbit selbst zeigt nur den Level an.
Das Reading battery kennt nur die Werte ok und low.

Richtig?

Ich habe meine fitbit noch nicht so lange und noch nie so weit entladen lassen. Also mal beobachten und dann entscheiden, was ich mit den Infos tue.

@CoolTux: Danke für die Geduld.
Auch funktionierende Lösungen kann man hinterfragen.

CoolTux


readingsBulkUpdateIfChanged( $hash, "batteryLevel", $detail->{battery}, 1 );


Im Grunde ist das hier genau das was die Webseite liefert. Mehr liefert sie nicht. Ich rate mal das $detail->{battery} Low, Medium, High, haben kann
Der Modulauthor hat nun einfach folgendes gemacht


readingsBulkUpdateIfChanged( $hash, "battery", ($detail->{battery} eq "Low"?"low":"ok"), 1 );


Er hat ein zusätzliches, nicht von der Fitbit Seite, geliefertes Reading erzeugt welches battery heißt und mit low gefüllt wird wenn $detail->{battery} den Wert Low hat ansonsten wird ok geschrieben.
Es ist ein kleines bisschen doppelt gemoppelt, weil batteryLevel eigentlich bekannt ist für Prozentangaben. Eigentlich ist das Reading battery überflüssig und was jetzt batteryLevel heißt kann man in battery umbenennen. Aber das ist dem Modulauthor überlassen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

TeeVau

Hallo,

"batteryLevel" ist der Wert, der von Fitbit geliefert wird. Der Wert kann High, Middle, Low oder Empty sein.
"Battery" habe ich eingebaut, damit das funktioniert: https://wiki.fhem.de/wiki/Batterieüberwachung
Fertig ist es noch nicht, da natürlich auch Empty angezeigt werden muss.

Ist eben noch eine Beta-Version, da läuft nicht alles rund. Alternative wäre darauf zu warten, dass das Modul ins svn eingecheckt wird.

Tobias
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

TeeVau

Hallo,

im 1. Thread ist die 2. Beta zu finden, mit der Beschreibung der Änderungen. Als nächstes ist dann die Doku an der Reihe.

@rabehd
Mit dem Reading battery lasse ich mir z.B. eine Pushnachricht auf das Handy schicken, wenn der Akku leer ist, oder aber während des Ladens wieder voll gelanden ist. Ich weiß nicht wieso, aber die Pushmeldungen von der App, bezogen auf die Batterie, sehe ich nicht. Wenn dein Bedarf zum Aufladen schon bei "Middle" erreicht ist, dann kannst du darauf ein notify anlegen und das andere Reading einfach ignorieren.

Und zum Nutzen:
Ich mache mit meiner Freundin einen Schritte Wettkampf. Damit motivieren wir uns, uns im Alltag mehr zu bewegen. Wir fanden Die Idee - Wettkampf als Motivation, interessant.
Zu einem festen Stichtag/Uhrzeit werden die Schritte verglichen. Wer mehr hat, hat gewonnen. Und damit ich nicht immer selber in der App nachgucken muss, ob ich noch nachlegen muss, möchte ich, dass FHEM mir eine Pushnachricht schickt, wenn meine Freundin gerade mit den Schritten führt ;-)
Und zudem gibt es für alle x-Tausend Schritte ein Stück Schokolade :-)

Meine Motivation dazu ist vielleicht etwas skurril, für den Ein oder Anderen, bringt mir aber noch mehr Bewegung im Alltag und ich konnte mein Programmier-FHEM-Hobby etwas Zeit schenken ;-)
Gibt bestimmt noch einige hier im Forum, die viel Kreativer sind und bessere Ideen haben, was man mit dem Modul umsetzen kann.

Grüße, Tobias
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

reibuehl

Hallo Tobias,

vielen Dank für Deinen Einsatz und die neue Version. Das Update des fullname Internals hat geklappt und für die Benutzer der Waage wird jetzt auch ein Gewicht in kg angezeigt - auch wenn das zu hoch ist, aber das ist kein Problem mit Deinem Modul ;-)

Gruß,
Reiner
Reiner.

reibuehl

Hab gerade eine Batteriewarnung für die Fitbit Aria Waage bekommen, obwohl das bei Medium doch laut Deiner Beschreibung garnicht passieren sollte.

Hier das LIst des Devices:
Internals:
   DEF        DEVICE YTUC...............
   DEVICEID   YTUC...............
   DEVICEVERSION Aria
   DeviceType SCALE
   FITBIT_TYPE SCALE
   IODev      fitbit_IO
   LAST_DATA  2017-06-24 22:22:58
   LAST_POLL  2017-06-24 22:22:58
   MAC
   NAME       fitbit_DYTUC...............
   NR         755
   STATE      Batt. Medium
   SUBTYPE    DEVICE
   TYPE       fitbit
   Helper:
     Dblog:
       Battery:
         Logdb:
           TIME       1498335778.65399
           VALUE      ok
       State:
         Logdb:
           TIME       1498335708.30695
           VALUE      API ok
   Readings:
     2017-06-24 22:22:58   battery         ok
     2017-06-18 12:51:24   batteryLevel    Medium
     2017-06-24 14:46:15   lastSyncTime    2017-06-24T14:44:05.000
     2017-06-24 22:21:48   state           API ok
Attributes:
   IODev      fitbit_IO
   alias      Fitbit Aria
   room       Badezimmer
   stateFormat Batt. batteryLevel

Reiner.

TeeVau

Zitat von: reibuehl am 24 Juni 2017, 22:30:26
Hab gerade eine Batteriewarnung für die Fitbit Aria Waage bekommen, obwohl das bei Medium doch laut Deiner Beschreibung garnicht passieren sollte.

Hier das LIst des Devices:
Internals:
   DEF        DEVICE YTUC...............
   DEVICEID   YTUC...............
   DEVICEVERSION Aria
   DeviceType SCALE
   FITBIT_TYPE SCALE
   IODev      fitbit_IO
   LAST_DATA  2017-06-24 22:22:58
   LAST_POLL  2017-06-24 22:22:58
   MAC
   NAME       fitbit_DYTUC...............
   NR         755
   STATE      Batt. Medium
   SUBTYPE    DEVICE
   TYPE       fitbit
   Helper:
     Dblog:
       Battery:
         Logdb:
           TIME       1498335778.65399
           VALUE      ok
       State:
         Logdb:
           TIME       1498335708.30695
           VALUE      API ok
   Readings:
     2017-06-24 22:22:58   battery         ok
     2017-06-18 12:51:24   batteryLevel    Medium
     2017-06-24 14:46:15   lastSyncTime    2017-06-24T14:44:05.000
     2017-06-24 22:21:48   state           API ok
Attributes:
   IODev      fitbit_IO
   alias      Fitbit Aria
   room       Badezimmer
   stateFormat Batt. batteryLevel



wie wertest du denn welches Reading aus? per notify, Doif, oder sonst was? Da scheint irgendwo der Wurm drin zu sein. Denn das reading battery steht auf ok.
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

reibuehl

Ich verwende dieses Notify:

# Create notifications for battery low events
define n_batt_chk notify .*:[Bb]attery:.* { if($EVENT !~ m/ok/) { \
  { DebianMail('user@domain.net', 'FHEM Batteriewarnung', $NAME.': '.$EVENT)};; \
   Log 3, "$NAME: Batteriewarnung $EVENT";; \
  } \
}


Ich kann nicht wirklich erkennen warum der ausgelöst hat - hat er aber. In der Mail stand dann

fitbit_DYTUC............: battery: Medium

Es muss also zumindest kurzfristig mal battery: Medium vom Modul gekommen sein.
Reiner.

TeeVau

Zitat von: reibuehl am 25 Juni 2017, 20:01:43
Es muss also zumindest kurzfristig mal battery: Medium vom Modul gekommen sein.

Nabend,

da war noch ein Bug drin. Anstatt in batteryLevel, wurde beim Anlegen des Devices das Reading battery beschrieben. Habe ich behoben. Aktuelle Version im 1. Post
Danke für den Hinweis.
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

reibuehl

Hallo Tobias,

ich hab mich heute mal wieder auf die Waage gestellt und dabei festgestellt, dass kurz darauf zwar die Readings bodyFat_bmi, bodyFat_dateTime, bodyFat_fat und bodyFat_weight upgedated wurden und in bodyFat_weight das gemessene Gewicht steht, das Internal STATE und das Reading weight, in denen auch das Gewicht stehen sollte, wurden allerdings nicht geändert.
Kannst Du da nochmal rein schauen, ob da noch was geändert werden kann?

Gruß,
Reiner
Reiner.

DS_Starter

Hallo Tobis,

es kommen noch Warnungen in Zeilen 1425 - 1427:


2017.06.30 09:13:53.347 1: PERL WARNING: Use of uninitialized value in numeric gt (>) at ./FHEM/32_fitbit.pm line 1425.
2017.06.30 09:13:53.347 1: PERL WARNING: Use of uninitialized value in numeric gt (>) at ./FHEM/32_fitbit.pm line 1426.
2017.06.30 09:13:53.348 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/32_fitbit.pm line 1427.


Um diese zu beseitigen habe ich bei mir im Modul die Zeilen so geändert:


  readingsBulkUpdateIfChanged( $hash, "bodyFat_bmi", $json->{weight}->[0]{bmi}, 1 ) if($json->{weight}->[0]{bmi});
  readingsBulkUpdateIfChanged( $hash, "bodyFat_weight", $json->{weight}->[0]{weight}, 1 ) if($json->{weight}->[0]{weight});
  readingsBulkUpdateIfChanged( $hash, "bodyFat_dateTime", "$json->{weight}->[0]{date} $json->{weight}->[0]{time}" , 1 ) if($json->{weight}->[0]{date} && $json->{weight}->[0]{time});


Damit sind die Warnings weg. Wäre schön wenn du die Änderung so oder ähnlich in das Modul übernehmen würdest.

viele Grüße
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

TeeVau

Ich schau mir die 2 Punkte an. Das mit dem Gewicht ist etwas verwirrend in der API. Es gibt 3 Wege um an das Gewicht zu kommen. Aber offensichtlich ist der bodyFat endpoint der beste Weg.
Danke für eure Rückmeldungen.
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

TeeVau

Hi,

im ersten Thread gibt es eine neue Version. das Reading weight wird nun auch bei dem regelmäßigen polling beschrieben.

@DS_Starter
Komisch, bei dir scheint die API leere Felder zurückzugeben. Ich hab bei fehlenden Werten immer '0' drin stehen. Ich denke, mit defined() sollte das abzufangen sein. Probier bitte mal aus, ich bekomme diese Meldung. Die Meldung ist jedoch auch nur ein Hinweis, sollte nix bei kaputt gehen.

Gute Nacht, Tobias
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

DS_Starter

Morgen Tobias,

ZitatIch denke, mit defined() sollte das abzufangen sein

Ja, klappt auch damit ... sieht gut aus.
Warnungen tun nicht weh, weiß ich   ;) ... sind halt nur unschön und lästig.

Einen Wunsch/Vorschlag hätte ich noch. Hättest du etwas dagegen die Meldungen beim Start:


2017.07.01 08:33:20.773 2: fitbit_IO: user '5RMVHT' already defined
2017.07.01 08:33:22.306 2: fitbit_IO: device '435990681' already defined
2017.07.01 08:33:22.308 2: fitbit_U5RMVHT: I/O device is fitbit_IO
2017.07.01 08:33:23.080 2: fitbit_D435990681: I/O device is fitbit_IO


auf verbose level 3 setzen ?
Sooo sehr wichtig finde ich die Meldung nicht dass ein Device schon existiert.

Danke und VG,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

oti

Hallo Tobias,

Ich habe das Modul jetzt auch installiert und ich finde es echt klasse.
Eine kurze Frage habe ich. Wie heißt das Reading für Etagen?

Gruß Olaf

Gesendet von meinem SM-G935F mit Tapatalk


reibuehl

Hallo Tobias,

Ich sehe im log noch Fehlermeldungen wie diese:

2017.08.26 21:20:57 1: PERL WARNING: Argument "YTUA4O0ZC529KYO7" isn't numeric in numeric eq (==) at ./FHEM/32_fitbit.pm line 1267.

Weist Du, was das sein könnte?

Gruß,
Reiner
Reiner.

oti

Hallo Tobias,

ich habe noch eine weitere Frage.
Ich bekomme jetzt schon zum zweiten Mal die Meldung:

fitbit_watch: fitbit_parseHttpHeader: HTTP 401 (Unauthorized) found. Maybe a wrong token?

Beim letzten Mal habe ich einen neuen Token generiert und eingetragen und dann ging es wieder. Es wäre aber doof, wenn ich jede Woche einen neuen Token generieren muss.
Hat jemand anderes auch schon die Meldung gehabt?

Gruß
Olaf

pulmotil

#36
Hallo,
ich habe heute bei batteryLevel Low meines Trackers auch für battery Low angezeigt bekommen. Damit funktioniert nun aber leider die Batterieauswertung nach
http://www.meintechblog.de/2015/08/fhem-rechtzeitige-benachrichtigung-bei-leeren-batterien/
nicht mehr, da für diese Variante low kleingeschrieben werden muss. Kann man ändern - aber vllt gibt es ja einen Grund dafür, dass das in der 32_fitbit.pm so anders realisiert wurde:
  if($detail->{battery} eq "Low" || $detail->{battery} eq "Empty") {
    readingsBulkUpdateIfChanged( $hash, "battery", "$detail->{battery}", 1 );
  } else {
    readingsBulkUpdateIfChanged( $hash, "battery", "ok", 1 );
  }

Warum nicht "low" anstelle des "$detail->{battery}" im if-Zweig? Wurde zuvor in diesem Thread sinngemäß so umgesetzt.
Gruss p
FHEM 6.2 auf Beelink S2 (Intel N4100) mit Ubuntu 18.04.4 LTS

TeeVau

Zitat von: oti am 23 August 2017, 17:13:48
...
Ich habe das Modul jetzt auch installiert und ich finde es echt klasse.
Eine kurze Frage habe ich. Wie heißt das Reading für Etagen?
...
Etagen werden. soweit ich das sehe, von Fitbit nicht angegeben. ODer hast du die Information irgendwo in der Fitbit app? Falls du es aus der Apple Healt App hast: Ich meine die Etagen werden vom iPhone selber ermittelt, durch den Luftdrucksensor und dem Bewegungssensor.

Zitat von: reibuehl am 26 August 2017, 22:02:53
...
Ich sehe im log noch Fehlermeldungen wie diese:

2017.08.26 21:20:57 1: PERL WARNING: Argument "YTUA4O0ZC529KYO7" isn't numeric in numeric eq (==) at ./FHEM/32_fitbit.pm line 1267.

Weist Du, was das sein könnte?
...
Die Warnung ist erst einmal nichts schlimmes. Mein Device wird als ID nur mit Ziffern angegeben. Offensichtlich kann die ID aber auch Buchstaben enthalten. Werde ich mir bei Zeiten mal angucken.


Zitat von: oti am 28 August 2017, 20:32:33
...
Ich bekomme jetzt schon zum zweiten Mal die Meldung:

fitbit_watch: fitbit_parseHttpHeader: HTTP 401 (Unauthorized) found. Maybe a wrong token?

Beim letzten Mal habe ich einen neuen Token generiert und eingetragen und dann ging es wieder. Es wäre aber doof, wenn ich jede Woche einen neuen Token generieren muss.
Hat jemand anderes auch schon die Meldung gehabt?
...
Kann es sein, dass du die Gültigkeit bei der Erstellung nicht änderst? Guck mal im Anhang, da habe ich markiert, wo die Einstellung vorgenommen werden muss. Ich glaube die Default Einstellung ist eine Woche.
Ansonsten: Bitte einmal die Devices auf verbose 5 stellen und das Log posten oder mir per PM schicken. In dem Log kann übrigens der API Key enthalten sein, vorher also bitte einmal gut durchgucken!


Zitat von: pulmotil am 29 August 2017, 22:48:23
Hallo,
ich habe heute bei batteryLevel Low meines Trackers auch für battery Low angezeigt bekommen. Damit funktioniert nun aber leider die Batterieauswertung nach
http://www.meintechblog.de/2015/08/fhem-rechtzeitige-benachrichtigung-bei-leeren-batterien/
nicht mehr, da für diese Variante low kleingeschrieben werden muss. Kann man ändern - aber vllt gibt es ja einen Grund dafür, dass das in der 32_fitbit.pm so anders realisiert wurde:
...
Warum nicht "low" anstelle des "$detail->{battery}" im if-Zweig? Wurde zuvor in diesem Thread sinngemäß so umgesetzt.
Gruss p
Hast du recht, werde ich ändern.
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

oti

Hallo,

Etagen: Ich bin kein Apple-Freund. ;-) Der Wert kommt von Fitbit,  sowohl die HR und die HR 2 loggen die Etagen mit (siehe Screenshots).

HTTP 401 (Unauthorized) found. Maybe a wrong token?: Du hast recht, das war der Fehler.

Danke und Gruß
Olaf

TeeVau

Guten Abend,

die neue Version ist im ersten Posting.
Das mit dem "Warning" sollte erledigt sein, das batteryLevel reading wird komplett kleingeschrieben und die Etagen sollten nun auch angezeigt werden.

Grüße, Tobias
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

oti

Hallo Tobias,

habe gestern Abend noch installiert, läuft super.

Danke und Gruß
Olaf

TeeVau

Das höre ich gerne :-)

Ich wollte eigentlich in der commandref noch die Readings beschreiben, aber das ist echt mühselige Arbeit und sogar recht undokumentiert. Bei vielen Readings weis ich selber gar nicht, was die eigentlich aussagen. Findet sich jemand, der sich die Mühe macht die Infos auszuarbeiten? Dann würde ich das mit in die commandref übernehmen.
Ansonsten checke ich es erst einmal so ein, wie es aktuell dokumentiert ist und pflege dann von Zeit zu Zeit was nach.

Grüße, Tobias
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

Heggeg

Ist das Modul eigentlich schon offiziell mit drin? Ich musste es nämlich manuell installieren.

KölnSolar

Hallo Tobias,
ich hab das Modul im Einsatz. Anwendung u. Installation bis gestern problemlos. Danke dafür.

Ich spekuliere, dass wg. Zeitumstellung der Server abgeschaltet war und zu unschönen Konsequenzen führte  ;D

Kannst Du Dir das mal ansehen.

Und da Du bestimmt mehr Hintergrundwissen hast: Ist Dir das Bt-Protokoll oder die Form der Datenspeicherung bekannt, so dass man auch einen reinen lokalen Zugriff(Cloud abschalten) realisieren könnte ?

Danke&Grüße
Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

jschuppe

Hi Tobias,

habe das Modul heute eingerichtet. Funktioniert auf anhieb, danke!!!
Mir ist etwas aufgefallen. Bei den Uhren "Charge2" und "Surge" habe ich jeweils einen stummen Alarm eingestellt, der auch bei beiden angezeigt wird. Bei der Surge habe ich den Alarm aber disabled, was ich in den readings nicht erkennen kann, die sind bei deiden bis auf die alarm_id identisch.

Viele Grüße

KölnSolar

Fragen werden wohl nicht mehr beantwortet  :o

Offizielles Modul ist es auch noch nicht  ???

Log meldet ab u. zu:
2018.02.04 14:53:01 1: fitbit: fitbit_parseHttpDataError: Found error 'insufficient_scope' in JSON reply with msg 'This application does not have permission to access social data. Visit https://dev.fitbit.com/docs/oauth2 for more information on the Fitbit Web API authorization process.'

bei vermutlich gleichzeitigem freeze von FHEM  :( Ursache oder Wirkung ?
Grüße Markus
PS: Und wenn Du das Modul nicht mehr supportest, mach doch bitte einen entsprechenden letzten Post und schließe das Thema.
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

oti

Moin,

ich hätte dann auch noch eine Frage. :-)

Ich habe gestern meinen Raspberry 3 durch einen neuen 3 B+ ersetzt. In dem Zuge musste ich von Jessie auf Stretch updaten.
Es läuft auch alles, bis auf dieses Modul, welches FHEM zum Komplettabsturz bringt...

Der Absturz kommt direkt beim Aufruf des define:

define fitbit_IO fitbit ACCOUNT crypt:07482b0c06XXXXXX...

Log sagt:
Not an ARRAY reference at ./FHEM/32_fitbit.pm line 827.

Eine Idee, woran es liegen könnte?

Gruß
Olaf

sebbo2002

Leider keine Idee, aber du bist nicht alleine. Selbes Problem, selbe Geschichte.

reibuehl

Wenn sich bis auf das Hardware und Raspbian Update nichts geändert hat, würde ich erst mal checken, ob die benötigten Perl Module installiert sind:


  • libdigest-hmac-perl
  • libjson-perl
  • libposix-strptime-perl

Evtl. ist es noch mehr, aber die drei sehen so aus, als ob sie nicht Teil der Standard Perl Installation wären.
Reiner.

oti

#49
Hi,

danke für die Module, es scheint zu funktionieren.
Nach dem Ausführen von

sudo apt-get install libposix-strptime-perl
sudo apt-get install libjson-perl (ist anscheinend schon installiert)
sudo apt-get install libposix-strptime-perl

kommt es nicht mehr zum Absturz oder Fehlermeldungen im Log.

Danke und Gruß
Olaf

TeeVau

Hallo in die Runde,
mein letzter Besuch ist schon etwas her. Ich habe im Moment nicht die Motivation und Muse das Modul zu pflegen. Abgesehen davon, dass ich nicht so zeitnah reagieren kann, wie es der ein oder anderen sich wünscht.
Gibt es jemanden in den Reihen der sich um die Pflege/Support und Weiterentwicklung kümmern möchte? Der kann das Modul gerne übernehmen.

Grüße, Tobias
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

rr725

so....amaz...hat eine fitbit charge 2 geliefert- ist ja schon ein geiles teil.

natürlich habe ich sofort geschaut, ob das teil in ghrm eingebunden werden kann und bin hier gelandet.   man oh mann....wie kommt man nur daruf so etwas zu entwickeln. die sache mit der fitbit einrichtung ist ja der hammer. na gut, scheint funktioniert zu haben, bekomme beim anlegen des fhem devic keine fehlermeldung
NAME
fitbit_IO
NR
148
STATE
Initialized
SUBTYPE
ACCOUNT
TYPE
fitbit


allerdings wir nur "Initialized"  angezeigt- keine readings. hab´ ich etwas überlesen bei den post´s ?!
hatte zwar gelesen das erst bei einem update die reading angelegt werden, wobei stellt sich nun die frage update von was !?
mitterlweile sind alle möglichen sachen auch auf der fitbit weboberfläche upgedatet worden  !?

evtl. hab´ ich ja noch etwas übersehen !?

vielen Dank !!

rr725

poah.....bin einen schritt weiter.
da ich ja keinerlei fehlermeldung im log hatte wusste ich nun nicht wo ich noch ansetzen konnte.
nun hatte ich noch ein wenig zeit um zu testen und suchen

das modul 32_fitbit.pm gibt nur "set  fitbit_IO getFriends" her ?!
wenn ich dies eingebe, werden auch meine im fitbitkonto verknüpften Feunde  in fhem importiert und mit readings angelegt.
jemand eine idee wie ich meine eigenen daten importiert bekomme ?!

vielen dank.

rr725

hat sich erledigt.....

wieso wird der puls eigentlich nicht importiert- obwohl beim anlegen der app bei fitbit angehakelt.......

rr725

vielen Dank für das Modul- funktioniert auch, nur.....


hab es ca. 2 Wochen im Einsatz und nun ist mir aufgefallen, lt. Eintrag in der log Datei, das der Token abgelaufen sei. Hm...hatte ich nicht irgendwo gelesen er sei 1 Jahr gültig !?
Läuft das Teil wirklich alle 2 Wochen ab ?!

Wuehler

Wenn ich es richtig sehe, hat fitbit die Authorisierung an den OAuth2-Standard angepasst, so dass das token eine Gültigkeitsdauer hat. Man bekommt dann noch ein refresh-Token um regelmäßig ein neues Token zu beziehen. Da müsste das Modul wahrscheinlich angepasst werden.

rr725

Ok...hab das Modul wieder aus meiner fhem konfig entfernt. Nach exakt einer woche kommt die meldung:
fitbit_parseHttpHeader: HTTP 401 (Unauthorized) found. Maybe a wrong token?


Wuehler

Ich habe mit einer Anpassung schon mal angefangen, geht aber nicht so schnell und wirklich Zeit dazu finde ich gerade auch nicht. Der erste schnelle Hack hat leider nicht funktioniert  >:(
Da sich das Token regelmäßig ändert muss man vermutlich auch die define-Methode anpassen und setter für Token und refreh-Token zur Verfügung stellen.

Wäre hilfreich, wenn sich noch jemand die fitbit-Doku ansieht und beschreibt, wie man die Autorisierung am besten für den Nutzer umsetzt.

Skjall

Moin zusammen,
gibt es eine Möglichkeit, dass das Modul nicht alle FRIENDs anlegt?
VG Jan

strategy

Hallo zusammen,

zuerst einmal vielen Dank an den Author des Moduls.

Ich habe das gleiche Problem wie Skjall:
Zitat von: Skjall am 01 September 2018, 12:13:06
Moin zusammen,
gibt es eine Möglichkeit, dass das Modul nicht alle FRIENDs anlegt?
VG Jan

Daher habe ich mir erlaubt das Modul zu modifizieren und habe folgende Ergänzungen vorgenommen:

-> Ein zusätzliches Attribut createFriends. Nur wenn dieses Attribut auf 1 gesetzt wird, werden auch die Friends angelegt. Bei fehlen des Attributs oder einem Wert von 0 werden keine Friends mehr angelegt und auch die Methode GetFriends funktioniert nicht mehr.
-> Ein zusätzliches Attribut mit createDevices. Hier ist das Default-Verhalten genau anders herum. Nur wenn das Attribut gesetzt ist und einen Wert von 0 hat werden keine Devices angelegt. In allen anderen Fällen werden alle Devices angelegt.

Zudem hatte ich bisher eine HTTPMOD Lösung um die Daten aus meiner Withings Waage an Fitbit zu übertragen um alle Daten dort zu konsolidieren.
Das habe ich auf dem Weg auch mit in das Modul gepackt. Daher gibt es jetzt 2 zusätzliche Set Methoden.

SetWeight um das Gewicht zu setzen und SetFat um den Körperfett-Anteil in % zu setzen.
Die Werte werden jeweils mit dem aktuellen Datum und Zeitstempel erfasst.

Ich hoffe das Modul hilft so noch dem einen oder anderen...

Gruß,
Matthias



Changelog im Modul:


# Modification Strategy / 2019-03-09
# Added attribute createFriends - by default friends are no longer created
# Added attribute createDevices - by default devices are created but creation can be disabled.
# Added setWeight to insert a weigth value.
# Added setFat to insert a fat value




strategy

Zitat von: Wuehler am 07 August 2018, 22:23:14
Wenn ich es richtig sehe, hat fitbit die Authorisierung an den OAuth2-Standard angepasst, so dass das token eine Gültigkeitsdauer hat. Man bekommt dann noch ein refresh-Token um regelmäßig ein neues Token zu beziehen. Da müsste das Modul wahrscheinlich angepasst werden.

Das ist richtig, dass das Token eine Gültigkeitsdauer bekommen.
War aber auch schon immer so. Lediglich hat sich anscheinend die Default-Einstellung geändert und statt einem Jahr wird die Freigebe aktuell immer nur für eine Woche erteilt.
Das kann man allerdings bei der Einrichtung ändern und wieder ein Jahr auswählen. Damit ist das Problem zwar nicht gänzlich aus der Welt und die Idee von Wuehler das Token zu aktualisieren muss trotzdem umgesetzt werden. Allerdings hat man damit nun 52 Wochen Zeit und nicht nur eine...

Schaut Euch bitte mal im allerersten Post von TeeVau den Screenshot Nummer 3 an. Da hat Tobias die Zeile in der "1 Jahr" steht schon gelb hervorgehoben. Da steht jetzt standardmäßig eine Woche. Man kann das Feld aber anklicken und auf 1 Jahr umstellen...

Hat mich übrigens auch 3 Versuche gekostet....

strategy

Hallo zusammen,

ich hab noch eine Aktualisierung vorgenommen.

Zum einen habe ich die Schlafdaten "repariert".
Hier hat es zwischenzeitlich eine Anpassung der Fitbit Web API gegeben und statt der bisherigen 3 Schlafzonen gibt es nun 5 die zudem auch noch andere Namen haben. Daher habe ich die Leseroutinen und die Readings angepasst. Die alten Readings werden nicht mehr aktualisiert, dafür gibt es jetzt entsprechend der 5 Zonen neue Readings.

Zudem habe ich einen ersten Versuch unternommen die Herzfrequenz-Daten mit einzubinden.
Ersichtlich ist jetzt der Ruhepuls und die zusammengefassten Daten für die verschiedenen Aktivitätszonen.

Ich hoffe die Daten sind hilfreich.

Gruß,
Matthias


netsrac4th

Hallo,

Nach anlegen im FHEM sehe ich nur Freunde, aber nicht mich.
Liegt das daran, das ich nur via Handy die Daten aufzeichne?

Grüße
netsrac4th

strategy

Mhh,

da hab ich wohl beim Refactoring eine Methode entfernt....
Hier jetzt eine funktionierende Version des Moduls.

Gruß,
Matthias

netsrac4th

Jetzt hat es paar Tage funktioniert. Seit heute kurz nach Mitternacht nicht mehr.

API Error. See FHEM Log for more details

strategy

Zitat von: netsrac4th am 19 März 2019, 19:04:26
Jetzt hat es paar Tage funktioniert. Seit heute kurz nach Mitternacht nicht mehr.

API Error. See FHEM Log for more details

Bin gerade unterwegs, aber würde mir das morgen anschauen.
Welche Version hast du denn benutzt? Die von der ersten Seite oder die aus meinem Post?
Kannst du mir einen Auszug aus deinem Logfile schicken? Das macht die Diagnose einfacher...

Gruß,
Matthias

netsrac4th

Ich hab die aus deinem letzten Post genommen.
Nach paar Tagen dann immer der gleiche Fehler.
Auch ein neu anlegen hat nichts gebracht.

fitbit_parseHttpHeader: HTTP 401 (Unauthorized) found. Maybe a wrong token?

strategy

Das ist seltsam.

Aktuell fallen mir nur 2 mögliche Gründe ein:

1. Das Token hat nur eine sehr begrenzte Gültigkeit von einem Tag oder einer Woche.
    Ich glaube zwischenzeitlich ist eine Woche bei der Fitbit Web API voreingestellt. Leider kann man das auch nicht nachträglich ändern.
    Um sicherzustellen, dass du hier ein Jahr ausgewählt hast musst du eine neue Applikation auf der Fitbit Seite registrieren und wenn du nach der Freigabe der Rechte gefragt wirst den Zeitraum von einer Woche auf ein Jahr ändern...

2. Fitbit begrenzt die Zugriffe pro Tag (ich glaube auf 1500). Möglicherweise machst du zu viele Zugriffe auf deinen Account.
   Entweder weil du "zu viele Geräte und Freunde" im System hast du damit im normalen Aktualisierungszyklus zu viel Interaktion mit dem System stattfindet oder weil du die Rktualisierungsrate (Interval) zu hoch gesetzt hast.
   Das kannst du prüfen indem du an deiner fitbit web instanz die folgenden beiden Parameter prüfst:
     
     rateLimitLimit
     rateLimitRemaining
     


Kannst du das bitte mal prüfen und mir ein Feedback geben...

netsrac4th

Hi strategy,

Wieder alles gelöscht und neu eingerichtet. Derzeit funktioniert es.
Die Wahl zwischen 1 Tag, Monat Jahr gibt es bei Fitbit nicht mehr.

fhem> list FITBIT
Internals:
   .triggerUsed 1
   Clients    :fitbit:
   DEF        ACCOUNT
   FUUID      5c9f59dd-f33f-9674-aaaa-cffedd347851af77
   NAME       FITBIT
   NR         313
   STATE      Initialized
   SUBTYPE    ACCOUNT
   TYPE       fitbit
   .attraggr:
   .attrminint:
   READINGS:
     2019-03-30 16:15:13   rateLimitLimit  150
     2019-03-30 16:15:13   rateLimitRemaining 150
     2019-03-30 16:15:13   rateLimitReset  2688
     2019-03-30 12:58:21   state           Initialized

Attributes:
   createDevices 1
   createFriends 1

strategy

Hi netsrac4th,

deine Aussage

ZitatDie Wahl zwischen 1 Tag, Monat Jahr gibt es bei Fitbit nicht mehr.

hat mich ein wenig stutzig gemacht. Daher habe ich den Registrierungsworkflow nochmal durchgeführt.
Die Auswahl gibt es nach wie vor und vorausgewählt ist leider immer noch eine Woche.

Du musst bei der Registrierung auf die folgenden Punkte achten:

Wenn du eine neue App registrierst musst du sicherstellen, dass der OAuth Application Type "Personal" ist. Sonst klappt es nicht.
-> Siehe Screenshot 1

Wenn du dann auf die OAuth Tutorial Page wechselst muss direkt beim ersten Punkt die Auswahl auf "Implicit Grant Flow" stehen. Nur dann bekommst du ein langlaufendes Token. Authorization Code Flow funktioniert nicht oder nur für einen Tag.
-> Siehe Screenshot 2

Dann kannst du auf den generierten Link klicken und es öffnet sich eine neue Seite um die Rechte zu vergeben. Hier musst du jetzt vor der Bestätigung die Angabe 1ne Woche auf 1 Jahr ändern...
-> Siehe Screenshot 3

Dann solltest du für 1 Jahr Ruhe haben...


netsrac4th

#70
Hi,

Ich bekomme seit dem 03.09.2019 folgende Fehlermeldung:

FITBIT: fitbit_parseHttpDataError: Found error 'not_found' in JSON reply with msg 'The API you are requesting could not be found.'

Haben die an ihrer API rumgeschraubt?

Grüße

strategy

Zitat von: netsrac4th am 06 September 2019, 14:19:19
Hi,

Ich bekomme seit dem 03.09.2019 folgende Fehlermeldung:

FITBIT: fitbit_parseHttpDataError: Found error 'not_found' in JSON reply with msg 'The API you are requesting could not be found.'

Haben die an ihrer API rumgeschraubt?

Grüße

Keinen Plan. Um ehrlich zu sein versauert mein Tracker gerade in der Schublade.
Ich lade das Ding gleich mal auf und dann schau ich am Mittwoch mal ob bei mir noch Daten ankommen.
Ich bekomme morgen bestimmt auch ein paar Puls-Werte wenn der BVB gegen Barcelona spielt  :D

Gruß,
Matthias

strategy

Also, hab meinen Tracker jetzt seit 2 Wochen wieder in Gebrauch und bei mir klappt die FitBit Integration noch bestens.
Ich will aber nicht ausschließen, dass irgendein anderer Faktor hier eine Rolle spielt.

Habe bei einer anderen Komponente mal ein ähnliches Problem gehabt.
Bei mir hat es funktioniert bei anderen nicht. Habe mich dann an den Support gewandt und die haben mir dann erklärt, dass man die Server einen nach dem anderen Umstelle und am Ende war einfach entscheidend auf welchem Server das Benutzerkonto verwaltet wurde.

Vielleicht ist das hier ein ähnliches Problem...
Hast du das Loglevel mal auf verbose gesetzt? Wenn da nicht mehr Info kommt, würde ich das Modul mal erweitern um dem Problem auf die Schliche zu kommen...

Gruß,
Matthias

xasher

Hallo,

ich finde das Modul toll. Leider stimmt es mit der aktuellen API nicht mehr ganz überein, weil sich das json geändert hat.
Ich würde mich freuen, wenn das Modul ein Revival erleben würde.

@TeeVau: Vielleicht könntest du dir das Thema nochmals anschauen, wenn es bei dir möglich ist.

Besten Dank,
Alex

bombardi

Auch wenn dieses Thema lange nicht mehr besprochen wurde trotzdem der Versuch Hilfe zu bekommen.

Ich habe ein Problem mit dem getFriends.
Wenn ich versuche set fitbit_IO getFriends zu benutzen bekomme ich die Meldung
Unknown argument getFriends, choose one of getFriends setWeight setFat.
Der State ist danach "API Error. See FHEM Log for more details"
und im Log steht "fitbit_IO: fitbit_parseHttpDataError: Found error 'not_found' in JSON reply with msg 'The API you are requesting could not be found.'"

Hat jemand einen Tip was da schief läuft ?