Read the statement by Michael Teeuw here.
MMM-Fitbit2
-
Hi, updated MM and now Google-Fit can no longer be installed, so I gave MMM-Fitbit2 a go.
Thanks @Vizulize for your work, I’d really like to get it running.
I have the same error that is reported in the github:npm ERR! must provide string spec
To reproduce, just try to install it on an updated MM system.
It happens when calling ./init.sh as per your instructions on githubHave you/has anybody figured out a way to initialize the module?
Thanks
Markus -
@Meidlmarkus said in MMM-Fitbit2:
MMM-Fitbit2
remove these lines from package.json
"//": [ "Requires this version to work", "https://github.com/SVendittelli/MMM-fitbit/issues/23#issuecomment-464319931" ]
-
Thanks, Sam!
Had it googled in the meantime, had renamed the package-lock.json und run npm init
It braught no further error, I called auth.sh and that’s where I’m stuck now.
After entering the credentials, no browser dialog opens and I’m not quite sure where to search it.
Am logged in over ssh and in addition have a browser open to :8080
Neither on the mirror, nor on the pc, there is any dialog appearing.I guess I’ll start from scratch, remove the module folder, clone new from git, and try your suggested method with the original package.json?
Thanks again
Markus -
@Meidlmarkus yeh, can’t help on the auth part
-
@sdetweil yeah, so I renamed MMM-Fitbit2, cloned fresh.
In the package.json there is no such a line that you mentioned (I guess @Vizulize must have fixed it already)
Did npm init, then ./init seemingly went through.
With ./auth.sh same thing as before - no dialog showing up.I hope @Vizulize sees it and helps out :-)
Thanks
Markus -
@Meidlmarkus I just checked again
https://github.com/m-roberts/MMM-Fitbit2still has those lines
don’t see another author choice in google search
-
Yes, right.
Must have looked into the package.json after doing the npm init - my bad. Did another git clone and it is as you said.Meanwhile it turned out I had pip not installed. After installing pip and running ./init.sh again (after npm init) libraries were installed, and also auth.sh was able to start (only saw it when I called the python script directly rather than from auth.sh)
So auth.sh was now able to “Open a Web browser” (at least according to its logs), I just don’t see any dialog.
Anyway, will now try init with the modified package.json and see if it makes a difference - will report back.
Thanks so far
Markus -
So, quick update:
I tried inist.sh with the modified package.json
The result was just the same - I don’t see any input dialog open.I believe the module is installed properly and the dependencies are ok.
Thanks
Markus -
@Meidlmarkus It’s been a while since I worked on this. From memory, doing this over SSH has extra complexity (probably to do with the
DISPLAY
environment variable). Honestly, I’ve wanted to rework this to be headless for a while but haven’t had the capacity to do so.My advice would be to try and run it locally if possible.
Also if anyone can verify that the modification to
package.json
is a fix, then I will merge this in: https://github.com/m-roberts/MMM-Fitbit2/pull/10/files -
@Vizulize thanks a lot!
In the meantime I came a little further.So about the package.json: Yes, can confirm, @sdetweil 's solution works perfectly.
I did go the other route: after the git clone, I did an npm init, this resolved the prob in the package.json and package-lock.json - this worked, too.
My next problem was when calling the init.sh, I found out I had no pip installed, so the required libraries could not be installed.
So I installed pip, then init.sh ran fine and installed what was required.I also came to the conclusion that the oauth authentification would probably work better locally rather than over ssh.
So I ran auth.sh, was told that server was now listening on http://127.0.01/8888 - which was also what I entered when registering the app at fitbit. Looked good so far.No browser was opened though. So restarted MM with an invalid config.js, hooked up a keyboard/mouse on the mirror-raspberry locally and opened electron from a local terminal like so:
/home/pi/MagicMirror/node_modules/electron/dist/electron http://localhost:8888
That’s when the serverside reported127.0.0.1 - - [04/Dec/2023:20:19:56] "GET / HTTP/1.1" 404 2019 "" "Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.5845.228 Electron/26.6.2 Safari/537.36"
So, 404.
On the electron window, this was shown:Traceback (most recent call last): File "C:\ProgramData\Anaconda3\lib\site-packages\cherrypy\_cpdispatch.py", line 54, in __call__ return self.callable(*self.args, **self.kwargs) TypeError: index() missing 1 required positional argument: 'state' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\ProgramData\Anaconda3\lib\site-packages\cherrypy\_cprequest.py", line 628, in respond self._do_respond(path_info) File "C:\ProgramData\Anaconda3\lib\site-packages\cherrypy\_cprequest.py", line 687, in _do_respond response.body = self.handler() File "C:\ProgramData\Anaconda3\lib\site-packages\cherrypy\lib\encoding.py", line 219, in __call__ self.body = self.oldhandler(*args, **kwargs) File "C:\ProgramData\Anaconda3\lib\site-packages\cherrypy\_cpdispatch.py", line 60, in __call__ raise sys.exc_info()[1] File "C:\ProgramData\Anaconda3\lib\site-packages\cherrypy\_cpdispatch.py", line 58, in __call__ test_callable_spec(self.callable, self.args, self.kwargs) File "C:\ProgramData\Anaconda3\lib\site-packages\cherrypy\_cpdispatch.py", line 157, in test_callable_spec raise cherrypy.HTTPError(404, message=message) cherrypy._cperror.HTTPError: (404, 'Missing parameters: state')
Pls note: this is not exactly my error, looks like this is coming from a windows machine:
This came up as the first result when entering “missing parameters state” in the google search. But it is close enough to my error (just replace C:\ProgramData… with home/pi/.local/lib/python3.7… - I could not be bothered to type it all off of my mirror :-D )
There was no solution given, though, so that is where I am stuck now…Thanks again for your help,
Markus