Neues Modul für Jawbone Up (24) Fitness Tracker - zum Testen und Kommentieren

Begonnen von domschl, 26 Juni 2014, 16:13:11

Vorheriges Thema - Nächstes Thema

domschl

Im Anhang eine erste Testversion eines Moduls, das den Jawbone Up oder Up24 Fitness-Tracker in FHEM integriert. Bewegungs-Daten werden so als FHEM-Readings zur Verfügung gestellt. Da ich bis jetzt weder Erfahrung mit Perl- noch FHEM-Entwicklung hatte, freue ich mich über jedes Feedback. Als Grundlage haben das Wiki und cut&paste von diversen existierenden Modulen gedient.

Hinweis
Das Modul 38_JawboneUp.pm steht nun über den normalen FHEM update zur Verfügung. Die aktuelle Dokumentation ist (neben der Modul-Dokumentation) auch im Wiki zu finden:
http://www.fhemwiki.de/wiki/JawboneUp

Installation:
Das Modul benötigt die folgenden Perl-Bibliotheken: LWP::Agent, IO::Socket:SSL, die in der Regel bereits installiert sind.
Das Modul WWW::Jawbone::Up scheint nicht in den Debian repositories zu sein und muß also per CPAN ( cpan -i WWW::Jawbone::Up ) installiert werden. Leider hat dieses Modul eine ziemliche Anzahl von abhängigen Modulen.

Installation der Jawbone Bibliotheken in Debian oder Raspberry Pi
sudo apt-get update
sudo apt-get install libio-socket-ssl-perl
cpan -i WWW::Jawbone::Up

Das Kommando cpan muß beim ersten Aufruf konfiguriert werden. In der Regel reichen die vorgeschlagenen Standards aus.
Falls cpan fehlschlägt, kann die Installation mit dem Parameter '-f' (force) erzwungen werden. Dies ist nützlich, falls die Installation in Testroutinen scheitert, die nicht entscheidend sind:
cpan -i -f WWW::Jawbone::Up

Trouble:
Wenn das Modul nicht startet, dann liegt das höchstwahrscheinlich an fehlenden abhängigen Modulen. Im Web-Interface einfach
reload 38_JawboneUp
eingeben: dann erhält man meistens einen Hinweis auf das Problem.

Konfiguration:
define <name> JawboneUp <user-email> <password> [<poll-intervall>]

User-email und password sind die Anmelde-Informationen für den JawboneUp Service. Die Standard Pollrate ist 3600 (1h), Minimum ist 900 (15 min).

Beispiel:
define MyJawbone JawboneUp me@sample.net s3cr3t 1800

Sonstiges
Alle Kommunikation per Internet wird mit einem Hintergrund-Prozeß durchgeführt, das Modul sollte also den FHEM nicht "durcheinander bringen". Als Readings stehen zur Verfügung:

active_time   (aktive Zeit in Sek.)
bg_steps       (Anzahl Schritte)
bmr_calories  (Ruhekalorienverbrauch)
bmr_calories_day  (Durchschnittlicher Tages-Ruhekalorienverbrauch (ohne Bewegung))
calories   (Kalorien, die durch Aktivität verbraucht wurden)   
distance  (Zurückgelegte Strecke in km)
longest_idle  (inaktive Zeit in Sek.)

Die Anzahl verbrauchter Kalorien für den laufenden Tag errechnet sich aus calories + bmr_calories.

Historie
Update 2. April 2015
* JawboneUp.pm ist nun Teil der FHEM Distribution und kann über den normalen FHEM update installiert werden.
* Dokumentation: http://www.fhemwiki.de/wiki/JawboneUp
Update 27. Juni 2014 (v. 0.1.1)
* Bessere Fehlerbehandlung: es scheint Fälle zu geben, in denen "BlockingCall" weder den callback für completion noch für timeout aufruft.
* Minimum Poll-Intervall auf 900 Sek. erhöht.

Jedes Feedback ist willkommen!

Dom.

ArminK

Hallo,

wir zwei scheinen die einzigen FHEM-User zu sein welche so ein Armband benutzen.... Hab es mal installiert und es funktioniert auf Anhieb!
Muss jetzt nur mal schaue was ich mit den Werten triggern kann.....Ideen?

Grüße aus Heidelberg

Armin
Raspberry Pi 3B mit fhem 5.8;1xCUL USB, 2xCUNO, 1xCUL Raspi über Fhem2Fhem, 2xHMLAN; diverse Homematic und FS20-Komponenten; 7 x Sonos-Player; diverse Eigenbauten mittels FS20 WUE, ESPEasy, MQTT, MySensors

domschl

Hallo,

das freut mich, daß es gut geklappt hat. Ich habe gerade noch ein kleines update hochgeladen, welches die Fehlerbehandlung für den Hintergrund-Prozess verbessert. (Der update ist oben im Original-Artikel angehängt.) Das Modul zeigt jetzt eine Versions-Nummer in den internals an. Aktuell ist jetzt 0.1.1.

Bisher lasse ich mir einfach Kalorien und Schritte als Graphik ausgeben: mehr als Jawbone-Daten erfassen mach' ich noch nicht. Ich wollte es mal eine Zeit lang laufen lassen, um einen Überblick über die "typischen" Daten zu erhalten. Danach bringe ich vielleicht den FHEM per Notify dazu ggf. zu mehr Bewegung aufzufordern, falls nötig.

War die Installation vom Modul WWW::Jawbone::Up kompliziert? Es wäre nämlich relativ einfach möglich, die (relativ simple) Funktion dieser Bibliothek direkt ins Modul zu integrieren, und so die externen Abhängigkeiten zu reduzieren,

Gruss Dom.

Spezialtrick

Es ist immer wieder interessant was man alles im Forum findet. ^^

Ich trage auch ein Jawbone Up24 und würde das Modul auch gerne mal testen. Könntest du genauer beschreiben wie man die Perl-Bibliotheken: LWP::Agent, IO::Socket:SSL, WWW::Jawbone::Up installiert? Weiß leider nicht wie ich vorgehen soll.

Ist es mit dem Modul den aktuellen Status des Up's auszulesen? Also Aktivitätsmodus, Schlafmodus, Nickerchen. Das würde sehr weitgehende Möglichkeiten eröffnen. :)
FHEM - Debmatic - Zigbee2MQTT - Homekit

Mitch

Danke, werde ich an WE mal testen


Sent from my iPhone using Tapatalk 2

Gruss
Markus
FHEM im Proxmox Container

domschl

@Spezialtrick:

Die Anleitung im ersten Post hat jetzt mehr Informationen zur Installation der benötigten Module.

Zur Zeit wird der Status des Jawbones nicht abgefragt. Das wäre zwar vermutlich möglich, allerdings ist der Einsatz aus zwei Gründen beschränkt: Eine Änderung des Jawbone-Modus muß erst per Bluetooth an die Telefon-App übertragen werden (das geht eventuell noch halbwegs in Echtzeit, falls die App auf dem Telefon läuft). Dann muß der Zustand an den Jawbone-Server übertragen werden, und dann (und das ist definitiv nicht in Echtzeit), muß das FHEM-Modul den Zustand abrufen. Normalerweise geschieht das nur 1-mal pro Stunde. Es dürfte also schwierig werden, Aktionen mit der Änderungen des Jawbone Zustandes auszulösen.

Dom.

Spezialtrick

FHEM - Debmatic - Zigbee2MQTT - Homekit

domschl

Das Modul läuft bei mir seit dem letzten update ohne jedes Problem. Man kann es entweder mit Jawbone-trackern verwenden, oder mit der iPhone-Jawbone-app ohne Tracker, oder mit der Pebble-Uhr und der Jawbone-app für Pebble (Pebble zählt dann die Schritte).

Oder gibt es noch spezielle Wünsche?

Nachtrag 1-Apr.: ich kümmere mich gerade um einen SVN-Account--damit wird die Weiterentwicklung dann transparenter und einfacher.

Dom.

domschl

Das Modul 38_JawboneUp.pm ist nun im FHEM SVN eingecheckt und steht über den normalen FHEM update zur Verfügung.

Die aktuelle Dokumentation befindet sich in der ausführlichen Form im Wiki:
http://www.fhemwiki.de/wiki/JawboneUp

Dom.

MartinPetri

hey leute

finde das Modul echt interessant leider hab ich noch keine zeit es zu testen, daher eine frage, wäre es denn möglich darüber zu ermitteln ob man schläft oder wach ist (für das Roommate)

mfg martin
Intel NUC , HMLan , RaspberryPI
diverse Homematic komponenten

domschl

Ich habe mir gerade nochmal die Daten angesehen, die Jawbone liefert.

Leider gibt die Jawbone API (meines derzeitigen Wissens nach) keinen klaren Zustand "wach" oder "schläft" zurück, aber es ist denke ich möglich, diesen Zustand indirekt zu erschließen. Die API liefert die gesamte Wach- bzw. Schlafzeit eines Tage. Ich werde ein paar Tests machen, und dann das Modul entsprechend erweitern.

Allerdings muß klar sein, daß der Zustand nur mit Zeitverzögerung zur Verfügung steht: Nach wechseln des Schlaf/Wach Zustands am tracker, muß der Tracker mit der Smartphone app per Bluetooth kommunizieren, die App muß mit Jawbone syncen, und dann muß das FHEM-Modul mit Jawbone syncen. Es können also durchaus 15-30min vergehen, bis der Zustand in FHEM up-to-date ist (poll-rate von 15min im Modul vorausgesetzt).

Dom.

Spezialtrick

Das klingt sehr gut. Wäre es eigentlich möglich die Daten des UP24 über einen externen Bluetooth Stick abzurufen? So ließe sich Aktualisierung des Zustandes ja deutlich beschleunigen.
FHEM - Debmatic - Zigbee2MQTT - Homekit

domschl

Leider benutzen alle mir bekannten Bluetooth basierten Fitness Tracker private, proprietäre und verschlüsselte Bluetooth-Protokolle um die Daten an ihre App zu liefern. Die Hersteller wollen wohl sicherstellen, daß die Daten nur über ihre Cloud laufen. :-(

Dies gilt, so weit ich mir das angesehen habe, für:

  • Fitbit (gibt überhaupt nur teilweisen Zugriff auf die eigenen Daten ("aggregiert")
  • Jawbone (immerhin relativ feiner Zugriff auf die eigenen Daten)
  • Withings Pulse (Zugriff nur über [aufwendige!] Cloud API, mit Details, Auth2 benötigt, daher braucht jeder User einen Dev-Account bei Withings.)
  • Polar (API ist Apple IOS Healthkit, daß jedoch nur über den Umweg Polar-Cloud synced)
  • Pebble: nur über Jawbone oder Misfit Cloud
Der erste (mir bekannte) Cloud-freie Fitness-tracker wird wohl die Apple-Watch werden, alle anderen mir bekannten Produkte betreiben viel Aufwand um sicherzustellen, daß alle Daten erstmal in die Cloud kopiert werden.
Für die Pebble Uhr wäre es möglich selbst einen Schlaf-Erkenner zu programmieren, der dann FHEM direkt signalisiert. Alle existierende Pebble Software läuft jedoch wieder über Clouds.

Dieser Interessenkonflikt zwischen den Herstellern und Usern führt dazu, daß die bisher verfügbaren Tracker nicht wirklich gut geeignet sind irgendwas in nahe Echtzeit zu steuern, und Stati wie "Wach" oder "Schläft" zur Verfügung zu stellen.

domschl

Ok, ich habe eine neue Version eingecheckt, die Sleep-mode als direktes reading zur Verfügung stellt, auf das dann mit NOTIFY reagiert werden kann. Echtzeitfähigkeit ist natürlich über die Poll-rate begrenzt (s.u.).

Es gibt jetzt vier neue Readings:

  • sleep_mode: 1: sleep mode ist aktiv, 0: nicht aktiv
  • stopwatch_mode: 1: stopwatch mode ist aktiv, 0: nicht aktiv
  • sleep_asleep: Anzahl Sekunden Schlaf im Schlafmodus
  • sleep_wake: Anzahl Sekunden Wachzustand im Schlafmodus
sleep_mode ist über einer Erweiterung des Jawbone-Perl-packages implementiert, die eine zusätzliche API ausnutzt. Wenn das mobil-telefon und die Jawbone Anwendung aktiv sind, wird die Zustands-Änderung in Sekunden an die Jawbone cloud übertragen. Die Geschwindigkeit, mit der das Reading dann im FHEM zur Verfügung steht, ist abhängig von der poll-rate. Ich habe jetzt das Minimum für die poll-rate auf 5min runtergesetzt (im Code: $min_poll). Wenn man manuell einen update auslöst (über "get update"), dann kommt das Ergebnis direkt.

Das update sollte dann morgen zur Verfügung stehen.

My-FHEM

Hi, das Modul finde ich super. Eine Frage:

Gibt es eine Grund, warum  die Readings des Schlafmodes: "awakenings, light, time_to_sleep,bedtime, deep ,awake"
von dem Modul nicht exportiert werden?.

Gruß

Ps: Ich habe dazu mal ein Patch angehängt. Ist das so OK?