Was ich an Spotify wirklich schätze ist, die gute Vernetzbarkeit. Man kann Musik oder Podcast, mit nur wenigen Klicks auf einem anderen gerät abspielen oder Steuern.
Dank der kostenlosen Möglichkeit einen Developer Zugang einzurichten, kann man auf viele dieser Funktionen auch aus NodeRed zugreifen. So kann man sich mit ein paar klug verknüpften Nodes ganz leicht eine eigene „Spotify-Fernbedienung“ für (zum Beispiel) das Dashboard erstellen.
Dabei sind die Steuerungsmöglichkeiten natürlich nicht auf das Dashboard begrenzt. Man könnte die Steuerungsmöglichkeit zum Beispiel auch über angebundene Taster oder andere Möglichkeiten auslösen. 🙂
Einen ersten Ansatz dazu findet Ihr im nachfolgenden Artikel.
Voraussetzungen
Hilfreiche Artikel:
Damit Ihr neue Nodes installieren könnt sollte NodeRed natürlich schon installiert sein.
Wie ihr einen RaspberryPi dazu vorbereitet und dann NodeRed darauf installiert ist in den folgenden Artikeln beschrieben.
Die folgenden drei Artikel beschreiben was zu tun ist um den RaspberryPi soweit vorzubereiten:
- RaspberryPi – Einrichten für Nerdiys!
- RaspberryPi – Die Erste Konfiguration!
- RaspberryPi – Den RaspberryPi über SSH steuern
- NodeRed – Installation von NodeRed auf dem RaspberryPi
Benötigtes Werkzeug:
-keins-
Benötigtes Material:
In der folgenden Liste findet Ihr alle Teile die Ihr zur Umsetzung dieses Artikels benötigt.
In die NodeRed Konfigurationsoberfläche einloggen
Bevor Ihr eure NodeRed Konfiguration bearbeiten könnt müsst Ihr Euch - falls aktiviert - zunächst in die NodeRed Konfigurationsoberfläche einloggen.
Danksagung
Zu allererst danke an gelo2002 für seinen Flow. Der unten angebotene NodeCode basiert auf seinem kostenlos geteilten Code. Ich habe lediglich noch ein paar (meiner Meinung nach nützliche) Erweiterungen hinzugefügt. Die Hauptarbeite hat aber gelo2002 geleistet. 🙂
Infos zu seinem Flow findet Ihr hier:
https://gist.github.com/gelo2002/1727790dfc3f6bac8c5b39f5a952b804
oder hier
https://flows.nodered.org/flow/1727790dfc3f6bac8c5b39f5a952b804
Spotify Devloper account aktivieren
Damit Ihr die verschiedenen Funktionen Eures Spotify Accounts steuern könnt, müsst Ihr zunächst einen Developer Account für Euer Spotify Konto einrichten. Dies kostet nichts und ist mit ein paar Klicks erledigt. 🙂
Wechselt dazu auf auf die Startseite Eures Spotify Developer Portals. Dies erreicht IHr unter folgendem Link:
Nach dem einloggen mit Euren Accountdaten müsst Ihr zunächst die „Bedingungen“ akzeptieren bzw. bestätigen.
Klickt danach auf „Create App“…
…und tragt dafür einen Namen und passende Beschreibung ein. Beides könnt Ihr beliebig wählen, sollte aber natürlich einigermaßen Aussagekräftig sein. 🙂
Danach werdet Ihr auf die Übersicht dieser „App“ (So nennt Spotify die eingerichteten Developer Zugänge) weitergeleitet. Dort findet Ihr auf der linken Seite bereits die „ClientID“ und das „ClientSecret“. Beides benötigt Ihr später als notiert Sie Euch schonmal.
Nachdem Ihr in der Übersicht auf „Edit Settings“ geklickt habt, werdet Ihr auf die dargestellte Ansicht geleitet. Dort müsst Ihr nun die passende „Redirect Uri“ eintragen. Diese Redirect Uri hängt von der Adresse Eures NodeRed-Servers ab.
Ist dieser zum Beispiel unter der Adresse https:// server.fritz.box erreichbar würde die Redirect-Uri folgendermaßen lauten:
https:// server.fritz.box:1880/spotify-credentials/auth/callback
Achtet darauf, dass Ihr das richtige Protokoll (also http oder https) auswählt.
Habt Ihr den korrekten Link eingetragen, müsst Ihr nur noch auf „Add“ und (weiter unten) auf „Save“ klicken.
NodeCode einfügen
Nun zum eigentlichen NodeCode. Dieser beinhaltet in der unten stehenden Form die Steuerung der einfachsten Funktionen. Ihr könnt also die Wiedergabe pausieren und fortsetzen, den nächsten oder vorherigen Titel anwählen, im Lied „scrollen“ und bekommt auch das Album-Cover angezeigt.
Den NodeCode findet Ihr wie immer im folgenden Teil und auch im Nerdiy-Git-Repository unter:
Account Zugangsdaten in NodeRed eintragen
Nachdem Ihr einen Developer Zugang zu Eurem Spotify erstellt und den NodeCode eingefügt habt, könnt Ihr nun zu Eurer NodeRed Konfiguration wechseln. Klickt dort auf eine der Spotify-Nodes und beginnt dort damit einen neuen Zugang zu konfigurieren.
Nun müsst Ihr im Textfeld neben „ClientID“ Eure ClientID und im Textfeld neben „Client secret“ Euer Client secret eintragen.
Beides findet Ihr in dem Schritt zuvor in Eurem Spotify Developer Zugang.
Als nächstes müsst Ihr die gewünschten „Scopes“ eintragen. Scopes stehen für die Services, welche Ihr aus NodeRed steuern wollt.
Für diesen Flow hier könnt Ihr die folgenden Scopes eintragen:
streaming user-follow-modify user-read-currently-playing user-modify-playback-state
Eine komplette Liste findet Ihr unter: https://developer.spotify.com/documentation/general/guides/authorization/scopes/
Sobald Ihr die Scopes eingetragen habt, müsst Uhr nun nur noch auf „Start Authentication“ klicken.
Dadurch öffnet sich ein neues Fenster, indem Ihr nun bestätigen müsst, dass Ihr Eurem NodeRed den Zugang zu Eurem Spotify Account gestattet.
Falls Ihr an dieser Stelle eine Fehlermeldung erhaltet, könnt Ihr eine Lösung im Absatz „Lösung für Fehler „INVALID_CLIENT: Invalid redirect URI“ finden. 🙂
Nachdem Ihr dies bestätigt habt, werdet Ihr auf eine Webseite weitergeleitet, auf der lediglich die kurze Meldung „spotify: authorized“ angezeigt.
Lösung für Fehler „INVALID_CLIENT: Invalid redirect URI“
Die Lösung zu der Fehlermledung: INVALID_CLIENT: Invalid redirect URI habe ich hier gefunden: https://github.com/pckhib/node-red-contrib-spotify/issues/16
Im Prinzip wird der Fehler dadurch hervorgerufen, dass die zuvor im Developer Account die „Redirect URI“ nicht korrekt konfiguriert wurde. Um die korrekte Redirect URI zu erhalten, könnt Ihr den folgenden Trick nutzen.
Tragt Eure URI in den URL Decoder (https://www.urldecoder.org/) ein und lasst diese Decodieren.
Der markierte Teil im unteren Feld entspricht dann der Redirect URI, welche Ihr in Eurem Spotify Account angeben müsst.
Die Spotify Wiedergabe springt oder stockt manchmal
Ab und zu kommt es bei mir vor, dass die Wiedergabe auf einem meiner Geräte (egal welches) springt bzw. stockt. Durch ausprobieren habe ich herausgefunden, dass dies mit der Verknüpfung des Spotify Accounts mit externen Diensten (zum Beispiel dem hier vorgestellten NodeCode) zusammenhängen zu scheint.
Im Nachhinein erkläre ich mir das so: Dadurch das Spotify die Wiedergabe-Daten auf allen angeschlossenen Teilnehmern synchron halten will, kann ich mir vorstellen, dass ein Teilnehmer der zu langsam antwortet diese Synchronisation aus dem Takt bringen könnte.
Lange Rede Kurzer Sinn: Wenn Ihr diesen Fehler auch beobachtet: Bei mir hat es geholfen den Computer auf dem NodeRed läuft neu zu starten oder im „Worst case“ die Verknüpfung mit dem Spotify Account wieder aufzuheben.
Viel Spaß mit dem Projekt
Ich hoffe bei euch hat alles wie beschrieben funktioniert. Falls nicht oder ihr Fragen oder Anregungen habt lasst es mich in den Kommentaren bitte wissen. Ich trage dies dann ggf. in den Artikel nach.
Auch Ideen für neue Projekte sind immer gerne willkommen. 🙂
P.S. Viele dieser Projekte - besonders die Hardwareprojekte - kosten viel Zeit und Geld. Natürlich mache ich das weil ich Spaß daran habe, aber wenn Du es cool findest, dass ich die Infos dazu mit Euch teile, würde ich mich über eine kleine Spende an die Kaffeekasse freuen. 🙂
Hast du Playback Transfer auf ein anderes Gerät zum Laufen bekommen? In der vorletzten Version schickte man da einfach ganz stupide die Geräte ID samt Play Befehl auf die TransferMyPlayback API – nun tut sich da nix mehr.
Moin Steven,
habe ich tatsächlich noch nicht ausprobiert. Hast du mal die API von Spotify gecheckt ob es da Infos zu gibt?
Beste Grüße
Fabian
Hi Fab,
I was wondering how you select a playlist or song to begin with? I am a bit confused about this. It seems like you have somehow already configured the spotify node to get a playlist/song.
Hi Asad,
currently I use this only to display information of the current playing song. Selecting the song and co is done via the smartphone/desktop app of spotify. Nevertheless it is also possible to do this via the spotify node. 🙂
Best regards
Fab
Thank you for your response. I’m a bit confused as to how you would enable that. There doesn’t seem to be a specific way to do this. Do you have a tutorial that selects the song via the spotify node?
Thanks,
Asad
Hi Asad,
unfortunately not (yet). But I will put it on my list and will try to prepare something like this soon. 🙂
Best regards
Fab
Thanks for letting me know.