Read the statement by Michael Teeuw here.
MMM-Fitbit2 Install Process
-
@En-TACT
init.sh
just runsnpm install
(ref), so you can try the various StackOverflow suggestions to see if they help. -
@Vizulize, thank you for that support page! The following commands worked for me to install dependencies:
sudo npm i -g npm-check-updates
sudo npm init
sudo npm install
sudo ./init.shNow, I’m stuck on the authorization step. After entering ./auth.sh, it idles after I enter my client ID and clientSecret -supposed to open a browser and create the python/tokens-.json file.
Would love to have this running, but I think this module needs attention. I’ll reach out again to the author.
-
@En-TACT I am the author. What is your setup? Are you trying to run it headlessly?
-
@En-TACT you should not use sudo except for the first line where you were updating the global NPM version everything else should have been without sudo.
using sudo marks all the files as owned by root not by the user and that causes execution problems, has magic mirror runs under the users permission not root.
-
@Vizulize , I’m on authorization step. After I enter ./auth.sh via terminal, it prompts me for clientID and clientSecret. I can see the alpha-numeric characters I typed for clientID, but not for clientSecret. The cursor just sits there … is this intended? After I press enter, it does not open a browser.
Also, no python/tokens-.json file was creadted. Therefore my Fitbit module is only showing “Loading”.My setup:
- Raspberry Pi 3 B+ v1.2
- USB Keyboard
- Wireless Mouse
- Raspbian Linux 11 (bullseye)
Thanks!
-
@sdetweil, should I repeat those steps again with first line sudo? Or, should I remove MMM-Fitbit module and start anew?
Just to be thorough to repeat the steps, I would run:
sudo npm i -g npm-check-updates
npm init
npm install
./init.sh -
@En-TACT The first step is done No need to fix that.
you should not do the NPM init at all
as it will overwrite the package.json the author providedThe other two steps depend on Python3 and I don’t know if the system you’re using has Python3 installed properly yet. The raspberry pi does not come with python3 installed by default
-
@sdetweil I ran the command, python --version. Returned Python 3.9.2.
Does that suffice, or is there something I can run to check python is properly installed?
-
@En-TACT The script runs python3 not python
-
@sdetweil I got a bit further than before after entering my authorization credentials … the Chrome browser eventually opened, logon Fitbit site, and selected all options. However, after I clicked accept, received this browser error message:
500 Internal Server Error
The server encountered an unexpected condition which prevented it from fulfilling the request.Traceback (most recent call last):
File “/home/pi/.local/lib/python3.9/site-packages/cherrypy/_cprequest.py”, line 638, in respond
self._do_respond(path_info)
File “/home/pi/.local/lib/python3.9/site-packages/cherrypy/_cprequest.py”, line 697, in _do_respond
response.body = self.handler()
File “/home/pi/.local/lib/python3.9/site-packages/cherrypy/lib/encoding.py”, line 223, in call
self.body = self.oldhandler(*args, **kwargs)
File “/home/pi/.local/lib/python3.9/site-packages/cherrypy/_cpdispatch.py”, line 54, in call
return self.callable(*self.args, **self.kwargs)
File “/home/pi/MagicMirror/modules/MMM-Fitbit2/python/setup_access.py”, line 58, in index
self.oauth.fetch_access_token(code, self.redirect_uri)
File “/home/pi/.local/lib/python3.9/site-packages/fitbit/api.py”, line 142, in fetch_access_token
return self.session.fetch_token(
File “/usr/lib/python3/dist-packages/requests_oauthlib/oauth2_session.py”, line 244, in fetch_token
self._client.parse_request_body_response(r.text, scope=self.scope)
File “/usr/lib/python3/dist-packages/oauthlib/oauth2/rfc6749/clients/base.py”, line 421, in parse_request_body_response
self.token = parse_token_response(body, scope=scope)
File “/usr/lib/python3/dist-packages/oauthlib/oauth2/rfc6749/parameters.py”, line 431, in parse_token_response
validate_token_parameters(params)
File “/usr/lib/python3/dist-packages/oauthlib/oauth2/rfc6749/parameters.py”, line 438, in validate_token_parameters
raise_from_error(params.get(‘error’), params)
File “/usr/lib/python3/dist-packages/oauthlib/oauth2/rfc6749/errors.py”, line 405, in raise_from_error
raise cls(**kwargs)
oauthlib.oauth2.rfc6749.errors.InvalidClientError: (invalid_client)