Table des matières:

Émulateur de vinyle Sonos Spotify : 26 étapes
Émulateur de vinyle Sonos Spotify : 26 étapes

Vidéo: Émulateur de vinyle Sonos Spotify : 26 étapes

Vidéo: Émulateur de vinyle Sonos Spotify : 26 étapes
Vidéo: Vinyl Emulator 2024, Novembre
Anonim
Image
Image
Émulateur de vinyle Sonos Spotify
Émulateur de vinyle Sonos Spotify

Veuillez noter qu'il ne s'agit pas de la dernière série d'instructions pour ce projet:

Veuillez visiter https://www.hackster.io/mark-hank/sonos-spotify-vinyl-emulator-3be63d pour la dernière série d'instructions et l'assistance

C'est super d'écouter de la musique sur vinyle. C'est physique et tactile. Vous écoutez un album entier plutôt que des morceaux aléatoires. Vous remarquez quand c'est fini et choisissez consciemment autre chose. Vous pouvez créer une collection et la parcourir plutôt que d'avoir à chercher exactement ce que vous voulez.

C'est aussi cher et encombrant, surtout si l'on considère que tout l'argent que vous dépensez en vinyle est très probablement un duplicata de musique à laquelle vous avez déjà accès via un service de streaming auquel vous êtes abonné.

Ce projet tente de reproduire les aspects tactiles et de création de collection du vinyle tout en s'appuyant sur Spotify pour diffuser réellement la musique. Placer un objet physique sur un lecteur NFC connecté à un Raspberry Pi (les deux pouvant être cachés) lancera la lecture de l'album associé à cette balise.

Je vais vous guider à travers toutes les étapes - de la configuration du Raspberry Pi à l'encodage des balises NFC. C'est mon tout premier projet Raspberry Pi et mon premier code Python, donc j'ai appris les deux tout en développant cela. En tant que telles, ces instructions supposent littéralement aucune connaissance préalable et vous expliquent à chaque étape.

Le coût total des composants essentiels pour construire ceci est d'environ 50-60 £.

J'aimerais voir ce que vous construisez!

Étape 1: Fournitures requises 1: Raspberry Pi

Le back-end qui s'interface avec votre réseau, Sonos et Spotify sera exécuté par un Raspberry Pi. Il y a en fait très peu de choses dont vous avez besoin pour faire avancer les choses.

Indispensable:

Raspberry Pi: j'ai utilisé un Raspberry Pi 3 modèle B+ mais il fonctionnera également avec un Raspberry Pi 3 modèle A+ (23 £)

Alimentation USB: j'en avais une qui traînait - il y en a une officielle disponible si vous ne l'avez pas (9 £)

Carte Micro SD: j'en ai une de 32 Go, ce qui est largement suffisant pour cette application, sur Amazon (6 £)

Certains équipements Sonos fonctionnant sur votre réseau (je suppose que vous l'avez déjà si vous êtes ici…)

Un compte Spotify Premium

Conseillé:

Un cas pour le Pi: il y a beaucoup d'options, à partir de 5 £

Une bouteille de California Zinfandel décent: je recommande Ridge, mais d'autres sont disponibles

Étape 2: Fournitures requises 2: Lecteur NFC

Fournitures requises 2: Lecteur NFC
Fournitures requises 2: Lecteur NFC
Fournitures requises 2: Lecteur NFC
Fournitures requises 2: Lecteur NFC

Ces instructions sont conçues pour un lecteur NFC ACR122U qui se connecte via USB.

ACR122U

J'ai acheté celui-ci sur Amazon pour 38 £ (principalement parce qu'il avait une livraison de premier ordre), mais il existe des options moins chères pour acheter ce même lecteur.

De manière confuse, l'ACR122U semble être vendu sous un tas de noms de marque différents (le mien était sous le nom de marque loin d'être rassurant "Yosoo") mais d'après ce que je peux dire, ils sont tous les mêmes et construits par American Card Systems.

Le moins cher que j'ai trouvé l'ACR122U annoncé est de 21 £, frais de port compris, mais cela vient directement de Chine, vous devrez donc peut-être attendre un peu pour cela.

Autres options

Ce projet repose sur une bibliothèque python appelée nfcpy qui maintient une liste des appareils pris en charge ici:

En théorie, ce projet devrait fonctionner avec n'importe lequel de ceux de cette liste avec peu d'intégration.

Une option tentante est l'Adafruit PN532 qui est une carte qui doit se connecter directement à votre Raspberry Pi à l'aide de câbles de démarrage. Je l'ai essayé et je l'ai trouvé un vrai faff. Il faut par exemple souder.

Un avantage de celui-ci est, en apparence, qu'il est plus petit, mais en réalité, la carte a à peu près la même taille que les entrailles de l'ACR122U. Si vous êtes vraiment pressé par l'espace pour votre application, vous pouvez retirer le plastique de l'ACR122U et simplement utiliser la carte.

Étape 3: Fournitures requises 3: Étiquettes NFC

Fournitures requises 3: Tags NFC
Fournitures requises 3: Tags NFC

Pour chaque album que vous souhaitez créer, vous aurez besoin d'un tag NFC conforme à la norme NTAG213.

Il existe de nombreux endroits pour les acheter.

J'ai acheté mon premier lot sur Amazon, où j'ai eu un pack de 10 pour 9 £ (livraison Prime incluse)

Le mieux fourni que j'ai trouvé ici au Royaume-Uni est Seritag - ils ont une très large sélection de styles différents, d'excellents conseils sur leur site Web, vous savez exactement ce que vous obtenez (pas toujours vrai sur Amazon). Ils n'ont pas de taille minimale de commande et une tonne d'options. Les balises commencent à 27p par balise

Étape 4: Téléchargez le système d'exploitation Raspberry Pi sur une carte SD

Téléchargez le système d'exploitation Raspberry Pi sur une carte SD
Téléchargez le système d'exploitation Raspberry Pi sur une carte SD
Téléchargez le système d'exploitation Raspberry Pi sur une carte SD
Téléchargez le système d'exploitation Raspberry Pi sur une carte SD

Sur votre PC ou Mac, téléchargez et exécutez l'application d'imagerie Raspberry PI.

Insérez la carte SD sur laquelle vous souhaitez installer le système d'exploitation Raspberry Pi.

Cliquez sur CHOOSE OS et sélectionnez le Rasbian par défaut.

Cliquez sur CHOISIR LA CARTE SD et sélectionnez la carte SD que vous avez branchée.

Cliquez sur ÉCRIRE. Cela peut prendre un peu de temps.

Une fois que c'est fait, il vous dira de retirer la carte SD, ce que vous devriez faire. Mais rebranchez-le ensuite car il y a quelques points d'entretien ménager que vous devez d'abord faire.

Étape 5: Activez SSH sur l'image de votre système d'exploitation Raspberry Pi

Activer SSH sur l'image de votre système d'exploitation Raspberry Pi
Activer SSH sur l'image de votre système d'exploitation Raspberry Pi

Une fois que le système d'exploitation a été écrit sur la carte SD, vous devez effectuer quelques tâches supplémentaires.

Nous voulons accéder au Raspberry Pi sans brancher un clavier ou un moniteur (alias "sans tête"), ce que nous pouvons faire sur notre réseau local à l'aide de notre PC ou Mac via un protocole appelé SSH. Cependant, pour des raisons de sécurité, SSH est désactivé par défaut. Nous devons l'activer.

Nous pouvons le faire en créant un fichier vide appelé:

ssh

dans la carte SD que nous venons de créer. Il est important que cela n'ait aucune sorte d'extension (par exemple.txt). Le fichier lui-même n'a pas besoin de contenir de contenu - juste son existence activera SSH au démarrage du Pi.

Étape 6: Facultatif: Configurez le Wifi sur votre Raspberry Pi

Facultatif: configurez le Wi-Fi sur votre Raspberry Pi
Facultatif: configurez le Wi-Fi sur votre Raspberry Pi
Facultatif: configurez le Wi-Fi sur votre Raspberry Pi
Facultatif: configurez le Wi-Fi sur votre Raspberry Pi

Vous pouvez ignorer cette étape si vous envisagez de câbler votre Raspberry Pi à votre routeur par Ethernet. (Bien que vous souhaitiez peut-être réfléchir sérieusement à cette décision - le faire fonctionner via le wifi rend la vie beaucoup plus facile en termes de positionnement)

Créez un fichier texte brut appelé wpa_supplicant.conf dans le répertoire racine de la carte SD.

Insérez le texte ci-dessous dans le fichier:

pays=fr

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

Modifiez le pays selon les besoins (GB est le Royaume-Uni, US est les États-Unis, DE est l'Allemagne, etc.)

Modifiez les informations d'identification Wi-Fi pour qu'il s'agisse des détails réels de votre routeur Wi-Fi.

Enregistrez le fichier.

Éjectez la carte SD en toute sécurité.

Étape 7: allumez votre Raspberry Pi

Mettez votre Raspberry Pi sous tension
Mettez votre Raspberry Pi sous tension

Insérez la carte SD que vous venez de créer dans votre Raspberry Pi.

Branchez votre Raspberry Pi à l'alimentation via le câble USB. Attendez une minute pour qu'il démarre.

Étape 8: Trouvez l'adresse IP de votre Raspberry Pi

Vous devez maintenant trouver l'adresse IP du Raspberry Pi pour pouvoir vous y connecter. Vous pouvez le faire de deux manières:

  • via la page de configuration de votre routeur - si vous avez un routeur moderne comme eero, c'est super facile;
  • ou via une application pour smartphone disponible pour iOS et Android appelée "fing" - téléchargez-la, connectez-vous à votre routeur et recherchez des appareils - l'un d'eux devrait s'appeler "Raspberry" - ce sera l'adresse IP dont vous avez besoin.

Étape 9: connectez-vous à votre ligne de commande Raspberry Pi

Connectez-vous à votre ligne de commande Raspberry Pi
Connectez-vous à votre ligne de commande Raspberry Pi

Ouvrez Terminal sur votre mac (ou si vous utilisez Windows, téléchargez et utilisez Putty).

Saisissez la commande suivante:

ssh pi@[l'adresse IP de votre Pi]

Acceptez tous les avertissements de sécurité que vous recevez. Vous serez invité à saisir le mot de passe de l'utilisateur pi par défaut qui est

framboise

Étape 10: Configurer l'interface graphique du Raspberry Pi OS

Configurer l'interface graphique du Raspberry Pi OS
Configurer l'interface graphique du Raspberry Pi OS
Configurer l'interface graphique du Raspberry Pi OS
Configurer l'interface graphique du Raspberry Pi OS

Vous êtes maintenant connecté à votre Pi via la ligne de commande, ce qui est génial mais vous souhaitez également le configurer pour pouvoir accéder à l'interface utilisateur graphique à laquelle nous accéderons via VNC (Virtual Network Computing). Comme on pouvait s'y attendre, nous devons également activer cela.

Tout d'abord, vérifiez que votre logiciel Pi est à jour en entrant les deux commandes suivantes (chacune suivie d'entrée) dans la ligne de commande:

mise à jour sudo apt

sudo apt installer realvnc-vnc-server realvnc-vnc-viewer

Ensuite, ouvrez le menu des paramètres de Raspberry Pi en entrant:

sudo raspi-config

Accédez à Options d'interfaçage > VNC > Oui.

Quittez l'application de configuration en appuyant sur la touche d'échappement et redémarrez le Pi à partir de la ligne de commande en tapant:

redémarrage sudo

Étape 11: Connectez-vous et configurez votre interface graphique Raspberry Pi

Connectez-vous et configurez votre interface graphique Raspberry Pi
Connectez-vous et configurez votre interface graphique Raspberry Pi
Connectez-vous et configurez votre interface graphique Raspberry Pi
Connectez-vous et configurez votre interface graphique Raspberry Pi

Téléchargez et ouvrez VNC Viewer.

Tapez l'adresse IP de votre Raspberry Pi et appuyez sur Connect. Il vous demandera le nom d'utilisateur et le mot de passe qui sont:

Nom d'utilisateur = pi

Mot de passe = framboise

Cela devrait vous démarrer jusqu'à l'interface graphique.

Il vous demandera de confirmer votre géographie et la disposition du clavier.

Il vous demandera alors de changer votre mot de passe (bonne idée).

Il vous demandera de définir vos détails wifi, mais vous pouvez ignorer cela car ils fonctionnent déjà. (Bien que si vous utilisez Ethernet et que vous avez des doutes, c'est maintenant votre chance… mais notez que votre adresse IP peut changer)

Il recherchera, téléchargera et installera ensuite les mises à jour (cela peut prendre un certain temps).

Une fois que vous avez terminé l'assistant de configuration, je vous recommande de modifier la résolution de l'écran, car la valeur par défaut est assez petite. Vous pouvez le faire en cliquant sur Raspberry en haut à gauche > Préférences > Configuration Raspberry Pi > Affichage > Définir la résolution

Vous devrez à nouveau redémarrer le Pi pour que cela prenne effet.

Étape 12: Installez Node.js et NPM

Installer Node.js et NPM
Installer Node.js et NPM

Ensuite, vous voulez charger la ligne de commande Raspberry Pi pour installer les dépendances dont nous avons besoin.

Vous pouvez soit le faire en vous connectant via VNC et en cliquant sur le bouton près du haut qui ressemble à une ligne de commande; ou vous pouvez vous connecter directement depuis votre Mac/PC en utilisant Terminal et Putty comme nous l'avons fait précédemment. Si vous êtes moins habitué à travailler avec le Raspberry Pi, il est plus facile de faire le premier.

(Astuce: vous pouvez copier du texte depuis votre Mac/PC et le coller sur le Raspberry Pi via VNC en appuyant sur CONTROL-V, mais si vous essayez de coller dans le terminal, vous devez appuyer sur CONTROL-SHIFT-V)

Le premier travail consiste à vérifier à nouveau que votre logiciel est à jour en tapant les deux commandes suivantes. Ils peuvent prendre un certain temps à télécharger et à installer.

sudo apt-get mise à jour

sudo apt-get mise à niveau

Ensuite, vous souhaitez télécharger et installer node.js et NPM (ne vous inquiétez pas trop de ce qu'ils sont, ils sont utiles et nécessaires pour nos prochaines tâches) en tapant ce qui suit:

sudo apt-get install nodejs npm

Il vous demandera plusieurs fois si vous êtes prêt à occuper de l'espace disque avec ceux-ci - vous devez donc appuyer sur Y

Étape 13: Installez l'API HTTP SONOS

Installer l'API HTTP SONOS
Installer l'API HTTP SONOS
Installer l'API HTTP SONOS
Installer l'API HTTP SONOS

La base du back-end de notre projet est le package node-sonos-http-api créé par jishi. Vous pouvez tout lire ici:

Nous allons le télécharger depuis github avec la commande suivante entrée dans la ligne de commande:

git clone

et nous allons l'installer avec les commandes suivantes

cd node-sonos-http-api

npm install --production

Nous pouvons ensuite l'exécuter avec la commande suivante:

début npm

Une fois cela fait, nous devons tester que cela fonctionne.

Tout d'abord, ouvrez le navigateur Internet sur notre Raspberry Pi et accédez à https://localhost:5005/. Une belle interface devrait s'ouvrir avec le logo Sonos et de la documentation sur le fonctionnement de l'API.

Ensuite, vérifions que cela fonctionne à partir du réseau plus large en utilisant un navigateur sur un autre PC ou Mac sur le même réseau et en naviguant vers https://[theIPaddressofyourPi]:5005/ et en voyant si nous obtenons le même résultat. Nous devrions.

Maintenant, nous allons réellement faire en sorte que le système fasse quelque chose. Utilisez un navigateur et accédez à:

192.168.4.102:5005/Salle à manger/playpause

Vous devez remplacer l'adresse IP ci-dessus par l'adresse de votre Raspberry Pi et "Salle à manger" par l'un des noms de vos zones Sonos. Il doit jouer ou mettre en pause (selon que la musique est déjà en cours de lecture ou non) la musique dans cette pièce. Évidemment, quelque chose doit être dans la file d'attente de Sonos pour que cela fonctionne.

À l'avenir, je vais utiliser l'adresse IP et la salle à manger ci-dessus comme exemples tout au long de ce didacticiel. Évidemment, vous devez les remplacer par votre adresse IP et votre nom de zone à chaque fois.

Étape 14: Exécutez l'API HTTP Sonos en permanence

Faire fonctionner l'API HTTP Sonos en permanence
Faire fonctionner l'API HTTP Sonos en permanence

C'est bien que nous ayons l'API HTTP Sonos en cours d'exécution, mais que se passe-t-il s'il se bloque ? Ou vous perdez de la puissance ou devez redémarrer votre Raspberry Pi ?

Vous pouvez voir l'effet en fermant la fenêtre du terminal et en réessayant ce que nous venons d'essayer. Cela ne fonctionnera pas car l'API HTTP s'est arrêtée avec la fenêtre du terminal.

En fait, nous voulons que cela s'exécute en permanence et le faire dès le démarrage à chaque fois. Nous le faisons avec un truc cool appelé PM2.

Dans une nouvelle fenêtre de terminal, installez-le et exécutez-le comme suit:

sudo npm install -g pm2

état pm2

Faisons-lui maintenant exécuter notre API HTTP Sonos:

cd node-sonos-http-api

pm2 démarrer npm -- démarrer pm2 démarrage systemd

Cette dernière commande génère quelque chose qui ressemble un peu à:

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

Copiez ce que votre Pi génère (pas le texte exact ci-dessus - le vôtre peut être différent) et entrez-le dans la ligne de commande. Cela indique au système d'exécuter PM2 au démarrage à chaque fois.

Enfin, entrez:

pm2 enregistrer

ce qui économise tout.

Testez maintenant si cela a fonctionné en redémarrant votre Raspberry Pi avec la commande

redémarrage sudo

Espérons qu'une fois le Pi redémarré, il démarrera également PM2 et à son tour l'API HTTP Sonos. Vous pouvez le vérifier en naviguant à l'aide d'un navigateur sur le même réseau jusqu'à l'adresse que nous utilisions auparavant et en voyant le logo Sonos et les instructions:

192.168.4.102:5005/

est ce qui est pour moi, mais le vôtre dépendra de l'adresse IP.

Étape 15: Jouez à Spotify

Vérifions que le service peut accéder à Spotify.

Ouvrez un navigateur et accédez à l'adresse suivante (en remplaçant évidemment par votre adresse IP et le nom de votre chambre):

192.168.4.102:5005/Salle à manger/spotify/now/spotify/spotify:album:2dfTV7CktUEBkZCHiB7VQB

Vous devriez entendre du John Grant. Prendre plaisir.

Étape 16: Trouvez les URI Spotify

Trouver les URI Spotify
Trouver les URI Spotify

Bizarre, je sais, mais tout le monde n'aime pas John Grant. Peut-être que vous voulez écouter autre chose?

Vous pouvez obtenir les liens Spotify à partir des applications de bureau, Web ou mobiles, mais le bureau est de loin le plus simple car il fournit l'URI exactement au format que vous souhaitez, alors commencez par cela.

Dans l'application de bureau Spotify, accédez à l'album que vous souhaitez écouter (peut-être Lemonade de Beyonce ?)

Cliquez sur les trois petits points à côté du bouton cœur.

Descendez le menu pour Partager et choisissez Copier l'URI Spotify

Cela copiera quelque chose comme

spotify:album:7dK54iZuOxXFarGhXwEXfF

dans votre presse-papiers, qui est l'URI Spotify pour l'album Lemondade de Beyonce.

Relancez votre navigateur et accédez à l'adresse suivante (en remplaçant évidemment l'adresse IP et la salle et en collant l'URI que vous venez de copier):

192.168.4.102:5005/Salle à manger/spotify/now/[Spotify URI que vous voulez jouer]

Vous devriez entendre votre choix jouer.

Si vous préférez utiliser l'application Web, elle vous donnera un lien Web (quelque chose comme ci-dessous):

open.spotify.com/album/7dK54iZuOxXFarGhXwEXfF

vous devez le convertir au format spotify:album:code ci-dessus pour que cela fonctionne.

Étape 17: Une note sur les URI Spotify

Les URI Spotify et leur interface avec le node-sonos-http-api sont pour la plupart intuitifs.

Vous pouvez créer un lien direct vers des albums, des pistes et des listes de lecture.

L'URI d'un album ressemble à:

spotify:album:6agCM9GJcebduMddgFmgsO

Un URI de piste ressemble à:

spotify:piste:4fNDKbaeEjk2P4GrRE1UbW

Les listes de lecture fonctionnent un peu différemment. Lorsque vous copiez l'URI de Spotify, cela ressemblera à quelque chose comme:

spotify:playlist:5huIma0YU4iusLcT2reVEU

Cependant, pour que cela fonctionne réellement sur l'API, vous devez ajouter spotify:user: au début de ce qui précède. Cela s'applique même aux listes de lecture publiques et, oui, cela signifie que vous dites Spotify deux fois.

Pour être très clair, user n'a pas besoin d'être le nom d'un utilisateur particulier, juste le texte user. Ainsi, l'URI correct pour que la liste de lecture ci-dessus fonctionne serait:

spotify:utilisateur:spotify:playlist:5huIma0YU4iusLcT2reVEU

Étape 18: Configurer Raspberry Pi pour envoyer des requêtes

Configurer Raspberry Pi pour envoyer des requêtes HTTP
Configurer Raspberry Pi pour envoyer des requêtes HTTP

Plutôt que de saisir manuellement des requêtes HTTP dans un navigateur Web, nous souhaitons l'automatiser afin que le Raspberry Pi le fasse lui-même lorsqu'il est présenté avec un certain stimulus (le lecteur NFC étant déclenché).

Nous utiliserons une bibliothèque appelée requêtes pour permettre à notre Raspberry Pi de le faire. Vérifions qu'il est installé.

Ouvrez le terminal sur votre Pi et tapez ce qui suit:

demandes d'installation sudo pip

Il est probable qu'il revienne et dise qu'il est déjà installé, auquel cas très bien. Sinon, il l'installera.

Étape 19: Générez des balises NFCC avec les données Spotify

Générer des balises NFCC avec les données Spotify
Générer des balises NFCC avec les données Spotify
Générer des balises NFCC avec les données Spotify
Générer des balises NFCC avec les données Spotify
Générer des balises NFCC avec les données Spotify
Générer des balises NFCC avec les données Spotify
Générer des balises NFCC avec les données Spotify
Générer des balises NFCC avec les données Spotify

Nous voulons maintenant écrire un URI d'album Spotify sur une balise NFC. Chacune de ces balises est ce que vous utiliserez pour dire au Raspberry Pi de lire un album particulier.

Vous pouvez écrire sur une balise NFC à l'aide d'un téléphone Android, mais je trouve qu'il est plus facile de le faire via un mac ou un PC, car il est alors plus facile d'obtenir les URI Spotify à partir de l'application de bureau Spotify.

Branchez votre lecteur USB NFC sur votre PC ou Mac. J'utilise l'ACR122U d'American Card Systems.

Téléchargez les outils NFC sur votre PC ou Mac. Installez-le et ouvrez-le.

Il peut parfois être un peu lent à se connecter au lecteur et peut dire qu'il ne peut pas du tout trouver le lecteur. Accédez à l'onglet Autre dans les outils NFC et cliquez de temps en temps sur le bouton Lecteur NFC connecté. Vous devrez peut-être débrancher et rebrancher le lecteur plusieurs fois avant qu'il ne le trouve.

Finalement, il vous donnera la possibilité de choisir votre lecteur dans une liste et de dire qu'il est connecté. Allez dans l'onglet Informations qui n'affichera rien d'autre que "En attente d'un tag NFC".

Prenez un tag NFC vierge. Mettez-le sur le lecteur et laissez-le là. Les outils NFC afficheront les informations sur la balise.

Accédez à l'onglet Écrire et cliquez sur Ajouter un enregistrement > Texte. (Attention à ne pas choisir d'URL ou d'URI - je sais que c'est tentant car vous copiez un URI, mais vous voulez du texte)

Prenez un URI de Spotify en utilisant la méthode que nous avons utilisée précédemment. Si vous voulez un exemple simple, voici notre album John Grant d'avant.

spotify:album:2dfTV7CktUEBkZCHiB7VQB

Cliquez sur OK, puis sur Écrire (n'oubliez pas cette dernière étape - elle ne l'écrit pas tant que vous n'avez pas cliqué dessus). Il vous dira qu'il a écrit la balise avec succès.

Retirez l'étiquette du lecteur

Étape 20: Configurer le lecteur NFC sur le Raspberry Pi

Configurer le lecteur NFC sur le Raspberry Pi
Configurer le lecteur NFC sur le Raspberry Pi

Branchez votre lecteur NFC sur l'un des ports USB de votre Raspberry Pi.

Nous utiliserons la bibliothèque Python nfcpy pour communiquer avec le lecteur NFC. Installez-le en tapant ce qui suit sur votre ligne de commande Pi:

pip install -U nfcpy

Nous pouvons alors vérifier si cette bibliothèque est capable de voir notre lecteur NFC en tapant ce qui suit:

python -m nfc

Si cela a fonctionné, vous verrez ce qui suit:

Il s'agit de la version 1.0.3 de nfcpy exécutée en Python 2.7.16 sur Linux-4.19.97-v7+-armv7l-with-debian-10.3

Je recherche maintenant sur votre système des appareils sans contact ** trouvé ACS ACR122U PN532v1.6 à usb:001:011 Je n'essaie pas de périphériques série parce que vous ne me l'avez pas dit -- ajoutez l'option '--search-tty' me faire regarder - mais attention, cela peut casser d'autres développeurs en série

Cependant, il y a de fortes chances que vous receviez un message d'erreur indiquant que le lecteur a été trouvé mais que votre utilisateur (pi) n'a pas la permission d'y accéder. Si vous obtenez ce message d'erreur, il vous expliquera également comment résoudre le problème, en tapant deux commandes qui ressemblent un peu à ce qui suit:

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

contrôle sudo udevadm -R

Copiez et exécutez les deux commandes qu'il vous donne (pas exactement ce qui est ci-dessus, car les vôtres peuvent être différentes), puis débranchez et rebranchez votre lecteur NFC du port USB.

Essayez à nouveau la commande check:

python -m nfc

Cette fois, il devrait dire qu'il l'a trouvé sans messages d'erreur.

Étape 21: Installez les scripts Python Vinylemulator

Nous avons maintenant tous les blocs de construction en place:

  • Notre Raspberry Pi est capable d'écouter l'entrée NFC
  • Notre Raspberry Pi est capable de dire à Sonos de lire les listes de lecture Spotify lorsqu'il reçoit un URI Spotify
  • Nous avons une balise NFC avec un URI Spotify stocké dessus

Maintenant, nous devons rassembler tous ces éléments constitutifs en quelque chose d'utile. Cela se fait via un court script python que j'ai écrit (avec beaucoup d'aide des précédents projets NFC/Spotify/Sonos) qui s'appelle vinylemulator.

Vous pouvez afficher le code source des fichiers sur github:

Pour l'installer sur notre Raspberry Pi, nous devons le cloner à partir de github avec la commande suivante:

git clone

Étape 22: Personnaliser Vinylemulator

Personnaliser l'émulateur de vinyle
Personnaliser l'émulateur de vinyle
Personnaliser l'émulateur de vinyle
Personnaliser l'émulateur de vinyle

Ouvrez le gestionnaire de fichiers Raspberry Pi et accédez à accueil > pi > vinylemulator

Ouvrez le fichier usersettings.py

L'une des lignes de ce fichier indiquera:

sonosroom="Salle à manger"

Remplacez "Salle à manger" par le nom de la salle Sonos que vous souhaitez contrôler.

Il existe également un paramètre dans ce fichier qui vous permet de personnaliser l'adresse IP du sonos-http-api. Vous devriez pouvoir laisser cela inchangé en tant que "localhost", ce qui signifie simplement qu'il utilisera le Raspberry Pi sur lequel il s'exécute.

Enregistrez le fichier et fermez-le.

Étape 23: Testez l'émulateur de vinyle

Tester l'émulateur de vinyle
Tester l'émulateur de vinyle
Tester l'émulateur de vinyle
Tester l'émulateur de vinyle

Accédez à votre invite de commande Raspberry Pi.

Saisissez la commande suivante:

python vinylemulator/readnfc.py

Si tout va bien, cela chargera le script et dira que le lecteur est prêt. Le voyant du lecteur doit passer au vert.

Mettez le tag NFC sur le lecteur, qui émettra un bip.

Le terminal affichera ce qu'il a lu dans la balise NFC et affichera l'adresse de requête HTTP qu'il a envoyée. L'album de votre choix doit être lu sur vos haut-parleurs Sonos.

Ce script continuera à s'exécuter jusqu'à ce que vous fermiez la fenêtre du terminal. Vous pouvez appuyer sur différentes balises NFC d'album et cela passera à cet album.

Étape 24: faire fonctionner Vinylemulator en permanence et au démarrage

Tout comme le sonos-http-api, nous voulons que vinylemulator s'exécute tout le temps plutôt que juste au moment où nous l'appelons. Nous pouvons utiliser pm2 pour recommencer.

Fermez d'abord toutes les instances de vinylemulator que vous exécutez en fermant leurs fenêtres de terminal.

Ouvrez ensuite une nouvelle fenêtre de terminal et tapez les deux commandes suivantes:

pm2 démarrer vinylemulator/readnfc.py

pm2 enregistrer

Vérifions si cela a fonctionné en redémarrant le Raspberry Pi. (Vous pouvez soit taper sudo reboot, soit le faire à partir du menu Raspberry avec votre souris.

Attendez que le Pi redémarre et voyez qu'il fonctionne en appuyant sur une étiquette NFC sur le lecteur. Tu devrais avoir de la musique.

Étape 25: Félicitez-vous

Tout est désormais fonctionnel. Vous pouvez déplacer le Raspberry Pi là où vous prévoyez de l'installer. Il redémarrera et fonctionnera comme vous l'avez configuré à chaque fois que vous le branchez.

Vos prochaines tâches sont les plus amusantes: rendre le tout beau.

Étape 26: Rendez-le beau - Cachez votre lecteur

Make It Beautiful - Cachez votre lecteur
Make It Beautiful - Cachez votre lecteur
Make It Beautiful - Cachez votre lecteur
Make It Beautiful - Cachez votre lecteur
Make It Beautiful - Cachez votre lecteur
Make It Beautiful - Cachez votre lecteur
Make It Beautiful - Cachez votre lecteur
Make It Beautiful - Cachez votre lecteur

La première partie pour le rendre beau est de cacher le méchant lecteur NFC en plastique blanc quelque part.

J'ai opté pour une option résolument low-tech consistant à le coller sous un comptoir à côté de mon Sonos Play:5. Le bois du comptoir est suffisamment fin pour que le NFC puisse passer, alors je joue de la musique en tapant sur un tag NFC sur un endroit magique et invisible.

Conseillé: