MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.

    Fitbit

    Scheduled Pinned Locked Moved Troubleshooting
    129 Posts 42 Posters 201.0k Views 37 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H Offline
      Hellangel1987 @kckndrgn
      last edited by

      @kckndrgn

      dont know exactly but im also interested in your cronjob solution, can you inform us about your steps ? im tired getting every day that setupaccess working :(

      K 1 Reply Last reply Reply Quote 0
      • K Offline
        kckndrgn @Hellangel1987
        last edited by

        @Hellangel1987 said in Fitbit:

        @kckndrgn

        dont know exactly but im also interested in your cronjob solution, can you inform us about your steps ? im tired getting every day that setupaccess working :(

        I haven’t done it, yet, just thinking about it since it was mentioned. I think I’ve narrowed down the issue though:

        {"message": {"401": {"errors": [{"message": "Access token expired: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI0NU5QMzUiLCJhdWQiOiIyMjdRVjkiLCJpc3MiOiJGaXRiaXQiLCJ0eXAiOiJhY2Nlc3NfdG9rZW4iLCJzY29wZXMiOiJ3aHIgd3BybyB3bnV0IHdzbGUgd3dlaSB3c29jIHdhY3Qgd3NldCB3bG9jIiwiZXhwIjoxNDcxNzAxNjYzLCJpYXQiOjE0NzE2NzI4NjN9.VvLWtyYYvVShgrWC4UOVMXfdv0uiy7Nic-WDj7RMiKA. Visit https://dev.fitbit.com/docs/oauth2 for more information on the Fitbit Web API authorization process.", "errorType": "expired_token"}], "success": false}}, "type": "error"}
        {"message": "Getting a new access token", "type": "status"}
        {"message": "Error getting new access token", "type": "error"}
        {"message": {"400": {"errors": [{"message": "Refresh token invalid: 4292cf037821b9441122e432bdd92a238fac61028dfbd6be982d2e6b73474c32. Visit https://dev.fitbit.com/docs/oauth2 for more information on the Fitbit Web API authorization process.", "errorType": "invalid_grant"}], "success": false}}, "type": "error"}
        

        First got an “expired” token notice, then the process tries to get a new token (possibly using the “refresh” token, I’m not sure at this point). But refresh tokens are valid for one use only, so it’s like the updated token is getting updated in the token.ini file.

        1 Reply Last reply Reply Quote 0
        • P Offline
          plumcraft
          last edited by

          Also interested with the cron mechanism, the module could execute the setupAccess process once a day and trigger a reload on the gui ?

          I’m using vnc to connect remotely on the RPI since i don’t have mouse/keyboards connected.

          1 Reply Last reply Reply Quote 0
          • K Offline
            kckndrgn
            last edited by

            3 days of syncing without an issue. Not sure what changed, I did pull the latest dev code for MM but made no changes to the fitbit module.
            (of course now that I’ve said this, it will error out during the day :) )

            1 Reply Last reply Reply Quote 0
            • K Offline
              kckndrgn
              last edited by

              Had my first issues in a while last night. The problem was that my router lost internet connection and when it was restored the tokens were expired. I ran the setupAccess.py and got new tokens.
              Seems that there should be a better way to reset the module on restart, like if the tokens are expired, the go get new ones.

              1 Reply Last reply Reply Quote 0
              • VendittelliV Offline
                Vendittelli Module Developer
                last edited by

                The python that accesses the fitbit API is currently having that functionality added, I’m doing some work at the moment to help with install issues and once the work on python-fitbit is complete I’ll update again.

                1 Reply Last reply Reply Quote 0
                • C Offline
                  chengstark
                  last edited by paviro

                  results: [{"message":"Writing credentials to credentials.ini","type":"status"},{"message":"Writing id: 227Z5P and secret: 55b8d28e28533664a52c6ec6a25b51f0","type":"status"},{"message":"Credentials write successful","type":"status"}]
                  nop
                  Whoops! There was an uncaught exception...
                  { Error: process exited with code 1
                      at terminateIfNeeded (/home/pi/MagicMirror/modules/node_modules/python-shell/index.js:100:23)
                      at ChildProcess.<anonymous> (/home/pi/MagicMirror/modules/node_modules/python-shell/index.js:88:9)
                      at emitTwo (events.js:106:13)
                      at ChildProcess.emit (events.js:191:7)
                      at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)
                    executable: 'python',
                    options: null,
                    script: 'modules/MMM-fitbit/python/getData.py',
                    args: null,
                    exitCode: 1 }
                  MagicMirror will not quit, but it might be a good idea to check why this happened. Maybe no internet connection?
                  If you think this really is an issue, please open an issue on GitHub: https://github.com/MichMich/MagicMirror/issues
                  

                  i noticed that my mirror stopped getting data updates. it works yesterday but not today, can you help me identify where went wrong?


                  Note from admin: Please use Markdown on code snippets for easier reading!

                  K 1 Reply Last reply Reply Quote 0
                  • K Offline
                    kckndrgn @chengstark
                    last edited by

                    @chengstark,
                    Possibly the internet connection was lost during a refresh, this will cause the tokens to get out of date.
                    I stop MM, re-run the “setupAccess.py” script using credentials from the file, then re-start MM and all is fine, until the next time I have an internet hiccup.

                    C 1 Reply Last reply Reply Quote 0
                    • C Offline
                      chengstark @kckndrgn
                      last edited by

                      @kckndrgn thanks, will try

                      1 Reply Last reply Reply Quote 0
                      • VendittelliV Offline
                        Vendittelli Module Developer
                        last edited by

                        I have released a fix for the .ini files problem in the latest version on GitHub. You’ll need to delete your tokens.ini and credentials.ini files and remake them (as well as performing a git pull) for the fix to be effective.

                        1 Reply Last reply Reply Quote 1
                        • D Offline
                          darrene
                          last edited by

                          For some reason, I’m getting calories displayed, but nothing else. @Vendittelli, does the module have any additional debugging or logging that I can turn on to look through? - I’m not getting any issues in dev mode or in the terminal - it seems that’s the only data I get. When I look in the dev console, I see:

                          writing steps (data/goal): 0/10000
                          Writing floors (data/goal): 0/10
                          writing calories out (data/goal): 1664/2930
                          writing distance (data/goal) 0/5
                          writing activeminutes (data/goal): 0/30
                          writing sleep (data/goal): 0/480

                          When I clear down my tokens.ini and re-run the setupaccess.py, I can see the scope information for the token results includes u’social’, u’settings’, u’profile’, u’sleep’, u’activity’, u’heartrate’, u’weight’, u’nutrition’, u’location’
                          if that’s helpful…
                          As a slight aside: @olliewarren411, would you mind sharing your ‘vertical-layout’ css? I’m still trying to get my head around cascading style sheets!

                          VendittelliV 1 Reply Last reply Reply Quote 0
                          • VendittelliV Offline
                            Vendittelli Module Developer @darrene
                            last edited by

                            @darrene That is weird. The module is pretty unadvanced so I don’t have proper debugging, unfortunately. The scope looks correct, are you sure you have synced your Fitbit today? It would explain why calories are displayed as they are calculated automatically so you don’t need to sync them.

                            D 1 Reply Last reply Reply Quote 0
                            • D Offline
                              darrene @Vendittelli
                              last edited by

                              Thanks for the quick reply @Vendittelli - that could be the answer. I didn’r realise the calories were calculated like that - as you say, it’d certainly explain it.

                              I’ll have a look into it. If it comes to it, I’ll recreate the app - I seem to remember there are a list of tick boxes for the fitibit attributes and on the pi browser, it was really difficult to tell whether or not they were ticked!

                              1 Reply Last reply Reply Quote 0
                              • M Offline
                                moshinh
                                last edited by moshinh

                                I am having the same issue Greppie had at some point.

                                Next thing is, that setupAccess.py doesnt work or I did not understood how it does. The script start a server at port 8080 but if fitbit redirects to it I get an error that the page is not accessible. However I copied the token from url an put it into tokens.ini. There’s only an access token and no refresh token, right?

                                I am having this same problem, I get a 404 error on the attempt to get my tokens. I was able to pull the token from the URL, but have no way to get the refresh. Please help, im so close! Thanks for all of your effort.

                                When I click the autogenerated authorization URL, I am redirected to http://127.0.0.1:8080/ and throw this 404 error.

                                404 Not Found

                                Missing parameters: state

                                Traceback (most recent call last):
                                File “/usr/local/lib/python2.7/dist-packages/cherrypy/_cprequest.py”, line 670, in respond
                                response.body = self.handler()
                                File “/usr/local/lib/python2.7/dist-packages/cherrypy/lib/encoding.py”, line 217, in call
                                self.body = self.oldhandler
                                (*args, **kwargs)
                                File “/usr/local/lib/python2.7/dist-packages/cherrypy/_cpdispatch.py”, line 67, in call
                                raise sys.exc_info()[1]
                                HTTPError: (404, ‘Missing parameters: state’)

                                This is what I see when I run setupAccess.py

                                Is this part normal?

                                CherryPy Checker:
                                The Application mounted at ‘’ has an empty config.

                                Full output:

                                pi@mirror:~/MagicMirror/modules/MMM-fitbit/python $ sudo python setupAccess.py
                                Get credentials from credentials.ini? (Y/N)
                                n
                                Would you like to enter them manually now? (Y/N)
                                y
                                Enter client id:
                                227WT7
                                Enter client secret:
                                9fe3da42b609603a67e7730aad3ca96a
                                [25/Oct/2016:11:20:26] ENGINE Listening for SIGHUP.
                                [25/Oct/2016:11:20:26] ENGINE Listening for SIGTERM.
                                [25/Oct/2016:11:20:26] ENGINE Listening for SIGUSR1.
                                [25/Oct/2016:11:20:26] ENGINE Bus STARTING

                                CherryPy Checker:
                                The Application mounted at ‘’ has an empty config.

                                [25/Oct/2016:11:20:26] ENGINE Started monitor thread ‘Autoreloader’.
                                [25/Oct/2016:11:20:26] ENGINE Started monitor thread ‘_TimeoutMonitor’.
                                [25/Oct/2016:11:20:27] ENGINE Serving on http://127.0.0.1:8080
                                [25/Oct/2016:11:20:27] ENGINE Bus STARTED
                                127.0.0.1 - - [25/Oct/2016:11:20:40] “GET / HTTP/1.1” 404 1206 “” “Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.91 Safari/537.36”

                                T 1 Reply Last reply Reply Quote 0
                                • F Offline
                                  frog
                                  last edited by frog

                                  I have the same issue but I think the problem is earlier in the install

                                  Well I’m having an even earlier problem in installing the dependencies:

                                  pi@Mirror1:~/MagicMirror/modules/MMM-fitbit $ npm install python-shell
                                  

                                  returns:

                                  /home/pi/MagicMirror/modules
                                  └── python-shell@0.4.0 
                                  
                                  npm WARN enoent ENOENT: no such file or directory, open '/home/pi/MagicMirror/modules/package.json'
                                  npm WARN enoent ENOENT: no such file or directory, open '/home/pi/MagicMirror/modules/node_modules/node_helper/package.json'
                                  npm WARN modules No description
                                  npm WARN modules No repository field.
                                  npm WARN modules No README data
                                  npm WARN modules No license field.
                                  

                                  The python-shell is clearly not installing.

                                  A 1 Reply Last reply Reply Quote 0
                                  • T Offline
                                    tismepaulo @moshinh
                                    last edited by

                                    I’m also having the same issues as @moshinh and @frog during installation. Has anyone been able to get this working?

                                    F O 2 Replies Last reply Reply Quote 0
                                    • F Offline
                                      frog @tismepaulo
                                      last edited by frog

                                      @tismepaulo Actually, I got it working by firstly not using ssh and running this directly on the display using a terminal and secondly not using sudo. Populated the tokens.ini with the results from the results of the script - and changed the access of the tokens.ini file to 666 - re-ran again the setupAccess.py and it said all was good.

                                      having said that - while I get the authorisation page from Fitbit, I got zero values on the MM. The fitbit account page says that I have access, but initially no data comes through… Next thing I did was running getData.py (in the python directory) I do get a good response:

                                      {"message": "credentials.ini exists", "type": "status"}
                                      {"message": "Reading from credentials.ini", "type": "status"}
                                      {"message": "Read of credentials.ini successful.", "type": "status"}
                                      {"message": "credentials.ini exists", "type": "status"}
                                      {"message": "Reading from credentials.ini", "type": "status"}
                                      {"message": "Read of credentials.ini successful.", "type": "status"}
                                      {"message": "tokens.ini exists", "type": "status"}
                                      {"message": "Reading from tokens.ini", "type": "status"}
                                      {"message": "Read of tokens.ini successful.", "type": "status"}
                                      {"message": "Making API call", "type": "status"}
                                      {"message": "API call okay", "type": "status"}
                                      {"message": "Tokens valid", "type": "status"}
                                      {"values": {"data": 4684, "goal": 10000}, "resource": "steps", "type": "data"}
                                      {"values": {"data": 0, "goal": 1}, "resource": "floors", "type": "data"}
                                      

                                      So I think it is at least reflecting accurately now what the fitbit site is showing for steps, but is incorrect for distance - still showing 0 (maybe because I’m using KM not miles?)

                                      1 Reply Last reply Reply Quote 0
                                      • R Offline
                                        Rmtcts
                                        last edited by

                                        I’m having a bit of trouble getting this to work with my Magic Mirror. The display is there but it has 0 in all of the categories. I have followed the steps and I get up to running setupAccess.py which takes me to a webpage where I allow access to all of the checkboxes, but it then just redirects to the magic mirror screen with 0s in all of the categories. if I run getData.py it says

                                        {"message": "credentials.ini exists", "type": "status"}
                                        {"message": "Reading from credentials.ini", "type": "status"}
                                        {"message": "Read of credentials.ini successful.", "type": "status"}
                                        {"message": "credentials.ini exists", "type": "status"}
                                        {"message": "Reading from credentials.ini", "type": "status"}
                                        {"message": "Read of credentials.ini successful.", "type": "status"}
                                        {"message": "tokens.ini exists", "type": "status"}
                                        {"message": "Reading from tokens.ini", "type": "status"}
                                        {"message": "Read of tokens.ini successful.", "type": "status"}
                                        {"message": "Making API call", "type": "status"}
                                        {"message": {"401": {"errors": [{"message": "Access token invalid: <your access token>. Visit https://dev.fitbit.com/docs/oauth2 for more information on the Fitbit Web API authorization process.", "errorType": "invalid_token"}], "success": false}}, "type": "error"}
                                        {"message": "Invalid token, reauthorise fitbit API", "type": "status"}
                                        

                                        and the tokens.ini file says:

                                        [Tokens]
                                        acc_tok = <your access token>
                                        ref_tok = <your refresh token>
                                        
                                        1 Reply Last reply Reply Quote 0
                                        • F Offline
                                          frog
                                          last edited by

                                          Well the token.ini file should be altered to include the correct credentials. That’s why you are getting the error. Fix that and you may get somewhat further. I manually entered the info to get mine to (partially) work.

                                          1 Reply Last reply Reply Quote 0
                                          • R Offline
                                            Rmtcts
                                            last edited by

                                            Where could I get the access and refresh tokens from?

                                            1 Reply Last reply Reply Quote 0

                                            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                            With your input, this post could be even better 💗

                                            Register Login
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 5
                                            • 6
                                            • 7
                                            • 3 / 7
                                            • First post
                                              Last post
                                            Enjoying MagicMirror? Please consider a donation!
                                            MagicMirror created by Michael Teeuw.
                                            Forum managed by Sam, technical setup by Karsten.
                                            This forum is using NodeBB as its core | Contributors
                                            Contact | Privacy Policy