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

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

Vorheriges Thema - Nächstes Thema

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