MagicMirror² v2.4.1 is available! For more information about this release, check out this topic.
Please read the release notes carefully since this update requires adjustments to your Raspberry Pi configuration!

Need help with Fitbit module returning all zeroes

  • I’m having an issue where the fitbit module loads up fine, however none of the data fields are populated.
    What I’ve tried:

    • Set all privacy settings in my fitbit profile to “anyone”
    • Confirmed login ID and secret is correct in config.js

    Possibly related:

    • When I start “sudo python” it hangs indefinitely at ENGINE Bus STARTED. I’m not sure if this is normal.
    • Do I need to start MagicMirror with “sudo npm start”? I’ve been using “pm2 start mm”. When I use “sudo npm start” from the MagicMirror directory I get the following:

    pi@raspberrypi:~/MagicMirror $ sudo npm start

    magicmirror@2.0.0 start /home/pi/MagicMirror
    electron js/electron.js

    npm ERR! Linux 4.4.21-v7+
    npm ERR! argv “/usr/bin/nodejs” “/usr/bin/npm” "start"
    npm ERR! node v6.7.0
    npm ERR! npm v3.10.3
    npm ERR! code ELIFECYCLE
    npm ERR! magicmirror@2.0.0 start: electron js/electron.js
    npm ERR! Exit status 1
    npm ERR!
    npm ERR! Failed at the magicmirror@2.0.0 start script ‘electron js/electron.js’.
    npm ERR! Make sure you have the latest version of node.js and npm installed.
    npm ERR! If you do, this is most likely a problem with the magicmirror package,
    npm ERR! not with npm itself.
    npm ERR! Tell the author that this fails on your system:
    npm ERR! electron js/electron.js
    npm ERR! You can get information on how to open an issue for this project with:
    npm ERR! npm bugs magicmirror
    npm ERR! Or if that isn’t available, you can get their info via:
    npm ERR! npm owner ls magicmirror
    npm ERR! There is likely additional logging output above.

    npm ERR! Please include the following file with any support request:
    npm ERR! /home/pi/MagicMirror/npm-debug.log

    pi@raspberrypi:~/MagicMirror/modules/MMM-fitbit/python $ sudo python
    Get credentials from credentials.ini? (Y/N)
    {“message”: “credentials.ini exists”, “type”: “status”}
    {“message”: “Reading from credentials.ini”, “type”: “status”}
    {“message”: “Read of credentials.ini successful.”, “type”: “status”}
    [04/Oct/2016:09:23:41] ENGINE Listening for SIGHUP.
    [04/Oct/2016:09:23:41] ENGINE Listening for SIGTERM.
    [04/Oct/2016:09:23:41] ENGINE Listening for SIGUSR1.
    [04/Oct/2016:09:23:41] ENGINE Bus STARTING
    CherryPy Checker:
    The Application mounted at ‘’ has an empty config.

    [04/Oct/2016:09:23:41] ENGINE Started monitor thread ‘Autoreloader’.
    [04/Oct/2016:09:23:41] ENGINE Started monitor thread ‘_TimeoutMonitor’.
    [04/Oct/2016:09:23:42] ENGINE Serving on
    [04/Oct/2016:09:23:42] ENGINE Bus STARTED

  • Update: I figured out my issue was related to SSH. I’ve been setting up the MagicMirror entirely through SSH. When starting “sudo python” it was hanging indefinitely at “ENGINE Bus STARTED.” I tried this same thing without SSH and it booted up the fitbit webpage to log in and grant access.

    I’m having another issue now where after granted access I’m getting:

    ERROR: Missing access token parameter.
    Please check that you are using the correct client_secret

    You can close this window

    File “”, line 53, in index
    self.oauth.fetch_access_token(code, self.redirect_uri)

    File “/home/pi/MagicMirror/modules/MMM-fitbit/python/fitbit/”, line 151, in fetch_access_token

    File “/usr/local/lib/python2.7/dist-packages/requests_oauthlib/”, line 244, in fetch_token
    self._client.parse_request_body_response(r.text, scope=self.scope)

    File “/usr/local/lib/python2.7/dist-packages/oauthlib/oauth2/rfc6749/clients/”, line 409, in parse_request_body_response
    self.token = parse_token_response(body, scope=scope)

    File “/usr/local/lib/python2.7/dist-packages/oauthlib/oauth2/rfc6749/”, line 376, in parse_token_response

    File “/usr/local/lib/python2.7/dist-packages/oauthlib/oauth2/rfc6749/”, line 386, in validate_token_parameters
    raise MissingTokenError(description=“Missing access token parameter.”)

  • Final update: I had a single capital letter in my client secret that was causing this issue. I swapped it to lower case and the module is finally working!

  • Glad to read you solved it! 🙂

  • @darrene Funny, but I had to change the config to remove the square brackets and replace them with curly brackets around the config parameters to get the config.js file to be accepted:

        module: 'MMM-fitbit',
        position: 'top_center',
        **config: {**
            credentials: {
                client_id: ,
                client_secret: ,
            resources: [
            update_interval: 60