EinfĂŒhrung
Menschen tragen Fitness-ArmbĂ€nder aus verschiedenen GrĂŒnden, ich kann einige davon annehmen:
- Um fit zu bleiben und die Ziele der AktivitÀt zu erreichen;
- Weil es eine modische Kleinigkeit ist;
- Mit sich selbst experimentieren oder sich selbst besser kennenlernen.
Ich trage ein Fitness-Armband aus Grund Nummer 3. In diesem Artikel möchte ich darĂŒber sprechen, wie Sie Daten aus einem Armband extrahieren und versuchen können, einige AbhĂ€ngigkeiten zu ermitteln.
Methoden zum Extrahieren dieser Daten funktionieren fĂŒr Mi Band 1 , 1S und möglicherweise 2 (die App fĂŒr 2 scheint dieselbe zu sein).
Datenextraktion
Um Daten aus dem Bracelet zu extrahieren, mĂŒssen Sie zunĂ€chst die Datenbank vom SQLite-Telefon abrufen, in dem die gesammelten Metriken gespeichert sind. Im Fall von Android geschieht dies sehr einfach, siehe Thema im xda-Entwicklerforum , Skripte fĂŒr die aktuelle Datenbank :
- Wir verbinden ein Android-Telefon mit aktiviertem USB-Debugging mit einem Computer.
- Wir machen ein Backup der Anwendung:
adb backup -f mi.ab -noapk -noshared com.xiaomi.hm.health
; - Erstellen Sie
dd if=mi.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" > mi.tar
dd if=mi.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" > mi.tar
; - Entpacken Sie das Archiv aus der Datenbank:
tar xvf mi.tar apps/com.xiaomi.hm.health/db/ 2>&1 | tee -a log
tar xvf mi.tar apps/com.xiaomi.hm.health/db/ 2>&1 | tee -a log
; - Kopieren Sie die Datenbank:
cp -f apps/com.xiaomi.hm.health/db/origin_db* ./db/
.
Als Ergebnis erhalten wir eine SQLite-Datenbank mit dem Dateinamen db/origin_db_[0-9]+$
, in der die Mi-Band-Metriken db/origin_db_[0-9]+$
.
Laden und Analysieren von Daten
Um die Daten zu studieren, ist es meiner Meinung nach bequem, das IPython-Notizbuch zu verwenden: Xiaomi_Mifit_miband_data.ipynb
Metriken werden in der Tabelle DATE_DATA gespeichert:
df = pd.read_sql_query("SELECT * from DATE_DATA", con)
Interessante Spalten in der Tabelle:
TĂ€glich aggregierte Daten
Aggregierte Daten werden als JSON gespeichert:
{"slp":{"usrEd":-1440,"lt":457,"st":1464376080,"wk":15,"dp":30,"usrSt":-1440,"ed":1464406200},"v":5,"goal":8000,"stp":{"rn":2,"cal":257,"runDist":256,"wk":69,"ttl":5244,"runCal":13,"dis":3817}}
Die Daten sind in zwei Teile unterteilt: Schlaf ( slp ) und AktivitĂ€t ( stp ). FĂŒr den Schlaf werden die Start- und Endzeit sowie die Zeit des tiefen und leichten Schlafes in Minuten gespeichert - lt, dp . Die Wachzeit zwischen dem Beginn und dem Ende des Schlafes wird ebenfalls gespeichert - wk . FĂŒr die AktivitĂ€t wird die Gesamtzahl der "Schritte" ttl gespeichert - die Summe der primĂ€ren Sensorwerte fĂŒr den Tag und anderer abgeleiteter GröĂen func(ttl, , )
.
Rohdaten zu AktivitÀt und Herzfrequenz
Rohe AktivitÀtsdaten werden jede Minute (pro Tag 1440) gespeichert und reprÀsentieren 3 Werte pro Minute. Der erste Wert ist ein Traum und ein Wert von 0 bis 127 (aber in meinem Fall maximal 126), der zweite und dritte sind AktivitÀten mit einem Wert von 0 bis 255 (ich habe ein Maximum von AktivitÀt2 - 189, AktivitÀt3 - 240).
Der Impuls wird jede Minute gespeichert und reicht von 0 bis 255.
Wie Rohdaten pro Tag aggregiert werden
Das einfachste Aggregat ist die Anzahl der Schritte pro Tag - die Summe der AktivitÀtswerte3 pro Tag. Es ist schwieriger zu schlafen: Ich habe nie gelernt, wie man rohe Schlafdaten in aggregierte Daten umwandelt. In den Foren wurde die Idee zum Ausdruck gebracht, dass der Wert von AktivitÀt1 == 4 Tiefschlaf und 5 Licht ist, aber es ist so einfach wie mit Schritten, eine Beziehung zwischen aggregierten Daten und Rohdaten herzustellen.
Datenanalyse
Erstens, wie viel ich wÀhrend des Jahres geschlafen habe. Dieser Wert betrug ~ (7 + - 1) Stunden. Damit scheint alles in Ordnung zu sein.

Eine andere offensichtliche Sache - ich bekomme am Wochenende genug Schlaf:

Und wenn Sie das VerhÀltnis von Tiefschlaf zu LichtqualitÀt nennen, stellt sich heraus, dass ich am Donnerstag die beste SchlafqualitÀt habe und gleichzeitig der Tiefschlaf 23% der gesamten Schlafzeit ausmacht. Und am Freitag - der schlechtesten SchlafqualitÀt - habe ich Angst zu erraten, warum.

Die maximale Anzahl von "Schritten", die ich am Freitag und Samstag mache:

Gleichzeitig ist meine Umgebung der Tag, an dem ich wenig schlafe und wenig gehe. Es gibt keine offensichtlichen ErklĂ€rungen aus der Kategorie "Ich arbeite von zu Hause aus", daher ist dies etwas Neues fĂŒr mich.
Ich hoffe, dass jemand von den Besitzern der beliebten Mi-Band-ArmbĂ€nder auch sich selbst studieren und ĂŒber ihre Eigenschaften berichten möchte.