Fitbit Daten, die durch Python Armband und Grafiken Grafana zeigt

dass eine solche? Heute sichern wir ein Dokument, das alle diejenigen interessiert, die Sie einen Armband Fitbit haben könnten, mit denen Sie bereits wissen, dass wir mehr über unseren Lebensstil lernen und so… gut, Wenn Sie möchten, dass Informationen nutzen und ihre schöne Grafik sehen, ist dies Ihr Dokument! Mit einer Python-Skript Messungen erhalten, die uns interessieren und speichert sie in einer MySQL-DB, Grafana dann mit Grafiken malen, die uns interessiert!

Wie ich nehme an, sich um viele Fans werden hier Raspberry Pi und andere fricadas, vorstellen, dass Sie eine haben Magischer Spiegel montiert, Sie wissen, ein Spiegel-Monitore und wollen hinter Ihrem Haus domotizar eine weitere Note zu geben und Sie in einem Spiegel kennen Sie Ihre Fortschritte sehen, die kilomentros Touren, zertreten Schritte, Kalorien verbrannt, Grafik Pulsieren, uploaded Etagen… gut… alles kann durch die folgenden Schritte erhalten, Eines Tages werde ich Sie in interessante Projekte einbinden, die ich zu Hause eingerichtet habe 🙂

 

ich sagte:, was wir brauchen? Ein Server mit Apache und MySQL installiert, Wir schaffen eine DB, wo wir speichern, was uns interessiert (Wir sehen ein paar Beispiele), wir werden auf der Website von fitbit überprüfen, um eine App zu erstellen und sehen, wie die Access-Token erhalten wir in einem Python-Skript verwenden Cloud-Info Fitbit eine JSON-Datei zu saugen, die lokal für die spätere Ausfuhr in dem BD enthalten. Danach wird bereits gelutscht, wie Sie wahrscheinlich bereits installiert haben Grafana (und wenn Sie einen Blick die), was wir tun werden MySQL-Abfragen an die Datenbank für das, was uns interessiert, sehen!

Das Szenario ist einfach, Raspberry Pi man jeden Tag an 23:55h ein Python-Skript ausgeführt macht die Kommentare, speichert die Daten für jeden Tag in den Tabellen der Datenbank MySQL und zugegriffen, von wo aus wir die Grafana installiert, entweder in der gleichen Raspberry Pi, auf einer anderen Maschine… Solange ich sagen, Ich bin kein Programmierer oder Entwickler, genau so, wie ich zeigen, wie ich tat es denn, wenn jemand interessiert ist cool stuff zu tun! Sicher gibt es andere Methoden, aber das ist nicht so kompliziert,!

 

Die erste Sache ist die Website zugreifen https://dev.fitbit.com und ein Konto erstellen, wenn Sie es nicht haben, danach, wir zugreifen https://dev.fitbit.com/apps/new und erstellen Sie eine neue Anwendung mit den folgenden Schritten:

  • Anwendungsname: Geben Sie einen beschreibenden Namen, in meinem Fall Python Pi 197
  • Beschreibung: Wir schreiben etwas, das Sie uns diese App verknüpfen zu projizieren, dass wir zu Fuß.
  • Anwendung Webseite: Wir haben eine URL, zum Beispiel http://www.bujarra.com
  • Organisation: Name der Organisation, p. nicht: Bujar
  • Website der Organisation: URL angegeben erneut, http://www.bujarra.com
  • OAuth 2.0 Anwendungstyp: wählen ‚persönlich‘
  • Rückruf-URL: http links://google.com
  • Standardzugriffstyp: Wir bestätigen, dass es so bleibt ‚Schreibgeschützt‘.

 

Wir nahmen die App und ihre Eigenschaften, und wir können sehen, was unsere Kunden ID und unsere Client-Geheimnis zu schreiben, da unten, und wir gehen zu müssen,.

 

wir zugreifen https://dev.fitbit.com/apps/oauthinteractivetutorial zu erzeugen, die Zugangstoken es wird das sein, was wir uns validieren müssen Anfragen von Python machen. So cumplimentamos Datenabschnitt 1, wo wir zeigen unsere Kunden ID, unsere Client-Geheimnis und zeigen, dass Umleitungen uns zu jedem Web, markieren wir unsere Gesundheitsinformationen wir Zugang geben wollen und wichtig, Wir müssen die Ablaufzeit für die angeben Zeichen (86400 für 1 Tag 604800 für 1 Woche 2592000 für 30 Tage 31536000 für 1 Jahr), Normalerweise würden wir den Wert setzen 1 Jahr zu vermeiden, die mit erneuern Zeichen. in einem neuen Tab Klicken Sie auf den Link, der es zeigt, und öffnen, Kopieren Sie die URL.

 

Und in Teil 2 Wir halten Antwort und stellen Sie sicher, dass die Daten korrekt sind, Wenn ja wir nun endlich unsere Zeichen!

 

So mismamente wenn wir bestätigen, dass wir jetzt Daten aus unserer Raspberry zugreifen können wir den folgenden Befehl ausführen können, wird die Daten des Abstandes am letzten Tag jede Minute gereist anzuzeigen, Wenn alles korrekt ist json-Format anzeigen. Lauf:

curl -H "Authorization: Bearer NUESTRO_TOKEN" https://api.fitbit.com/1/user/-/activities/distance/date/today/1d.json

 

Auf dieser Website haben Sie weitere Beispiele, um mehr Informationen aus anderen Wertpapieren oder anderen Perioden zu sehen: https://dev.fitbit.com/reference/web-api/activity/#get-daily-activity-summary.

 

Und wenn alles korrekt ist, können wir ein kleines Skript erstellen, das nenne ich werde ‚fitbit_carga_datos.sh‚ Sie erhalten die Daten aus dem letzten Tag des Fitbit, sowohl der Abstand, die Schritte, Etagen hochgeladen, Herzschlag oder Zeit schlafend in einem anderen Info. Jede Art von Informationen wird in einer Datei json hält im Apache-Verzeichnis zu verlassen, seitdem wir brauchen. Dies würde das Skript sein, die Daten BD lädt:

# DISTANCIA
curl -H "Authorization: Bearer eyJhbGxxxxxxLzI2II0" https://api.fitbit.com/1/user/-/activities/distance/date/today/1d.json > /var/www/temp/fitbit_distancia.json

/usr/bin/python /home/pi/fitbit_distancia.py

# PASOS
curl -H "Authorization: Bearer eyJhbGxxxxxxLzI2II0" https://api.fitbit.com/1/user/-/activities/steps/date/today/1d.json > /var/www/html/fitbit_pasos.json

/usr/bin/python /home/pi/fitbit_pasos.py

# PISOS
curl -H "Authorization: Bearer eyJhbGxxxxxxLzI2II0" https://api.fitbit.com/1/user/-/activities/floors/date/today/1d.json > /var/www/html/fitbit_pisos.json

/usr/bin/python /home/pi/fitbit_pisos.py

# CORAZON
curl -H "Authorization: Bearer eyJhbGxxxxxxLzI2II0" https://api.fitbit.com/1/user/-/activities/heart/date/today/1d.json > /var/www/html/fitbit_corazon.json

/usr/bin/python /home/pi/fitbit_corazon.py

# DORMIR
FETXA=`date +"%Y-%m-%d"`
curl -H "Authorization: Bearer eyJhbGxxxxxxLzI2II0" https://api.fitbit.com/1/user/-/sleep/date/$FETXA.json > /var/www/html/fitbit_dormir.json

/usr/bin/python /home/pi/fitbit_dormir.py

 

wie wir sehen,, müssen wir ändern und rechts unsere Token setzen, Nach dem Herunterladen von Daten Web sie in der JSON-Datei speichert, wie angegeben und anschließend eine Datei in Python json jeden Lauf greifen und fügt sie in eine andere Datenbank.

Wir halten es und tun es ausführbar!

 

deshalb, wir schaffen so viele Python-Skript, wie wir Metriken gehen zu analysieren, aber bevor sie werden wir eine Station auf dem Weg machen, und wir werden Erstellen Sie die Datenbank und Tabellen wir brauchen, wird die sein, wo die Python-Datei importiert jede json in der entsprechenden Tabelle. Wir können diese mit einem MySQL-Manager als HeidiSQL tun oder direkt aus dem Linux-Shell von Shell conectadonos. Wir erstellen eine Tabelle für jede Messung, in meinem Fall sind sie Tabellen genannt: fitbit_distancia, fitbit_pasos, fitbit_dormir… und sie sind sehr einfach, sie haben 2 Spalten, ein Anruf ‚km‘ (SCHWEBEN) und ein weiterer Anruf ‚Datum‘ (DATUM) im Fall von BD entfernt; im Fall von fitbit_pasos wird 2 Spalten: Schritte und Datum, für fitbit_pisos: Böden und Datum… und damit der Rest, und? Wir konnten eine einzelne Tabelle mit mehreren Spalten erstellen auch, aber lassen Sie jeder will. Beispiel die Tabelle zu erstellen:

CREATE TABLE `fitbit_distancia` (
`kilometros` FLOAT NOT NULL,
`fecha` DATE NOT NULL
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
;

 

Nach der Definition der Daten gespeichert, was wir tun, ist Dateien erstellen, dass Python die JSON-Datei mit den Daten zu lesen und dann versuchen, für den Wert Inhalt suchen, der uns interessiert, und es in der entsprechenden Tabelle einfügen, und ich bin, wie ich es bekommen hätte, Ich kann mir vorstellen, dass dies eine bessere Art und Weise.. Ich lasse ein Beispiel für eine der Python-Dateien, wird in diesem Fall verantwortlich sein, die Kilometer lesen und sie in den BD bringen:

 

fitbit_distancia.py

import urllib
import json
import MySQLdb
db = MySQLdb.connect("localhost","root","CONTRASEÑA","NOMBRE_BASE_DATOS")
cursor = db.cursor()

url = 'http://IP_RASPBERRY/fitbit_distancia.json'
urllib.urlopen(url).read()
response = urllib.urlopen(url).read()

json_obj = json.loads(response)

for product in json_obj["activities-distance"]:
VALOR = product["value"]
FECHA = product["dateTime"]
cursor.execute("""INSERT INTO fitbit_distancia (kilometros,fecha) VALUES (%s,%s) """,(VALOR,FECHA))
db.commit()

so, das erste Drehbuch ‚fitbit_carga_datos.sh‘ Statistiken Fitbit Website wird nach unten in einem JSON, und jeder lesen Python-Skript JSON und in die entsprechende Tabelle. für Komfort, oder wenn Sie Fragen haben, Ich lasse meine Skripte auf diesen Link, Sie müssen nur Ihre Token setzen und Tabellen erstellen, die Sie necesitéis! Und Zeitplan für jeden Tag laufen Sie 23:59h, und Sie alle Metriken Tag erhalten. in ‚crontab-‘ wir hinzufügen:

59 23 * * * /home/pi/fitbit_carga_datos.sh

 

Jetzt die schlechte… gut, dies macht? Ruft nur heute, Nein? Und was passiert, wenn wir nicht synchronisiert? oder wenn das letzte Mal war vor 4h? ja, unsynchronisierten verlieren Daten, so eine Rolle, Nein? Gut, das, was ich ertragen ist, zu verstehen, wie es funktioniert. Ich weiß wirklich, was ich? Nun, wie diese, aber anstatt sich Metriken heute, Ich frage Metriken Ftibit letzte Woche! und so, wenn zum Beispiel gestern, oder tut 2 Tage, die nicht synchronisiert Armband haben, nichts passiert, weil ich jede Nacht unter dem letzten Metriken 7 Machaco Tage und in BD, so jeden Tag, Es ist die letzte niedrig 7 und Problem gelöst. und?

Also lasse ich Hier werden die Skripte Ich benutze, wenn das, was Sie interessiert ist nur heute zu synchronisieren und detaillierten jeder Minute erhalten… oder wenn Sie interessieren sich nur für die tägliche Gesamt!

 

und nichts, Wir tun unser Armaturenbretter wie wir es gerne! ich sagte:, wir werden eine Grafana verwenden wir bereits haben. Es gibt mehr MySQL Ursprungsquelle hinzuzufügen und Konsultationen zu machen, die uns interessieren. Wir können Panels hinzufügen und Plugins Typ hinzufügen Graph für typische Grafik… die Singlestat anzuzeigen Werte (MySQL Query-Ergebnisse)… Wenn Sie genau hinsehen, um diese Pantallazo Sie, Ich zeige Daten 2 Armbänder, mich blau und rosa ist die txabala (und ein paar Wochen her, dass hat), so dass jeder das tut, was Sie wollen, und? Die letzte Vorstellung von all das wird in einen magischen Spiegel übersetzen, dass ein Tag werde ich zeigen =)

Ich lasse einige Beispielabfragen Ich habe mal in Grafana, wenn Sie von Nutzen sind:

Grafica Schritte:

SELECT pasos as value, "Pasos Hector" as metric, UNIX_TIMESTAMP(fecha) as time_sec FROM fitbit_pasos WHERE $__timeFilter(fecha) order by fecha asc

Grafik weg (km):

SELECT kilometros as value, "Hector" as metric, UNIX_TIMESTAMP(fecha) as time_sec FROM fitbit_distancia WHERE $__timeFilter(fecha) order by fecha asc

Singlestat die Kilometer zeigt habe ich diese Woche:

select sum(kilometros) from fitbit_distancia WHERE DATE(fecha) >= CURDATE() - INTERVAL 7 DAY

 

Utilizar Grafana es sehr sehr sehr einfach, so wirklich, wenn Sie nicht installiert haben, folgende do diese Anweisungen und dann versuchen, ein Dashboard zu erstellen, Panels hinzufügen und bearbeiten (sein Titel), Sie werden sehen, dass Sie viele Möglichkeiten und alle sehr leicht zu verstehen haben, um es bekommen Sie nach Ihren Wünschen anpassen total! aber, Wir haben unsere vollständig kontrollierten Körper! Datenbank speichert alle Schritte, die wir, die Kilometer, die wir, das Schlagen unseres Herzens, die Stunden geschlafen, Wir klettern die Böden… Berührungen ausbeuten!

 

Weiter geht es an einem anderen Tag mit mehr, Sie werden sehen, dass die Dinge Cuquis steuern unser Leben gehen kann..

 

Hector Herrero
Letzte Artikel von Hector Herrero (Alle anzeigen)