Holen Sie sich Ihre Herzfrequenz von der Fitbit-API in Python!

Multifunktions tragbares Terminal Fitbit Charge2!

FullSizeRender.jpg のコピー.jpg

Aus irgendeinem Grund habe ich kürzlich das beliebte tragbare Terminal Fitbit Charge2 bekommen, also würde ich gerne damit spielen. Da fitbit über eine offizielle API verfügt, werden wir diese verwenden, um die Herzfrequenz in Python zu ermitteln und grafisch darzustellen.

【Umgebung】 ・ OS X EL Capitan ・ Python 3.5.2

API-Vorbereitung

Holen Sie sich die für die API erforderliche ID usw.

Eine Anwendung erstellen

Melden Sie sich mit Ihrem Fitbit-Konto bei https://dev.fitbit.com/login an und erstellen Sie eine neue Anwendung auf der Registerkarte ** ANMELDEN EINER APP *.

Artikelname Inhalt
Application Name Anwendungsname(geeignet)
Description Anwendungsbeschreibung(geeignet)
Application Website Anwendungs-URL(geeignet)
Organization Zugehörigkeitsorganisation
Organization Website URL Ihrer Organisation
OAuth 2.0 Application Type App-Typ(Wählen Sie Client oder Personal)
Callback URL http://127.0.0.1:8080/Eingeben
Default Access Type Da die Daten hier nicht geändert werden, lesen Sie-Wählen Sie Nur

Holen Sie sich die Client-ID und das Client-Geheimnis

Wenn Sie die Anwendung erstellen, können Sie die (OAuth 2.0) Client-ID und das Client-Geheimnis von ** MANAGE MY APPS ** abrufen. Notieren Sie sich dies. スクリーンショット 2017-02-01 23.33.24.png

Setzen Sie den OAuth 2.0-Anwendungstyp auf Persönlich

Öffnen Sie die Seite ** Anwendungseinstellungen bearbeiten ** unter * MEINE APPS VERWALTEN * und setzen Sie den OAuth 2.0-Anwendungstyp auf Persönlich. スクリーンショット 2018-01-16 0.10.01.png Wenn Sie Zeitreihendaten wie Minuten abrufen möchten, müssen Sie diese auf Persönlich setzen. (Referenz: https://dev.fitbit.com/build/reference/web-api/activity/)

Zugriffstoken abrufen und Token aktualisieren

Von hier aus ist es etwas mühsam. Starten Sie das Terminal. Wechseln Sie in ein geeignetes Verzeichnis, kopieren Sie den folgenden Befehl und führen Sie ihn auf dem Terminal aus.

Terminal


git clone https://github.com/orcasgit/python-fitbit.git 

Verwendung des Terminals hier Wenn Sie mit dem Befehl git [hier] eine Fehlermeldung erhalten (http://qiita.com/furusin_oriver/items/974a7b7fb8c56ad88d6e)

Kopieren Sie anschließend den folgenden Befehl, fügen Sie ihn in das Terminal ein und führen Sie ihn aus. Ersetzen Sie [OAuth 2.0 Client ID] und [Client Secret] durch die zuvor erhaltenen Werte.

python-fitbit/gather_keys_oauth2.py 【OAuth 2.0 Client ID】 【Client Secret】


Dann startet der Browser und スクリーンショット 2017-02-01 12.12.52.png Da ein solcher Authentifizierungsbildschirm angezeigt wird, überprüfen Sie die erforderlichen Elemente und [Zulassen](ich habe vorerst alle überprüft).

Wenn Sie zum Terminal zurückkehren,

Terminal


access_token = XXXXXXXXXXXXXXXXXXXXXX
refresh_token == YYYYYYYYYYYYYYYYYYYYYYYYY

Wird angezeigt, notieren Sie sich dies. Erhalten · Kunden ID ・ Kundengeheimnis ・ Arsch und Ken ・ Token aktualisieren Notieren Sie sich den Wert von und speichern Sie ihn.

Holen Sie sich Daten mit Python

Die Python-Codierung erfolgte unter Jupyter.

Weil es die Python-Fitbit-Bibliothek verwendet

Terminal


pip install fitbit

Ich werde das machen. python-fitbit GitHub Erklärung von Python-Fitbit

Datenerfassung


import fitbit
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

#ID usw., die Sie aufgeschrieben haben
CLIENT_ID =  "XXXXXXXXXXXXXXXXXXXXXXX"
CLIENT_SECRET  = "XXXXXXXXXXXXXXXXXXXXXXX"
ACCESS_TOKEN =  "XXXXXXXXXXXXXXXXXXXXXXX"
REFRESH_TOKEN =  "XXXXXXXXXXXXXXXXXXXXXXX"

#Datum, das Sie erhalten möchten
DATE = "2017-01-31"

#ID usw. Einstellungen
authd_client = fitbit.Fitbit(CLIENT_ID, CLIENT_SECRET
                             ,access_token=ACCESS_TOKEN, refresh_token=REFRESH_TOKEN)
#Holen Sie sich die Herzfrequenz (1 Sekunde Einheit)
data_sec = authd_client.intraday_time_series('activities/heart', DATE, detail_level='1sec') #'1sec', '1min', or '15min'
heart_sec = data_sec["activities-heart-intraday"]["dataset"]
heart_sec[:10]

Ausgabeergebnis


[{'time': '00:00:02', 'value': 56},
 {'time': '00:00:07', 'value': 55},
 {'time': '00:00:12', 'value': 54},
 {'time': '00:00:17', 'value': 54},
 {'time': '00:00:32', 'value': 54},
 {'time': '00:00:37', 'value': 56},
 {'time': '00:00:42', 'value': 55},
 {'time': '00:00:52', 'value': 58},
 {'time': '00:01:07', 'value': 58},
 {'time': '00:01:09', 'value': 57}]

Ich habe eine Herzfrequenz! Ich erhalte ab Mitternacht 24 Stunden lang Daten, aber ich erhalte nicht jede Sekunde Daten, ohne alles zu erhalten, sondern weniger Sekunden.

Wenn Sie das Argument detail_level auf "1min" und "15min" setzen, können Sie es in Einheiten von 1 Minute oder 15 Minuten abrufen.

Verarbeiten Sie die Daten und zeichnen Sie

Konvertieren Sie Daten vom Typ dikt in Datenrahmen


heart_df = pd.DataFrame.from_dict(heart_sec)
print(heart_df.shape)
heart_df.head()
スクリーンショット 2017-02-02 0.30.25.png

From_dict ist sehr praktisch, da es Daten vom Typ "dict" auf einmal in einen Datenrahmen konvertiert.

Index zu Zeitreihendaten


heart_df.index = pd.to_datetime([DATE + " " + t for t in heart_df.time])
heart_df.head()
スクリーンショット 2017-02-02 0.34.26.png Konvertieren Sie den Index in Zeitreihendaten, da die Darstellung einfach ist. 1. 1. Erstellen Sie eine Zeichenfolge, die Datum und Uhrzeit mit der Listeneinschlussnotation verbindet 2. Konvertieren Sie die Zeichenfolgenliste mit to_datetime in datetimeIndex. 3. 3. Ändern Sie den Index des Datenrahmens.

Pandas Handlung

plot


heart_df.plot(y="value", figsize=(20,5))
heart_df.head()

0JblsRxM2NAAAAAAElFTkSuQmCC.png

Ihre Herzfrequenz ist im Schlaf von 1:30 bis 8:00 Uhr niedrig. Nun, die Analyse kommt wieder!

Empfohlen

"Kimuchi-Topf, in dem Sie die Hälfte des Gemüses essen können, das Sie an einem Tag benötigen" @ Seven Eleven

Recommended Posts

Holen Sie sich Ihre Herzfrequenz von der Fitbit-API in Python!
Speichern Sie Ihre Herzfrequenz in Echtzeit (?) Mit der Python x Fitbit API in SpreadSheets!
[Python] Ruft den Gesetzestext aus der e-GOV-Gesetz-API ab
Geben Sie den von der Oanda REST API in Python erhaltenen Wechselkurs in MongoDB ein
Abrufen der arXiv-API in Python
Klicken Sie in Python auf die Sesami-API
Holen Sie sich den Desktop-Pfad in Python
Holen Sie sich den Skriptpfad in Python
Rufen Sie den Wert ab, während Sie den Standardwert aus dict in Python angeben
Klicken Sie auf die Web-API in Python
Verwenden Sie die Flickr-API von Python
Python Holen Sie sich das kommende Wetter von der Wetter-API
Holen Sie sich den Desktop-Pfad in Python
Holen Sie sich den Hostnamen in Python
Greifen Sie mit Python auf die Twitter-API zu
So erhalten Sie mithilfe der Mastodon-API Follower und Follower von Python
Klicken Sie in Python auf die New Relic-API, um den Status des Servers abzurufen
Erhalten Sie Wechselkurse von offenen Wechselkursen in Python
Versuchen Sie, die Kraken-API mit Python zu verwenden
Tweet mit der Twitter-API in Python
Holen Sie sich Google Fit API-Daten in Python
Holen Sie sich Youtube-Daten in Python mithilfe der Youtube-Daten-API
Holen Sie sich den Batteriestand von SwitchBot mit Python
Ruft die EDINET-Codeliste in Python ab
Holen Sie sich mit Python die Niederschlagswahrscheinlichkeit aus XML
[Python] Holen Sie sich die Hauptfarbe aus dem Screenshot
Abrufen des Metrikverlaufs von MLflow in Python
Holen Sie sich Ihre eigene IP-Adresse in Python
Codebeispiel zum Abrufen von oauth_token und oauth_token_secret der Twitter-API in Python 2.7
Holen Sie sich mit Python Zeitreihendaten von k-db.com
Holen Sie sich den Inhalt von Git Diff aus Python
[Python] Holen Sie sich die Dateien mit Python in den Ordner
Holen Sie sich das Wetter in Osaka über Web-API (Python)
Holen Sie sich den Aufrufer einer Funktion in Python
Versuchen Sie es mit der BitFlyer Ligntning API in Python
Holen Sie sich die Bild-URL mithilfe der Flickr-API in Python
Tipps zum Erreichen der ATND-API mit Python
Ruft den Fenstertitel des X-Fenstersystems in Python ab
Verwenden Sie Python in Ihrer Umgebung von Win Automation
So erhalten Sie die Dateien im Ordner [Python]
Klicken Sie in Python auf die Firebase Dynamic Links API
Holen Sie sich nur Artikel von Webseiten in Python
Versuchen Sie, direkt von Python 3 aus auf die YQL-API zuzugreifen
Versuchen Sie, die DropBox Core-API mit Python zu verwenden
Holen Sie sich mit Python + Requests Benutzer, die zu Ihrer Organisation gehören, über die Garoon REST-API
Evernote-API in Python
Holen Sie sich Datum in Python
C-API in Python 3
So erhalten Sie den Variablennamen selbst in Python
Übersetzen von Visual Studio 2017 nach Python (Microsoft Translator Text API)
So ermitteln Sie die Anzahl der Stellen in Python
Grundeinstellungen bei Verwendung der foursquare-API mit Python
[Python] Holen Sie sich die Zahlen im Diagramm mit OCR
Geben Sie die Zeit ab dem Start des Programms in Python aus
[Python] Ruft die Liste der im Modul definierten Klassen ab
Holen Sie sich LEAD-Daten mit der REST-API von Marketo in Python
Holen Sie sich mit Python + Zeep einen Zeitplan von der Garoon SOAP API
Holen Sie sich mit Python Daten vom GPS-Modul mit 10 Hz
Holen Sie sich den Rückkehrcode eines Python-Skripts von bat