Read the statement by Michael Teeuw here.
Fitbit
-
@daniel44992 I too am having this exact issue. Did you ever find a solution?
-
@Oliver_Tooth I was able to successfully install the Fitbit module and get it to pull information from the web API. It took a little tweaking, but I did get it to work.
Problems I encountered:
- Python was not installed. I had to install it and figure out how to install “pip”.
- Fitbit doesn’t make their developer area visible off their main website. I ended up bouncing through their forums first.
- Example config file on the module GitHub page contains errors. The character after
config:
should be{
, not[
. - The secret key and appID field values need to be surrounded by single quotes, something not explained in the readme file.
Here’s the relevant portion of my config.sys file.
{ module: 'MMM-fitbit', position: 'bottom_left', config: { credentials: { client_id: '000XX0', client_secret: 'abbacadabba1234567890', }, resources: [ 'steps', 'floors', 'caloriesOut', 'distance', 'activeMinutes', 'sleep', 'heart' ], update_interval: 60 } },
When you run
npm start
the MMM-Fitbit python script will run and kick out a few lines in the console. I’m not entirely sure what it’s doing, but here’s what mine reads:Set credential request recieved. { client_id: '000XX0', client_secret: 'abbacadabba1234567890' } Initial run request recieved. Running getData.py results: [{"message":"credentials.ini exists","type":"status"},{"message":"Writing credentials to credentials.ini","type":"status"},{"message":"Writing id: 000XX0 and secret: abbacadabba1234567890","type":"status"},{"message":"Credentials write successful","type":"status"}]
When I ran the
setupAccess.py
script, it failed to modify thecredentials.ini
file. I ended up editing it manually and plugging in my application ID and my secret key. The format is simple. Spaces before & after the=
and no quotes around the ID or key. -
@bhepler Please, if you spot any problems with the documentation, create a pull request on GitHub and I’ll happily make those changes.
-
@bhepler That’s great news! I’ve managed to get mine up and working, but from what I can tell initially, it doesn’t seem to stay authorised for longer than a day, i’m currently browsing the python-fitbit forum for help on that. It’s also only showing data for steps, with all other fields showing 0. Is this something you’ve encountered?
-
@Oliver_Tooth Somewhat. I see steps, distance and calories. Sleep is zero. There’s definitely something going on here. I haven’t run it long enough to encounter the authorization problem. I’ll investigate further tonight.
@Vendittelli - I’ll do that. I should have a PR for you in a couple days. Thanks for the great module!
-
Hello, thank you for that nice addon…i finally managed to make it work (exemple code is still incorrect on github…) but there is a problem, im using an alta hr and i only have the “steps” info on display, everything else is set to 0 :/
Any idea how i can fix that ? -
The Modul wont work on my Mirror too.
First:
In the moment i haven`t any Fitbit Hardware. I use the Fitbit -App on my WindowsPhone. I can see in the App all useful things like step etc. and the data will sync with the Fitbit webservce.
I can see all activitys an the Mirror with a Zero …When i stop the mirror with
pm2 stop mm and try to start the python script setupAccess.py from the local terminal so i can see this://your code here sudo python setupAccess.py Get credentials from credentials.ini ? (Y/N) y {"message": "credentials.ini exists", "type": "status"} {"message": "Reading from crentials.ini", "type": "status"} {"message": "Read of credentials.ini successful.", "type": "status"} [19/Sep/2017:19:30:03] ENGINE Listening for SIGHUP. [19/Sep/2017:19:30:03] ENGINE Listening for SIGTERM. [19/Sep/2017:19:30:03] ENGINE Listening for SIGUSR1. [19/Sep/2017:19:30:03] ENGINE Bus STARTING CherryPY Checker: The Application mounted at '' has an empty config. [19/Sep/2017:19:30:03] ENGINE Started monitor thread 'Autoreloader'. [19/Sep/2017:19:30:03] ENGINE Started monitor thread '_TimeoutMonitor'. [19/Sep/2017:19:30:03] ENGINE Serving on http://127.0.0.1:8080 [19/Sep/2017:19:30:03] ENGINE Bus STARTED
and not more - and no prompt …
when i now from a second terminal the mirror restart with pm2 restart mm
i see on the mirror only://your code here ```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`) CherryPy 3.8.2
Can anyone help me to fix the problem ?
Greetz Sandy2503
-
@s199 I also have this problem, only Steps is coming through. Did you manage to get it fixed?
-
This is my output of getData.py
pi@Magic-Mirror:~/MagicMirror/modules/MMM-fitbit/python $ sudo python getData.py {"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": 1649, "goal": 10000}, "resource": "steps", "type": "data"} {"values": {"data": 0, "goal": 1}, "resource": "floors", "type": "data"} pi@Magic-Mirror:~/MagicMirror/modules/MMM-fitbit/python $
-
For a little ways now, I’ve been running into an issue where, after running for a day or so, the module stops being able to update. It seems that it’s failing --for some odd reason-- to write the new Refresh Token, so when the Access token is expired, it needs to be re-authorized. I’ve looked through the code and I don’t know a whole lot but I cannot figure out why it’s doing what it’s doing. For now, I have this shell script set to run every night, and that seems to keep it running well enough. I’m sure there’s a better way but until I can get around to learning more, the kludgy way will do.
#!/bin/bash export DISPLAY=:0 pm2 stop MagicMirror python ~/MagicMirror/modules/MMM-fitbit/python/setupAccess.py killall chromium-browser pm2 start MagicMirror exit 0
The first line is there so that it can be run manually over SSH. I did have to log in manually once, but I just told chromium to remember me, so now I don’t have to do anything to re-grant access.
If anyone has a better fix, I’d love to hear your thoughts!