Inhaltsverzeichnis:

Sonos Spotify Vinyl-Emulator - Gunook
Sonos Spotify Vinyl-Emulator - Gunook

Video: Sonos Spotify Vinyl-Emulator - Gunook

Video: Sonos Spotify Vinyl-Emulator - Gunook
Video: Vinyl Emulator demo (SOUND ON!) 2024, Juli
Anonim
Image
Image
Sonos Spotify Vinyl-Emulator
Sonos Spotify Vinyl-Emulator

Bitte beachten Sie, dass dies nicht die neueste Anleitung für dieses Projekt ist:

Bitte besuchen Sie https://www.hackster.io/mark-hank/sonos-spotify-vinyl-emulator-3be63d für die neuesten Anweisungen und Unterstützung

Musik auf Vinyl zu hören ist großartig. Es ist physisch und taktil. Du hörst ein ganzes Album und keine zufälligen Tracks. Du merkst, wenn es vorbei ist und wählst bewusst etwas anderes. Sie können eine Sammlung erstellen und durchsuchen, anstatt genau nach dem Gewünschten suchen zu müssen.

Es ist auch teuer und sperrig, besonders wenn Sie bedenken, dass jedes Geld, das Sie für Vinyl ausgeben, sehr wahrscheinlich ein Duplikat von Musik ist, auf die Sie bereits über einen von Ihnen abonnierten Streaming-Dienst zugreifen können.

Dieses Projekt versucht, die taktilen und sammlungsbildenden Aspekte von Vinyl zu replizieren und sich dabei auf Spotify zu verlassen, um die Musik tatsächlich zu liefern. Wenn Sie ein physisches Objekt auf einem NFC-Lesegerät platzieren, das an einen Raspberry Pi angeschlossen ist (beide können versteckt werden), wird das mit diesem Tag verknüpfte Album abgespielt.

Ich werde Sie durch alle Schritte führen - vom Einrichten des Raspberry Pi bis zum Codieren der NFC-Tags. Dies ist mein allererstes Raspberry Pi-Projekt und mein erster Python-Code, also habe ich mir beides bei der Entwicklung selbst beigebracht. Daher gehen diese Anweisungen buchstäblich von null Vorkenntnissen aus und führen Sie durch jeden Schritt.

Die Gesamtkosten für die wesentlichen Komponenten, um dies zu bauen, betragen ungefähr 50-60 £.

Ich würde gerne sehen, was du baust!

Schritt 1: Benötigtes Zubehör 1: Raspberry Pi

Das Backend, das mit Ihrem Netzwerk, Sonos und Spotify verbunden ist, wird von einem Raspberry Pi betrieben. Es gibt eigentlich sehr wenig, was Sie brauchen, um das in Gang zu bringen.

Notwendig:

Raspberry Pi: Ich habe ein Raspberry Pi 3 Model B+ verwendet, aber es funktioniert auch mit einem Raspberry Pi 3 Model A+ (£ 23)

USB-Netzteil: Ich hatte eins herumliegen - es ist ein offizielles verfügbar, wenn Sie dies nicht tun (9 £)

Micro-SD-Karte: Ich habe eine 32-GB-Karte, die für diese Anwendung ausreichend ist, bei Amazon (6 £)

Einige Sonos-Geräte, die in Ihrem Netzwerk ausgeführt werden (ich vermute, Sie haben dies bereits, wenn Sie hier sind …)

Ein Spotify Premium-Konto

Empfohlen:

Ein Fall für den Pi: Es gibt viele Optionen, beginnend bei 5 £

Eine Flasche anständigen California Zinfandel: Ich empfehle Ridge, aber andere sind verfügbar

Schritt 2: Benötigtes Zubehör 2: NFC-Reader

Erforderliches Zubehör 2: NFC-Reader
Erforderliches Zubehör 2: NFC-Reader
Erforderliches Zubehör 2: NFC-Reader
Erforderliches Zubehör 2: NFC-Reader

Diese Anleitung wurde für einen ACR122U NFC-Leser erstellt, der über USB angeschlossen wird.

ACR122U

Ich habe dieses von Amazon für 38 £ gekauft (hauptsächlich, weil es eine erstklassige Lieferung hatte), aber es gibt billigere Optionen, um denselben Leser zu kaufen.

Verwirrenderweise scheint der ACR122U unter einer Reihe verschiedener Markennamen verkauft zu werden (meiner kam unter dem alles andere als beruhigenden Markennamen "Yosoo"), aber soweit ich das beurteilen kann, sind sie alle gleich und von American Card Systems gebaut.

Das billigste, das ich gefunden habe, ist der beworbene ACR122U für 21 £ einschließlich Versand, aber das kommt direkt aus China, sodass Sie möglicherweise etwas warten müssen.

Andere Optionen

Dieses Projekt basiert auf einer Python-Bibliothek namens nfcpy, die hier eine Liste der unterstützten Geräte verwaltet:

Theoretisch sollte dieses Projekt mit allen auf dieser Liste mit geringer Integration funktionieren.

Eine verlockende Option ist die Adafruit PN532, eine Platine, die mit Überbrückungskabeln direkt an Ihren Raspberry Pi angeschlossen werden sollte. Ich habe es ausprobiert und fand es ein echter Hingucker. Es erfordert zum Beispiel Löten.

Ein Vorteil davon ist oberflächlich gesehen, dass es kleiner ist, aber in Wirklichkeit hat das Board ungefähr die gleiche Größe wie das Innere des ACR122U. Wenn Sie wirklich Platz für Ihre Anwendung benötigen, können Sie den Kunststoff vom ACR122U entfernen und einfach die Platine verwenden.

Schritt 3: Benötigtes Zubehör 3: NFC-Tags

Benötigtes Zubehör 3: NFC-Tags
Benötigtes Zubehör 3: NFC-Tags

Für jedes Album, das Sie erstellen möchten, benötigen Sie ein NFC-Tag, das dem NTAG213-Standard entspricht.

Es gibt viele Orte, um diese zu kaufen.

Ich habe meine erste Charge bei Amazon gekauft, wo ich eine 10er-Packung für 9 £ (inklusive Prime-Lieferung) bekommen habe.

Das beste Angebot, das ich hier in Großbritannien gefunden habe, ist Seritag - sie haben eine wirklich große Auswahl an verschiedenen Stilen, tolle Ratschläge auf ihrer Website, Sie wissen genau, was Sie bekommen (bei Amazon nicht immer zutreffend). Sie haben keine Mindestbestellmenge und eine Menge Optionen. Tags beginnen bei 27p pro Tag

Schritt 4: Laden Sie das Raspberry Pi OS auf eine SD-Karte herunter

Laden Sie das Raspberry Pi OS auf eine SD-Karte herunter
Laden Sie das Raspberry Pi OS auf eine SD-Karte herunter
Laden Sie das Raspberry Pi OS auf eine SD-Karte herunter
Laden Sie das Raspberry Pi OS auf eine SD-Karte herunter

Laden Sie auf Ihrem PC oder Mac die Raspberry PI-Imager-Anwendung herunter und führen Sie sie aus.

Legen Sie die SD-Karte ein, auf der Sie das Raspberry Pi-Betriebssystem installieren möchten.

Klicken Sie auf OS AUSWÄHLEN und wählen Sie das Standard-Rasbian aus.

Klicken Sie auf SD-KARTE AUSWÄHLEN und wählen Sie die eingesteckte SD-Karte aus.

Klicken Sie auf SCHREIBEN. Das kann eine Weile dauern.

Sobald dies erledigt ist, werden Sie aufgefordert, die SD-Karte zu entfernen, was Sie tun sollten. Aber dann schließen Sie es wieder an, da Sie zuerst ein paar Dinge im Haushalt erledigen müssen.

Schritt 5: Aktivieren Sie SSH auf Ihrem Raspberry Pi OS Image

Aktivieren Sie SSH auf Ihrem Raspberry Pi OS-Image
Aktivieren Sie SSH auf Ihrem Raspberry Pi OS-Image

Nachdem das Betriebssystem auf die SD-Karte geschrieben wurde, müssen Sie einige zusätzliche Aufgaben ausführen.

Wir möchten auf den Raspberry Pi zugreifen, ohne eine Tastatur oder einen Monitor anzuschließen (auch bekannt als "headless"), was wir über unser lokales Netzwerk mit unserem PC oder Mac über ein Protokoll namens SSH tun können. Aus Sicherheitsgründen ist SSH jedoch standardmäßig deaktiviert. Wir müssen es aktivieren.

Wir können dies tun, indem wir eine leere Datei namens:

ssh

auf der gerade erstellten SD-Karte. Es ist wichtig, dass dies keine Erweiterung hat (zB.txt). Die Datei selbst muss keinen Inhalt enthalten - nur ihre Existenz aktiviert SSH, wenn der Pi hochfährt.

Schritt 6: Optional: WLAN auf Ihrem Raspberry Pi einrichten

Optional: WLAN auf Ihrem Raspberry Pi einrichten
Optional: WLAN auf Ihrem Raspberry Pi einrichten
Optional: WLAN auf Ihrem Raspberry Pi einrichten
Optional: WLAN auf Ihrem Raspberry Pi einrichten

Sie können diesen Schritt überspringen, wenn Sie Ihren Raspberry Pi über Ethernet mit Ihrem Router verbinden möchten. (Obwohl Sie diese Entscheidung vielleicht gut überdenken sollten - wenn Sie es über WLAN laufen lassen, wird das Leben in Bezug auf die Positionierung viel einfacher.)

Erstellen Sie im Stammverzeichnis der SD-Karte eine Nur-Text-Datei namens wpa_supplicant.conf.

Fügen Sie den folgenden Text in die Datei ein:

Land=gb

update_config=1 ctrl_interface=/var/run/wpa_supplicant network={ scan_ssid=1 ssid="MyNetworkSSID" psk="MyPassword" }

Ändern Sie das Land entsprechend (GB ist Großbritannien, US sind die USA, DE ist Deutschland usw.)

Ändern Sie die WLAN-Anmeldeinformationen dort, um Ihre tatsächlichen WLAN-Router-Details zu sein.

Speicher die Datei.

Werfen Sie die SD-Karte sicher aus.

Schritt 7: Schalten Sie Ihren Raspberry Pi ein

Schalten Sie Ihren Raspberry Pi ein
Schalten Sie Ihren Raspberry Pi ein

Legen Sie die soeben erstellte SD-Karte in Ihren Raspberry Pi ein.

Schließen Sie Ihren Raspberry Pi über das USB-Kabel an die Stromversorgung an. Warten Sie eine Minute, bis es hochgefahren ist.

Schritt 8: Finden Sie die IP-Adresse Ihres Raspberry Pi

Sie müssen nun die IP-Adresse des Raspberry Pi herausfinden, damit Sie sich damit verbinden können. Sie können dies auf zwei Arten tun:

  • über Ihre Router-Setup-Seite - wenn Sie einen modernen Router wie eero haben, ist dies super einfach;
  • oder über eine für iOS und Android erhältliche Smartphone-App namens "fing" - laden Sie sie herunter, verbinden Sie sich mit Ihrem Router und scannen Sie nach Geräten - eines davon sollte "Raspberry" heißen - dies ist die IP-Adresse, die Sie benötigen.

Schritt 9: Verbinden Sie sich mit Ihrer Raspberry Pi-Befehlszeile

Verbinden Sie sich mit Ihrer Raspberry Pi-Befehlszeile
Verbinden Sie sich mit Ihrer Raspberry Pi-Befehlszeile

Öffnen Sie Terminal auf Ihrem Mac (oder wenn Sie Windows verwenden, laden Sie Putty herunter und verwenden Sie es).

Geben Sie den folgenden Befehl ein:

ssh pi@[IP-Adresse deines Pis]

Akzeptieren Sie alle Sicherheitswarnungen, die Sie erhalten. Sie werden nach dem Passwort für den Standard-Pi-Benutzer gefragt, der ist

Himbeere

Schritt 10: Einrichten der Raspberry Pi OS GUI

Einrichten der Raspberry Pi OS-GUI
Einrichten der Raspberry Pi OS-GUI
Einrichten der Raspberry Pi OS-GUI
Einrichten der Raspberry Pi OS-GUI

Sie sind jetzt über die Befehlszeile mit Ihrem Pi verbunden, was großartig ist, aber Sie möchten es auch so einrichten, dass Sie auf die grafische Benutzeroberfläche zugreifen können, auf die wir über VNC (Virtual Network Computing) zugreifen. Voraussichtlich müssen wir dies auch ermöglichen.

Überprüfen Sie zunächst, ob Ihre Pi-Software auf dem neuesten Stand ist, indem Sie die folgenden beiden Befehle (jeweils gefolgt von Enter) in die Befehlszeile eingeben:

sudo apt-Update

sudo apt install realvnc-vnc-server realvnc-vnc-viewer

Öffnen Sie als Nächstes das Raspberry Pi-Einstellungsmenü, indem Sie Folgendes eingeben:

sudo raspi-config

Navigieren Sie zu Schnittstellenoptionen > VNC > Ja.

Beenden Sie die Konfigurationsanwendung, indem Sie die Escape-Taste drücken und den Pi über die Befehlszeile neu starten, indem Sie Folgendes eingeben:

sudo neu starten

Schritt 11: Verbinden Sie sich mit Ihrer Raspberry Pi-GUI und richten Sie sie ein

Stellen Sie eine Verbindung zu Ihrer Raspberry Pi-GUI her und richten Sie sie ein
Stellen Sie eine Verbindung zu Ihrer Raspberry Pi-GUI her und richten Sie sie ein
Stellen Sie eine Verbindung zu Ihrer Raspberry Pi-GUI her und richten Sie sie ein
Stellen Sie eine Verbindung zu Ihrer Raspberry Pi-GUI her und richten Sie sie ein

Laden Sie den VNC-Viewer herunter und öffnen Sie ihn.

Geben Sie die IP-Adresse Ihres Raspberry Pi ein und drücken Sie auf Verbinden. Es fordert Sie zur Eingabe von Benutzername und Passwort auf, die wie folgt lauten:

Benutzername = pi

Passwort = Himbeere

Dies sollte Sie zur GUI hochfahren.

Sie werden aufgefordert, Ihre Geografie und das Tastaturlayout zu bestätigen.

Sie werden dann aufgefordert, Ihr Passwort zu ändern (gute Idee).

Sie werden aufgefordert, Ihre WLAN-Details festzulegen, aber Sie können dies überspringen, da sie bereits funktionieren. (Obwohl, wenn Sie über Ethernet laufen und sich Gedanken machen, dann ist jetzt Ihre Chance … aber beachten Sie, dass sich Ihre IP-Adresse ändern kann)

Es wird dann nach Updates suchen, diese herunterladen und installieren (kann eine Weile dauern).

Sobald Sie den Setup-Assistenten durchlaufen haben, würde ich empfehlen, die Bildschirmauflösung zu ändern, da die Standardeinstellung ziemlich klein ist. Sie können dies tun, indem Sie oben links auf den Raspberry klicken> Preferences> Raspberry Pi Configuration> Display> Set Resolution

Sie müssen den Pi noch einmal neu starten, damit dies wirksam wird.

Schritt 12: Node.js und NPM installieren

Node.js und NPM installieren
Node.js und NPM installieren

Als nächstes möchten Sie die Raspberry Pi-Befehlszeile laden, um die benötigten Abhängigkeiten zu installieren.

Sie können dies entweder tun, indem Sie eine Verbindung über VNC herstellen und auf die Schaltfläche oben klicken, die wie eine Befehlszeile aussieht; oder Sie können sich wie zuvor mit Terminal und Putty direkt von Ihrem Mac/PC aus verbinden. Wenn Sie weniger daran gewöhnt sind, mit dem Raspberry Pi zu arbeiten, ist es einfacher, Ersteres zu tun.

(Tipp: Sie können Text von Ihrem Mac/PC kopieren und über VNC auf den Raspberry Pi einfügen, indem Sie STRG-V drücken, aber wenn Sie versuchen, ihn in das Terminal einzufügen, müssen Sie STRG-SHIFT-V drücken.)

Die erste Aufgabe besteht darin, erneut zu überprüfen, ob Ihre Software auf dem neuesten Stand ist, indem Sie die folgenden beiden Befehle eingeben. Es kann eine Weile dauern, sie herunterzuladen und zu installieren.

sudo apt-get update

sudo apt-get upgrade

Als nächstes möchten Sie node.js und NPM herunterladen und installieren (machen Sie sich nicht zu viele Gedanken, sie sind hilfreich und für unsere nächsten Aufgaben erforderlich), indem Sie Folgendes eingeben:

sudo apt-get install nodejs npm

Sie werden ein paar Mal gefragt, ob Sie damit Speicherplatz belegen möchten - drücken Sie also Y

Schritt 13: Installieren Sie die SONOS

Die Basis des Backends für unser Projekt ist das von jishi erstellte Paket node-sonos-http-api. Alles darüber kannst du hier lesen:

Wir werden dies von github herunterladen, indem wir den folgenden Befehl in die Befehlszeile eingeben:

git-Klon

und wir werden es mit den folgenden Befehlen installieren

cd node-sonos-http-api

npm install --production

Wir können es dann mit dem folgenden Befehl ausführen:

npm start

Sobald das erledigt ist, sollten wir testen, ob es funktioniert.

Öffnen Sie zunächst den Internetbrowser auf unserem Raspberry Pi und navigieren Sie zu https://localhost:5005/. Es sollte sich eine schöne Oberfläche mit dem Sonos-Logo und einer Dokumentation zur Funktionsweise der API öffnen.

Als nächstes überprüfen wir, ob dies vom breiteren Netzwerk aus funktioniert, indem wir einen Browser auf einem anderen PC oder Mac im selben Netzwerk verwenden und zu https://[theIPaddressofyourPi]:5005/ navigieren und sehen, ob wir das gleiche Ergebnis erhalten. Wir sollten.

Jetzt werden wir das System tatsächlich dazu bringen, etwas zu tun. Verwenden Sie einen Browser und navigieren Sie zu:

192.168.4.102:5005/Esszimmer/playpause

Ersetzen Sie die obige IP-Adresse durch die Adresse Ihres Raspberry Pi und „Dining Room“durch einen der Namen Ihrer Sonos-Zonen. Es sollte die Musik in diesem Raum entweder abspielen oder anhalten (je nachdem, ob bereits Musik abgespielt wird oder nicht). Offensichtlich muss sich etwas in der Sonos-Warteschlange befinden, damit das funktioniert.

In Zukunft werde ich die obige IP-Adresse und das Esszimmer als Beispiele in diesem Tutorial verwenden. Natürlich sollten Sie sie bei jeder Gelegenheit durch Ihre IP-Adresse und Ihren Zonennamen ersetzen.

Schritt 14: Lassen Sie die Sonos HTTP API ständig laufen

Lassen Sie die Sonos HTTP API ständig laufen
Lassen Sie die Sonos HTTP API ständig laufen

Es ist toll, dass wir die Sonos HTTP API laufen lassen, aber was ist, wenn sie abstürzt? Oder Sie verlieren die Stromversorgung oder müssen Ihren Raspberry Pi neu starten?

Sie können den Effekt sehen, indem Sie das Terminalfenster schließen und wiederholen, was wir gerade versucht haben. Es funktioniert nicht, weil die HTTP-API zusammen mit dem Terminalfenster gestoppt wurde.

Wir möchten eigentlich, dass dies ständig läuft und dies jedes Mal von Anfang an. Wir machen das mit einem coolen Ding namens PM2.

Installieren Sie es in einem neuen Terminalfenster und führen Sie es wie folgt aus:

sudo npm installieren -g pm2

pm2-Status

Lassen Sie uns nun unsere Sonos HTTP API ausführen:

cd node-sonos-http-api

pm2 start npm -- starte pm2 start systemd

Dieser letzte Befehl generiert etwas, das ungefähr so aussieht:

sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi

Kopieren Sie, was Ihr Pi generiert (nicht den genauen Text oben - Ihrer kann anders sein) und geben Sie ihn in die Befehlszeile ein. Dies weist das System an, PM2 jedes Mal beim Booten auszuführen.

Geben Sie abschließend ein:

pm2 speichern

das spart alles runter.

Testen Sie nun, ob dies funktioniert hat, indem Sie Ihren Raspberry Pi mit dem Befehl neu starten

sudo neu starten

Hoffentlich startet der Pi nach dem Neustart auch PM2 und damit die Sonos HTTP API. Sie können dies überprüfen, indem Sie mit einem Browser im selben Netzwerk zu der zuvor verwendeten Adresse navigieren und das Sonos-Logo und die Anweisungen anzeigen:

192.168.4.102:5005/

ist was für mich, aber deine hängt von der IP-Adresse ab.

Schritt 15: Spielen Sie Spotify ab

Lassen Sie uns überprüfen, ob der Dienst auf Spotify zugreifen kann.

Öffnen Sie einen Browser und navigieren Sie zu der folgenden Adresse (offensichtlich durch Ihre IP-Adresse und den Raumnamen ersetzen):

192.168.4.102:5005/Esszimmer/spotify/now/spotify/spotify:album:2dfTV7CktUEBkZCHiB7VQB

Sie sollten John Grant hören. Genießen.

Schritt 16: Spotify-URIs finden

Spotify-URIs finden
Spotify-URIs finden

Seltsam, ich weiß, aber nicht jeder mag John Grant. Vielleicht möchten Sie etwas anderes hören?

Sie können die Spotify-Links von Desktop-, Web- oder mobilen Apps abrufen, aber der Desktop ist bei weitem am einfachsten, da er die URI genau in dem gewünschten Format liefert. Beginnen Sie also damit.

Navigieren Sie in der Spotify-Desktop-App zu dem Album, das Sie anhören möchten (vielleicht Lemonade von Beyonce?)

Klicken Sie auf die drei kleinen Punkte neben dem Herz-Button.

Gehen Sie im Menü nach unten zu Teilen und wählen Sie Spotify-URI kopieren

Dies wird so etwas kopieren wie

spotify:album:7dK54iZuOxXFarGhXwEXfF

in Ihre Zwischenablage, die Spotify-URI für Beyonces Lemondade-Album ist.

Starten Sie Ihren Browser erneut und navigieren Sie zu der folgenden Adresse (ersetzen Sie offensichtlich die IP-Adresse und den Raum und fügen Sie die gerade kopierte URI ein):

192.168.4.102:5005/Esszimmer/spotify/jetzt/[Spotify-URI, die Sie spielen möchten]

Sie sollten Ihre Wahl spielen hören.

Wenn Sie es vorziehen, die Web-App zu verwenden, erhalten Sie einen Weblink (etwa wie der folgende):

open.spotify.com/album/7dK54iZuOxXFarGhXwEXfF

Sie müssen dies in das oben genannte Spotify: Album: Code-Format konvertieren, damit es funktioniert.

Schritt 17: Ein Hinweis zu Spotify-URIs

Spotify-URIs und die Art und Weise, wie sie mit der node-sonos-http-api verbunden sind, sind größtenteils intuitiv.

Sie können direkt auf Alben, Titel und Playlists verlinken.

Eine Album-URI sieht wie folgt aus:

spotify:album:6agCM9GJcebduMddgFmgsO

Ein Track-URI sieht wie folgt aus:

spotify:track:4fNDKbaeEjk2P4GrRE1UbW

Playlists funktionieren etwas anders. Wenn Sie die URI von Spotify kopieren, sieht sie ungefähr so aus:

Spotify:Playlist:5huIma0YU4iusLcT2reVEU

Damit es jedoch tatsächlich auf der API funktioniert, müssen Sie spotify:user: am Anfang des oben genannten hinzufügen. Dies gilt sogar für öffentliche Playlists und ja, es bedeutet, dass Sie Spotify zweimal sagen.

Um es ganz klar zu sagen, muss der Benutzer nicht der Name eines bestimmten Benutzers sein, sondern nur der Textbenutzer. Der korrekte URI für die obige Playlist wäre also:

spotify:user:spotify:playlist:5huIma0YU4iusLcT2reVEU

Schritt 18: Raspberry Pi zum Senden von HTTP-Anfragen einrichten

Raspberry Pi zum Senden von HTTP-Anfragen einrichten
Raspberry Pi zum Senden von HTTP-Anfragen einrichten

Anstatt HTTP-Anfragen manuell in einen Webbrowser einzugeben, möchten wir dies automatisieren, damit der Raspberry Pi dies selbst tut, wenn er einem bestimmten Stimulus präsentiert wird (der NFC-Reader wird ausgelöst).

Wir werden eine Bibliothek namens Requests verwenden, um unserem Raspberry Pi dies zu ermöglichen. Lassen Sie uns überprüfen, ob es installiert ist.

Öffnen Sie das Terminal auf Ihrem Pi und geben Sie Folgendes ein:

sudo pip Installationsanfragen

Es ist wahrscheinlich, dass es zurückkommt und sagt, dass es bereits installiert ist, in diesem Fall großartig. Wenn nicht, wird es installiert.

Schritt 19: Generieren Sie NFCC-Tag(s) mit Spotify-Daten

Generieren Sie NFCC-Tag(s) mit Spotify-Daten
Generieren Sie NFCC-Tag(s) mit Spotify-Daten
Generieren Sie NFCC-Tag(s) mit Spotify-Daten
Generieren Sie NFCC-Tag(s) mit Spotify-Daten
Generieren Sie NFCC-Tag(s) mit Spotify-Daten
Generieren Sie NFCC-Tag(s) mit Spotify-Daten
Generieren Sie NFCC-Tag(s) mit Spotify-Daten
Generieren Sie NFCC-Tag(s) mit Spotify-Daten

Jetzt wollen wir eine Spotify-Album-URI in ein NFC-Tag schreiben. Jedes dieser Tags wird verwendet, um dem Raspberry Pi mitzuteilen, dass er ein bestimmtes Album abspielen soll.

Sie können mit einem Android-Telefon auf ein NFC-Tag schreiben, aber ich finde es am einfachsten, dies über einen Mac oder PC zu tun, da Sie dann die Spotify-URIs am einfachsten von der Spotify-Desktop-App abrufen können.

Schließen Sie Ihren USB-NFC-Leser an Ihren PC oder Mac an. Ich verwende den ACR122U von American Card Systems.

Laden Sie NFC-Tools auf Ihren PC oder Mac herunter. Installieren und öffnen Sie es.

Es kann manchmal etwas langsam sein, sich mit dem Leser zu verbinden, und kann sagen, dass er den Leser überhaupt nicht finden kann. Gehen Sie in den NFC-Tools zur Registerkarte Andere und klicken Sie von Zeit zu Zeit auf die Schaltfläche Verbundener NFC-Reader. Möglicherweise müssen Sie das Lesegerät einige Male aus- und wieder einstecken, bevor es es findet.

Schließlich haben Sie die Möglichkeit, Ihren Reader aus einer Liste auszuwählen und zu sagen, dass er verbunden ist. Gehen Sie zur Registerkarte Informationen, auf der nichts außer "Warten auf ein NFC-Tag" angezeigt wird.

Nehmen Sie ein leeres NFC-Tag. Legen Sie es auf das Lesegerät und lassen Sie es dort. NFC Tools zeigt die Informationen zum Tag an.

Wechseln Sie zur Registerkarte Schreiben und klicken Sie auf Datensatz hinzufügen > Text. (Achten Sie darauf, keine URL oder URI zu wählen - ich weiß, es ist verlockend, weil Sie eine URI kopieren, aber Text möchten)

Holen Sie sich eine URI von Spotify mit der zuvor verwendeten Methode. Wenn Sie ein einfaches Beispiel wollen, dann ist das Folgende unser John Grant-Album von früher.

spotify:album:2dfTV7CktUEBkZCHiB7VQB

Klicken Sie auf OK und dann auf Schreiben (vergessen Sie diesen letzten Schritt nicht - es wird nicht wirklich geschrieben, bis Sie darauf klicken). Es wird Ihnen mitteilen, dass das Tag erfolgreich geschrieben wurde.

Nehmen Sie das Etikett vom Lesegerät ab

Schritt 20: Einrichten des NFC-Readers auf dem Raspberry Pi

Einrichten des NFC-Readers auf dem Raspberry Pi
Einrichten des NFC-Readers auf dem Raspberry Pi

Stecken Sie Ihren NFC-Reader in einen der USB-Ports Ihres Raspberry Pi.

Wir werden die Python-Bibliothek nfcpy verwenden, um mit dem NFC-Reader zu kommunizieren. Installieren Sie es, indem Sie Folgendes in Ihre Pi-Befehlszeile eingeben:

pip install -U nfcpy

Wir können dann überprüfen, ob diese Bibliothek unseren NFC-Reader sehen kann, indem wir Folgendes eingeben:

python -m nfc

Wenn es funktioniert hat, sehen Sie Folgendes:

Dies ist die Version 1.0.3 von nfcpy, die in Python 2.7.16 unter Linux-4.19.97-v7+-armv7l-with-debian-10.3 ausgeführt wird

Ich durchsuche jetzt Ihr System nach kontaktlosen Geräten ** habe ACS ACR122U PN532v1.6 unter usb:001:011 gefunden. damit ich suche -- aber hüte dich davor, dass dies andere serielle Entwickler kaputt machen könnte

Es besteht jedoch eine gute Chance, dass Sie eine Fehlermeldung erhalten, die besagt, dass der Reader gefunden wurde, Ihr Benutzer (pi) jedoch keine Berechtigung hat, darauf zuzugreifen. Wenn Sie diese Fehlermeldung erhalten, wird auch erklärt, wie Sie das Problem beheben können, indem Sie zwei Befehle eingeben, die ungefähr wie folgt aussehen:

sudo sh -c 'echo SUBSYSTEM==\"usb\", ACTION==\"add\", ATTRS{idVendor}==\"04e6\", ATTRS{idProduct}==\"5591\", GROUP= \"plugdev\" >> /etc/udev/rules.d/nfcdev.rules'

sudo udevadm control -R

Kopieren Sie beide Befehle und führen Sie sie aus (nicht genau das, was oben steht, da Ihre möglicherweise anders sind), dann ziehen Sie Ihren NFC-Leser vom USB-Anschluss ab und stecken Sie ihn wieder ein.

Versuchen Sie den Check-Befehl erneut:

python -m nfc

Diesmal sollte es sagen, dass es ohne Fehlermeldungen gefunden wurde.

Schritt 21: Installieren Sie die Vinylemulator-Python-Skripte

Wir haben jetzt alle Bausteine an Ort und Stelle:

  • Unser Raspberry Pi kann auf NFC-Eingaben hören
  • Unser Raspberry Pi kann Sonos anweisen, Spotify-Wiedergabelisten abzuspielen, wenn er eine Spotify-URI erhält
  • Wir haben ein NFC-Tag mit einer darauf gespeicherten Spotify-URI

Jetzt müssen wir all diese Bausteine zu etwas Nützlichem zusammenfügen. Dies geschieht durch ein kurzes Python-Skript, das ich geschrieben habe (mit viel Hilfe aus früheren NFC/Spotify/Sonos-Projekten), das Vinylemulator genannt wird.

Sie können den Quellcode für die Dateien bei github einsehen:

Um dies auf unserem Raspberry Pi zu installieren, müssen wir es mit dem folgenden Befehl von github klonen:

Git-Klon

Schritt 22: Vinylemulator anpassen

Vinylemulator anpassen
Vinylemulator anpassen
Vinylemulator anpassen
Vinylemulator anpassen

Öffnen Sie den Raspberry Pi-Dateimanager und navigieren Sie zu home> pi> vinylemulator

Öffnen Sie die Datei usersettings.py

Eine der Zeilen in dieser Datei lautet:

sonosroom="Esszimmer"

Ändern Sie "Esszimmer" in den Sonos-Raumnamen, den Sie steuern möchten.

In dieser Datei befindet sich auch eine Einstellung, mit der Sie die IP-Adresse der sonos-http-api anpassen können. Sie sollten dies als "localhost" unverändert lassen können, was nur bedeutet, dass es den Raspberry Pi verwendet, auf dem es läuft.

Speichern Sie die Datei und schließen Sie sie.

Schritt 23: Vinylemulator testen

Vinylemulator testen
Vinylemulator testen
Vinylemulator testen
Vinylemulator testen

Gehen Sie zu Ihrer Raspberry Pi-Eingabeaufforderung.

Geben Sie den folgenden Befehl ein:

Python-Vinylemulator/readnfc.py

Wenn alles in Ordnung ist, lädt dies das Skript und sagt, dass der Leser bereit ist. Das Licht am Leser sollte grün leuchten.

Setzen Sie das NFC-Tag auf das Lesegerät, das einen Signalton ausgibt.

Das Terminal zeigt an, was es vom NFC-Tag gelesen hat und zeigt die gesendete HTTP-Request-Adresse an. Das Album deiner Wahl sollte über deine Sonos-Lautsprecher wiedergegeben werden.

Dieses Skript wird so lange ausgeführt, bis Sie das Terminalfenster schließen. Sie können auf verschiedene Album-NFC-Tags tippen und es wird zu diesem Album gewechselt.

Schritt 24: Lassen Sie Vinylemulator ständig und beim Start laufen

Genau wie die sonos-http-api möchten wir, dass der Vinylemulator die ganze Zeit läuft und nicht nur, wenn wir ihn aufrufen. Wir können pm2 verwenden, um dies erneut zu tun.

Schließen Sie zuerst alle Instanzen von Vinylemulator, die Sie ausführen, indem Sie deren Terminalfenster schließen.

Öffnen Sie dann ein neues Terminalfenster und geben Sie die folgenden beiden Befehle ein:

pm2 starte vinylemulator/readnfc.py

pm2 speichern

Lassen Sie uns überprüfen, ob das funktioniert hat, indem Sie den Raspberry Pi neu starten. (Sie können entweder sudo reboot eingeben oder dies mit der Maus über das Raspberry-Menü tun.

Warten Sie, bis der Pi wieder hochfährt und sehen Sie, dass er funktioniert, indem Sie auf ein NFC-Tag auf dem Leser tippen. Du solltest Musik bekommen.

Schritt 25: Gratulieren Sie sich selbst

Alles ist jetzt funktionstüchtig. Sie können den Raspberry Pi dorthin verschieben, wo Sie ihn platzieren möchten. Es wird neu gestartet und funktioniert so, wie Sie es eingerichtet haben, jedes Mal, wenn Sie es anschließen.

Ihre nächsten Aufgaben sind die, die Spaß machen: alles schön machen.

Schritt 26: Machen Sie es schön - Verstecken Sie Ihren Leser

Machen Sie es schön - verstecken Sie Ihren Leser
Machen Sie es schön - verstecken Sie Ihren Leser
Machen Sie es schön - verstecken Sie Ihren Leser
Machen Sie es schön - verstecken Sie Ihren Leser
Machen Sie es schön - verstecken Sie Ihren Leser
Machen Sie es schön - verstecken Sie Ihren Leser
Machen Sie es schön - verstecken Sie Ihren Leser
Machen Sie es schön - verstecken Sie Ihren Leser

Der erste Teil, um es schön zu machen, besteht darin, den fiesen weißen NFC-Leser aus Kunststoff irgendwo zu verstecken.

Ich habe mich für eine ausgesprochen Low-Tech-Option entschieden, um es neben meinem Sonos Play:5 auf die Unterseite einer Theke zu kleben. Das Holz der Theke ist dünn genug, dass das NFC durchdringen kann, also spiele ich Musik ab, indem ich ein NFC-Tag auf eine magische und unsichtbare Stelle tippe.