Pi-Sonos v2.0 o la evolución de la radio por Internet en la Raspberry Pi

imagen Como sabes, no hay límite para la perfección. Incluso para acústica portátil casera, cuya audiencia de usuarios incluye solo una persona. Una persona muy exigente y a veces tercamente maníaca. Después del lanzamiento de la primera publicación sobre Pi-Sonos, pasaron casi 5 meses. Durante este tiempo, el software dentro de esta acústica logró cambiar dramáticamente dos veces. La razón de los cambios fueron los consejos útiles de los habitantes de Habrach y su propia experiencia de usuario.

Un poco de historia para aquellos que son demasiado flojos para leer o que ya han olvidado el primer artículo.
Pi-Sonos es una acústica compacta hecha en casa, cuya creación se inspiró en Sonos Play 1. El objetivo de esta acústica era, en primer lugar, reproducir música de las estaciones de radio por Internet. Al crearlo, pongo el minimalismo y la conveniencia a la vanguardia: lo enchufé a una toma de corriente y luego, en cualquier lugar de la casa, controlo la música desde su teléfono inteligente / computadora / tableta.

¿De qué trata este artículo?
En primer lugar, sobre la perseverancia y la curiosidad en el camino hacia el ideal. Bajo el corte, nombre de usuario , no habrá una solución para ningún problema global, ni una descripción de una nueva tecnología única. El artículo solo presenta una comparación de los centros de medios populares para Raspberry Pi, revela sus ventajas y desventajas, así como mi visión personal del marco óptimo para una radio por Internet. De hecho, mientras desarrollaba mi propio software para la columna, solo repetí parcialmente el camino de los creadores de Volumio, dándome cuenta desde cero de una de sus funciones (léase: "inventó otra bicicleta").
A pesar de que el artículo aborda el tema del desarrollo de software, no contiene código, porque el propósito del artículo es describir la idea y la funcionalidad, y no el proceso de su implementación. Si el tema del código es interesante para los residentes, intentaré dominar un artículo separado que describa el proceso de desarrollo.

Inicialmente, el software de relleno para acústica era OSMC , pero las personas sabias en los comentarios llamaron la atención sobre el hecho de que Kodi (también conocido como OSMC) es demasiado audaz como el "cerebro" para una estación de radio por Internet. Es demasiado inteligente y grande, solo para proyectos de audio Volumio es mejor. En realidad, resultó de esa manera. Volumio es más liviano, agudizado por la interfaz web y tiene una API más avanzada y fácil de desarrollar. Además, no es necesario que un cable HDMI sobresalga por detrás, porque Volumio es totalmente personalizable en cualquier navegador.

Sin embargo, Volumio también mostró un par de deficiencias importantes que me llevaron a seguir investigando. Este es, en primer lugar, el tiempo de descarga y, en segundo lugar, la falta de reproducción automática. Después de estudiar la documentación oficial (de la cual se puede entender que Volumio es un complemento en mpd (Music Player Daemon)), decidí que era hora de escribir mi propio contenedor llamado RPi-Radio en js que resolvería estos problemas. Su parte del servidor se ejecuta en Node.js, y la parte del cliente (GUI) que usa React.js ha estado lista desde OSMC, solo necesitaba ser ajustada. Ahora se ve en la pantalla del teléfono inteligente:


A continuación se muestra una placa que muestra claramente las desventajas y ventajas de cada uno de los marcos.
CriterioOSMCVolumioRPi-Radio
Tiempo de carga35 segundos45 segundos20 segundos
Inicio Auto Playno *no *si
El número de cintas de la pantalla principal de la GUI "nativa" en el teléfono inteligente para seleccionar una estación de radio de la lista de favoritos **5 + 1 desplazamiento4 41
La necesidad de un monitor, teclado y mouse ***sinono
Gestión webparcialcompletarparcial
Edición de la lista de estacionesmás o menoslas normasmás o menos
Fácil configuración inicialmás o menosgenialmediocre
Integración con la GUI de mi teléfono inteligentecon muletascon muletasfuera de la caja
Conveniencia de uso diario☆☆☆☆☆
* en realidad sí, pero necesita hacer una muleta y palma de su inicio Raspbian; en el caso de OSMC, la muleta está escrita en python, y en el caso de Volumio, en js o bash. Pero en ambos casos, todavía no funciona como nos gustaría.
** para OSMC y Volumio, estos son parámetros muy importantes, porque todos estos desplazamientos de tap deben realizarse cada vez que enciende la columna. Para RPi-Radio, este parámetro, aunque mínimo, todavía no es tan importante, ya que la columna comienza a reproducirse cuando se enciende.
*** Me refiero a la conexión física del monitor, el teclado y el mouse con la Raspberry Pi, es decir, aquellos casos en los que no hay forma de evitar la interfaz web incorporada o la conexión ssh.

Debajo de este spoiler hay una explicación detallada de cada uno de los puntos de comparación.
Un tiempo de arranque de 20 segundos es, en mi opinión, el mínimo que se puede lograr sin sumergirse en la locura de optimizar Raspbian para este proyecto. Ese es el tiempo que le toma a Malinka cargar el sistema operativo e iniciar el servicio mpd. Probablemente, este resultado puede mejorarse si reemplaza microSDHC con microSDXC con una velocidad de lectura / escritura más alta (comprobaré si es posible). Sorprendentemente, Volumio, pretendiendo ser ligero y ágil, tarda más en cargar que el monstruo recolector OSMC. 45 segundos de espera están más allá del umbral de operación cómoda, y esta fue la razón principal para abandonar Volumio.

La reproducción automática está presente en mpd fuera de la caja, no tuve que hacer nada para activarla, ¡convenientemente! En Volumio, aunque es un contenedor de mpd, esta función se estranguló en aras de un hermoso sonido de saludo. Como ya escribí, puedes hacer un script y ponerlo en el inicio. La situación es similar para OSMC.

OSMC tiene la mayor parte de la interacción del usuario a través del monitor: hay una interfaz hermosa, la capacidad de ver videos, fotos, leer noticias y ver el clima; hay muchas cosas que mi columna nunca hará en mi vida.

Pero la administración web de OSMC es muy limitada y ni siquiera puede configurar de forma remota la lista de sus estaciones favoritas en el complemento de Radio, solo a través del monitor. En Volumio, por el contrario, todo es solo a través de la interfaz web. La edición de la lista de estaciones es más conveniente en el navegador en la computadora de escritorio / portátil, pero también es posible en el teléfono inteligente si lo desea. Con RPi-Radio, solo puede seleccionar una estación y ajustar el sonido a través de la interfaz web. La lista de estaciones y, de hecho, todo lo demás debe hacerse a través de la consola a través de ssh. La lista de estaciones es la más difícil: si OSMC y Volumio tienen sus propias bibliotecas extensas de estaciones de radio por Internet, entonces en RPi-Radio tuve que ingresar manualmente las direcciones de mis estaciones favoritas en formato JSON. Inconvenientemente, pero solo una (o varias) veces en la vida.

Con la configuración inicial, OSMC es lo peor. Primero debe conectar un monitor a la "frambuesa" y configurar el complemento de Radio, luego debe configurar la salida de sonido al IQAudio DAC externo (el mismo que el de la placa Suptronics X400) a través de la consola o mediante ssh. RPi-Radio tiene la misma configuración de DAC, pero al menos todo lo demás también se hace a través de ssh. El líder en esta categoría, por supuesto, es Volumio: para emitir sonido a través de un DAC externo, solo necesita seleccionar el elemento apropiado de la lista desplegable en el menú de configuración. Hay una comparación incluso en el sitio web oficial de Suptronics (http://www.suptronics.com/xseries/x400.html)

La GUI en RPi-Radio es una página web simple implementada en React.js. La parte del servidor, que es responsable de la interacción entre la GUI del cliente y mpd, se ejecuta en Node.js y es un servidor HTTP y WebSocket simple basado en la Socket.io + http + express . Se ejecuta en Raspbian como un servicio cuando el sistema se enciende inmediatamente después de que se inicia el servicio mpd y utiliza el módulo mpc-js para controlar mpd. La GUI del cliente es accesible para cualquier navegador en mi red doméstica simplemente por ip o nombre de host "raspberry". Perfecto

Las fuentes de RPi-Radio se publican en Github . En el mismo repositorio, en los brunches correspondientes, puede encontrar ambas adaptaciones de GUI para trabajar con OSMC y Volumio.

El resultado de mis ejercicios, RPi-Radio, está más allá del alcance de una simple adición a una sola columna. Este es un tipo de solución preparada que convierte no solo el Raspberry Pi en un receptor de radio por Internet, sino también cualquier dispositivo con salida de audio, acceso a Internet y la capacidad de ejecutar mpd y Node.js. La principal ventaja de este sistema es la falta de todo lo que es superfluo. En realidad, como se hizo en Sonos, en el ideal que me esfuerzo por lograr.

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


All Articles