ThingPulse Tasks ESP8266 for Spotify Remote Control
Marcel Stor and Daniel Eichhorn from Zurich-based ThingPulse, known for their open source IoT hardware and software kits, have designed a…
Marcel Stor and Daniel Eichhorn from Zurich-based ThingPulse, known for their open source IoT hardware and software kits, have designed a Spotify Remote around an ESP8266 Wi-Fi board and the company’s Color Display Kit, which features a 2.4-inch ILI9341 full-color touchscreen. When attached to a Spotify account, the Remote will display the album cover of the song playing, and allows you to pause, play, and skip tracks using the onscreen controls, similar to using a mobile device or web player.
The Spotify Remote is a simple build (although it does require some soldering), beyond the ESP8266 and touchscreen, it uses a Wemos D1 Mini Pro with an external antenna connector and a custom PCB connector for joining the microcontroller to the display.
What wasn’t so simple, was getting the Remote to function correctly with Spotify as the company’s SDKs work well with Android and iOS, but not so much for embedded systems. The same for Spotify’s Web API, which was designed for full-featured web browsers, rather than running on hardware. Then there’s the whole authentication aspect when trying to connect to Spotify to interact with third-party applications, which relies on per-user tokens for security over user names and passwords.
To get around those issues, the team at ThingPulse used the OAuth protocol standard, which lets users grant access to websites and applications from other sites without the need for passwords, in other words, it enables an end user’s account information to be used on third-party services.
They also tasked the mDNS protocol to get user’s web browsers to redirect to a local ESP server without having to lookup an IP beforehand. The write up for exactly how ThingPulse is pretty extensive, but the walkthrough is thorough, and they have uploaded the build process, BOM and code on their GitHub page for those interested.