Introduction


Export all your Fitbit data to Google Fit. If you find this useful, please star :star: the repository on Github.

Unlike other alternatives, such as fitnessyncer.com, this aims to offer very fine granularity for the data.

Fitbit Steps GoogleFit Steps demo

Features


Adding new activities

To add new activities

Setup


You have to register your own Fitbit and Google Fit applications. This setup is a one time thing.

  1. Install dependencies

    This is a python3 application so install all the dependencies

  1. Fitbit setup

    All instructions below must be performed using the same Fitbit account you want to sync with Google Fit.

Application Name : --
Description : --
Application Website : --
Organization : --
Organization Website : --
OAuth 2.0 Application Type : **Personal**
Callback URL : http://localhost:8080/
Default Access Type : Read-Only

Note : 
1. Use your own information for fields marked --
2. Make sure you copy the Callback URL exactly (including the last /)
3. Application Type MUST be Personal
  1. Google Fit setup

    • Go to the Google Developers Console
    • Click Continue. Then select Go to credentials and select Client ID
    • Under Application type, select Other and hit Create
    • Make a note of client ID and client secret
    • Navigate to auth folder cd /auth
    • run python3 auth_google.py -i <client-id> -s <client-secret>
    • This opens a popup in the browser. Authenticate and done!

Usage


Get your Google Developer Project Number (a 12 digit number) from a the Google Developers Console

Update project_number in config.ini to be your Google Developer Project Number.

Modify any other variables you'd like in config.ini with your own choices and start the sync using python3 app.py

Sync examples:

Setup autosync:

You can setup a cron task to automatically sync everyday at 2:30 AM.

30 2 * * * /path-to-repo/fitbit-googlefit/cron.sh >> /path-to-repo/fitbit-googlefit/cron.log 2>&1

Add above line to your cron tab: crontab -e in Linux. Sync logs will be stored to cron.log in repository.

Headless authentication


If you want to do the authentication process on a system without a display - such as a raspberry pi or a remote server, pass --console or -c option to the authentication scripts. See below examples.

python3 auth_fitbit.py -i clientid -s clientsecret --console

python3 auth_google.py -i clientid -s clientsecret --console

Note :

  1. Get command line help using the -h flag.
  2. Arguments passed through command-line take higher priority over config.ini values.