Pi-Sonos v2.0 ou l'évolution de la radio Internet sur le Raspberry Pi

image Comme vous le savez, il n'y a pas de limite à la perfection. Même pour l'acoustique portable maison, dont le public d'utilisateurs ne comprend qu'une seule personne. Une personne très exigeante et parfois têtue maniaque. Après la publication du premier article sur Pi-Sonos, près de 5 mois se sont écoulés. Pendant ce temps, le logiciel à l'intérieur de cette acoustique a réussi à changer radicalement deux fois. La raison de ces changements était à la fois les conseils utiles des Habrachiens et leur propre UX.

Un peu d'histoire pour ceux qui sont trop paresseux pour lire ou qui ont déjà oublié le premier article
Pi-Sonos est une acoustique compacte faite maison, dont la création a été inspirée par Sonos Play 1. Le but de cette acoustique était, tout d'abord, de jouer de la musique à partir de stations de radio Internet. Lors de sa création, j'ai mis le minimalisme et la commodité au premier plan: je l'ai branché sur une prise de courant, puis, partout dans la maison, contrôlez la musique depuis votre smartphone / ordinateur / tablette.

De quoi parle cet article
Tout d'abord, sur la persévérance et la curiosité sur le chemin de l'idéal. Sous la coupe, nom d'utilisateur , il n'y aura ni solution à aucun problème global, ni description d'une nouvelle technologie unique. L'article présente simplement une comparaison des centres de médias populaires pour le Raspberry Pi, révèle leurs forces et leurs faiblesses, ainsi que ma vision personnelle du cadre optimal pour une radio Internet. En fait, en développant mon propre logiciel pour le haut-parleur, je viens de répéter partiellement le parcours des créateurs de Volumio, réalisant à partir de rien une seule de ses fonctions (lire: «inventé un autre vélo»).
Malgré le fait que l'article traite du thème du développement logiciel, il n'y a pas de code, car le but de l'article est de décrire l'idée et la fonctionnalité, et non le processus de sa mise en œuvre. Si le sujet du code est intéressant pour les résidents, je vais essayer de maîtriser un article distinct décrivant le processus de développement.

Initialement, le bourrage logiciel pour l'acoustique était OSMC , mais les gens sages dans les commentaires ont attiré l'attention sur le fait que Kodi (alias OSMC) est trop audacieux comme le "cerveau" d'une station de radio Internet. Il est trop intelligent et grand, seulement pour les projets audio Volumio est meilleur. En fait, cela s'est avéré de cette façon. Volumio est plus léger, affiné par l'interface Web et dispose d'une API plus avancée et plus facile à développer. De plus, il n'est pas nécessaire qu'un câble HDMI dépasse de l'arrière, car Volumio est entièrement personnalisable dans n'importe quel navigateur.

Cependant, Volumio a également montré quelques lacunes importantes qui m'ont incité à poursuivre mes recherches. C'est, d'une part, le temps de téléchargement, et d'autre part, le manque de lecture automatique. Après avoir étudié la documentation officielle (à partir de laquelle on peut comprendre que Volumio est un module complémentaire sur mpd (Music Player Daemon)), j'ai décidé qu'il était temps d'écrire mon propre wrapper appelé RPi-Radio sur js qui résoudrait ces problèmes. Sa partie serveur fonctionne sur Node.js, et la partie client (GUI) utilisant React.js est prête depuis OSMC, elle n'avait besoin que d'être modifiée. Il ressemble donc maintenant à l'écran du smartphone:


Vous trouverez ci-dessous une plaque qui montre clairement les inconvénients et les avantages de chacun des cadres.
CritèreOSMCVolumioRPi-Radio
Temps de chargement35 sec45 sec20 sec
Démarrage de la lecture automatiquenon *non *oui
Le nombre de bandes de l'écran principal de l'interface graphique «native» sur le smartphone pour sélectionner une station de radio dans la liste des favoris **Défilement 5 + 141
La nécessité d'un moniteur, d'un clavier et d'une souris ***ouinonnon
Gestion Webpartielcompletpartiel
Modification de la liste des stationsbofles normesbof
Configuration initiale facilebofsupermédiocre
Intégration avec l'interface graphique de mon smartphoneavec des béquillesavec des béquilleshors de la boîte
Commodité d'utilisation quotidienne☆☆☆☆☆
* en fait oui, mais vous devez faire une béquille et palmer son démarrage Raspbian; dans le cas d'OSMC, la béquille est écrite en python, et dans le cas de Volumio, en js ou bash. Mais dans les deux cas, cela ne fonctionne toujours pas comme nous le souhaiterions.
** pour OSMC et Volumio, ce sont des paramètres très importants, car tous ces tap-scrolls doivent être effectués à chaque fois que vous allumez la colonne. Pour RPi-Radio, ce paramètre, bien que minimal, n'est toujours pas si important, car la colonne commence à jouer d'elle-même lorsqu'elle est allumée.
*** Je veux dire la connexion physique du moniteur, du clavier et de la souris au Raspberry Pi lui-même, c'est-à-dire ces cas où il n'y a aucun moyen de contourner l'interface Web intégrée ou la connexion ssh.

Sous ce spoiler se trouve une explication détaillée de chacun des points de comparaison.
Un temps de démarrage de 20 secondes est, à mon avis, le minimum qui peut être atteint sans plonger dans les déserts d'optimisation de Raspbian pour ce projet. C'est le temps qu'il faut au Malinka pour charger le système d'exploitation et démarrer le service mpd. Probablement, ce résultat peut être amélioré si vous remplacez microSDHC par microSDXC avec une vitesse de lecture / écriture plus élevée (je vérifierai si possible). Étonnamment, Volumio, se faisant passer pour léger et agile, prend plus de temps à charger que la moissonneuse-batteuse OSMC. 45 secondes d'attente sont au-delà du seuil de fonctionnement confortable, et c'était la principale raison de quitter Volumio.

La lecture automatique est présente dans mpd hors de la boîte, je n'ai rien eu à faire pour l'activer - commodément! Dans Volumio, bien qu'il s'agisse d'un wrapper mpd, cette fonction a été étranglée pour un beau son de salutation. Comme je l'ai déjà écrit, vous pouvez créer un script et le mettre en démarrage. La situation est similaire pour OSMC.

OSMC a la plupart de l'interaction des utilisateurs via le moniteur: il y a une belle interface, la possibilité de regarder des vidéos, des photos, de lire des nouvelles et de regarder la météo - il y a beaucoup de choses que ma chronique ne fera jamais de ma vie.

Mais la gestion Web d'OSMC est très limitée, et vous ne pouvez même pas configurer à distance la liste de vos stations préférées dans le plug-in Radio - uniquement via le moniteur. Chez Volumio - au contraire, tout se fait uniquement via l'interface web. La modification de la liste des stations est plus pratique dans le navigateur sur le bureau / ordinateur portable, mais elle est également possible sur le smartphone si vous le souhaitez. Avec RPi-Radio, vous ne pouvez sélectionner qu'une station et régler le son via l'interface Web. La liste des stations, et en effet tout le reste doit être fait via la console via ssh. La liste des stations est la plus difficile: si OSMC et Volumio ont leurs propres bibliothèques complètes de stations de radio Internet, alors dans RPi-Radio j'ai dû saisir manuellement les adresses de mes stations préférées au format JSON. Inconvénient, mais seulement une (ou plusieurs) fois dans une vie.

Avec la configuration initiale, OSMC est le pire. Vous devez d'abord connecter un moniteur à la "framboise" et configurer le plugin Radio, puis vous devez configurer la sortie audio vers le DAC IQAudio externe (le même que celui de la carte Suptronics X400) via la console ou via ssh. RPi-Radio a la même configuration DAC, mais au moins tout le reste se fait via ssh aussi. Le leader dans cette catégorie, bien sûr, est Volumio - pour produire du son via un DAC externe, il vous suffit de sélectionner l'élément approprié dans la liste déroulante du menu des paramètres. Il y a une comparaison même sur le site officiel de Suptronics (http://www.suptronics.com/xseries/x400.html)

L'interface graphique de RPi-Radio est une simple page Web implémentée sur React.js. La partie serveur, qui est responsable de l'interaction entre l'interface graphique client et mpd, s'exécute sur Node.js et est un simple serveur HTTP et WebSocket basé sur la connexion express Socket.io + http +. Il s'exécute sur Raspbian en tant que service lorsque le système est mis sous mpc-js immédiatement après le démarrage du service mpd et utilise le module mpc-js pour contrôler mpd. L'interface graphique client est accessible à n'importe quel navigateur sur mon réseau domestique simplement par ip ou nom d'hôte "framboise". Parfait.

Les sources RPi-Radio sont publiées sur Github . Dans le même référentiel, dans les brunchs correspondants, vous pouvez trouver les deux adaptations GUI pour travailler avec OSMC et Volumio.

Le résultat de mes exercices, RPi-Radio, dépasse le cadre d'un simple ajout à une seule colonne. Il s'agit d'une sorte de solution prête à l'emploi qui transforme non seulement le Raspberry Pi en récepteur radio Internet, mais également tout appareil avec sortie audio, accès Internet et possibilité d'exécuter mpd et Node.js. Le principal avantage d'un tel système est le manque de tout ce qui est superflu. En fait, comme cela a été fait dans Sonos, dans l'idéal que je m'efforce d'atteindre.

Source: https://habr.com/ru/post/fr410227/


All Articles