0 votes
asked in ESP8266 WiFi Color Kit by (160 points)

Hi,

I'm having trouble getting the Spotify Remote to work. I've followed the guide, and the Spotify unique Client ID and Client Secret are in place at the respective variables in settings.h. BUT, after uploading the sketch, calibrating the touch screen and accessing http://esp8266.local/ the TFT just shows the splash screen and "Please define clientId and clientSecret". But those ARE defined in settings.h, so I'm out of ideas of what to do. The serial monitor shows this:

Body starts now

start document

start document

HREF: 

--------Response Code: 400

--------Free mem: 24672

Requesting URL: GET /v1/me/player/currently-playing HTTP/1.1

Host: api.spotify.com

Authorization: Bearer 

Connection: close

HTTP/1.1 400 Bad Request

HTTP Code: 400

Content-Type: application/json

Content-Type: application/json

WWW-Authenticate: Bearer realm="spotify", error="invalid_request", error_description="Only valid bearer authentication supported"

Access-Control-Allow-Origin: *

Access-Control-Allow-Headers: Accept, Authorization, Origin, Content-Type, Retry-After

Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE, PATCH

Access-Control-Allow-Credentials: true

Access-Control-Max-Age: 604800

Content-Length: 99

Date: Tue, 08 Jan 2019 20:05:04 GMT

Via: 1.1 google

Alt-Svc: clear

Connection: close

So there's obviously an identification problem, but I just can't see what I've done wrong. Any ideas?

Regards,

Thorleif 

commented by (5.3k points)
I don't dare (yet) to post an answer but the key here seems to be the "Authorization: Bearer " in your serial output. Did you notice that the token is missing here? It should be "Authorization: Bearer <some-long-token-string-here>". The proof for that is here: https://github.com/ThingPulse/esp8266-spotify-remote/blob/master/SpotifyClient.cpp#L61. That access token should have been assigned to your app instance during startup in which `SpotifyClient::getToken` is called.

I propose you start from scratch (app pairing etc.), collect the serial console output into a file that you can make available to us somewhere for download. In the Arduino IDE set Tools>Erase Flash to "All Flash Contents" to completely wipe the device file system.
commented by (160 points)
Thanks for your reply. I will give it at try this evening and start all over from scratch, erase all flash contents  and collect the serial console output as suggested!
commented ago by (160 points)
I'm afraid the result was the same. Here's the link to the serial console output, I really appreciate you trying to help! https://www.dropbox.com/s/3kgaiiaqqt9o8wj/Serial_output.txt?dl=0
commented ago by (5.3k points)
I have a smoking gun but I've got no time currently to test/verify. In your output we see that it tries to get a token ('POST /api/token') yet on lines 27/28 we also see that the extracted tokens are empty. That is likely the same issue as here: https://github.com/ThingPulse/esp8266-weather-station/commit/038c4dacd838bf7819706b2b0cc0d5229b3ff475 Arduino changed some low-level networking behavior which required us to update our libraries.

Can you try to change all do-while socket parse loops e.g. https://github.com/ThingPulse/esp8266-spotify-remote/blob/master/SpotifyClient.cpp#L251-L264 so they follow the same pattern as shown in the commit above?

    while(client->connected() || client->available()) {
      while((size = client->available()) > 0) {
commented ago by (160 points)
I'm sorry to tell that I tried this to no avail. But I'm not an experienced C/C++ programmer, so please take that in consideration.

Cheers
commented ago by (5.3k points)
Thanks for trying! I might find some time over the weekend for testing. It's unfamiliar territory for me as well. I didn't write that code and it's been half a year since I lasted tested the whole flow.
commented ago by (160 points)
No problem! Even though I  bought the kit with the Spotify Remote in mind it's no big deal waiting a bit. I'll just use it as a weather station in the meantime :-)

Cheers
commented ago by (5.3k points)
I couldn't reproduce the problem here. The app worked just fine as-is. That doesn't necessarily mean much. It was the same with the issues that were reported against our weather station lib.

However, FWIW I still changed the TCP parse loops as described and pushed the changes to GitHub. It /still/ works ;-). So you might want to give the new version a try.

I doubt it helps much but here's my (redacted) console log: https://pastebin.com/n7qHacK7
commented ago by (160 points)
That's very interesting. If you can't reproduce the problem in your environment then maybe the problem lies in mine? Anyway, first I will try your updated SpotifyClient.cpp, and if the problem persists I'm going to do a clean Arduino installation on an old spare pc and see how that turns out. A shot in the dark, but might be worth while to try.Thank's a lot for your time and help, it's appreciated!

Cheers

2 Answers

0 votes
answered by (9k points)
Hi Thorleif

My first guess would be that your SPIFFS settings are wrong. The spotify client needs to store some credentials in the flash memory. Can you please check what you have set in Arduino IDE > Tools > Flash Size settings? If you have set the right board (Wemos D1 mini pro) then the only option is 16M (15MB SPIFFS). But if you have chosen the generic ESP8266 board instead the default is 512k (no SPIFFS) which would be wrong...

Cheers,
Dani
commented by (160 points)
Hi Dani,

Thanks for the quick reply. Seems like the settings is correct, though. The chosen board is listed as LOLIN(WEMOS) D1 mini Pro, and the only flash option is as you say 16M (15MB SPIFFS).

Cheers,
Thorleif
0 votes
answered by (160 points)

Update: I've just tried to replace the Wemos-board from the kit with another one, in case something could be wrong with the board itself, but the problem still persists sad

Greatful for any ideas of what to try, I'm stuck!

Cheers,

Thorleif

commented by (2.7k points)
Are you really sure the  Spotify unique Client ID and Client Secret elements are correct? The API error suggests there is an error with one of them, or both.
commented by (160 points)
Yes, it seems like those are correct. Just a copy and paste from my Espotifyer app page into
 settings.h. Did even create a new app just in case, but still the same. I've got Spotify Premium for Family, but I guess there's no reason to believe that there is some sort of restriction on this account type?

Welcome to ThingPulse Q&A, where you can ask questions and receive answers from other members of the community.

https://thingpulse.com

...