Mopidy le serveur de musique à la maison

Posted on Sat 19 August 2017 in Hardware

mopidy

Nouveau RPi reçu j'essaye des choses, je voulais depuis quelques temps installer une solution permettant de jouer de la musique sur les enceintes du salon et contrôlable à distance depuis smartphone/tablette/laptop.

Pour ça j'ai installé la solution Mopidy sur une base Raspbian (Debian compilé ARM pour RaspberryPi)

Comment faire ? Aller on y va

Télécharger et installer Raspbian (Lite) sur une carte microSD, utiliser Etcher pour ça, c'est intuitif.

[embed]https://www.youtube.com/watch?v=blgdBzcu80U[/embed]

Brancher le RPi sur un écran + clavier, par defaut le clavier est en qwerty donc on va faire en sorte que le machin soit correctement configuré pour avoir du réseau et que votre clavier azerty soit correctement mappé

Hint : les identifiants par défaut sont pi/raspberry  (tapez rqspberry donc)

On se cale en root parce qu'on est grand, et on règle la timezone

sudo su
dpkg-reconfigure tzdata

Modifier l'agencement du clavier en utilisant la commande

raspi-config

Fichier de configuration réseau (vide par défaut) : /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto wlan0
iface wlan0 inet dhcp

Il manque quelques outils de base pour diagnostiquer deux trois choses

apt install vim htop screen

Un petit reboot et on passe à l'installation de Mopidy. Ajouter le dépôt de paquet Mopidy

wget -q -O - https://apt.mopidy.com/mopidy.gpg | sudo apt-key add -
wget -q -O /etc/apt/sources.list.d/mopidy.list https://apt.mopidy.com/stretch.list
apt-get update

Installer mopidy + python-pip + les paquets supplémentaires (Spotify, SoundCloud, Youtube, Interface Iris)

apt-get install mopidy mopidy-youtube mopidy-spotify mopidy-soundcloud mopidy-podcast
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
pip install Mopidy-Iris
pip install Mopidy-Spotify-Web
pip install Mopidy-MusicBox-Webclient

Voila le machin est installé. Mais il va falloir configurer la chose. Explications

  • Mopidy en standalone va chercher le fichier de configuration dans \~/.config/mopidy/.. bref c'est de la merde.
  • Mais! Mopidy est prévu pour tourner en tant que service, c'est mieux.
  • Et en tant que service, il va taper dans /etc/mopidy/mopidy.conf. AH!
  • Mopidy ne balance rien à l'affichage, il ne sort que du son sur HDMI ou sortie jack du RPi.
  • Mopidy écoute par défaut sur les ports 6680 (interface web) et 6600 (interface MPD) mais uniquement en localhost. Je garde ça par défaut, défois que je voudrais coller un service web un jour sur le RPi.

Le fichier de configuration /etc/mopidy/mopidy.conf doit ressembler à quelque chose comme ça.

[core]
cache_dir = /var/cache/mopidy
config_dir = /etc/mopidy
data_dir = /var/lib/mopidy

[logging]
config_file = /etc/mopidy/logging.conf
debug_file = /var/log/mopidy/mopidy-debug.log

[local]
media_dir = /var/www/media

[m3u]
playlists_dir = /var/lib/mopidy/playlists

[mpd]
enabled = true
hostname = 0.0.0.0
port = 6600
password =
max_connections = 20
connection_timeout = 60
zeroconf = Mopidy $hostname
command_blacklist =
  listall
  listallinfo
default_playlist_scheme = m3u

[http]
enabled = true
hostname = 0.0.0.0
port = 6680
static_dir =
zeroconf = Mopidy $hostname

[spotify]
username = identifiant_spotify
password = mot_de_passe_spotify
client_id = id_client_a_generer
client_secret = secret_a_generer
toplist_countries = FR

[spotify_web]
client_id = id_client_a_generer
client_secret = secret_a_generer

[soundcloud]
auth_token = token_a_generer

[iris]
country = fr
locale = fr_FR

Pour la plupart des paramètres c'est "classique" pour un fichier de conf, ip, port, description, truc. J'ai déplacé le dossier de media par défaut dans /var/www/media ça m'emmerdai de laisser ça dans /var/lib/mopidy

Attention : Pour pouvoir utiliser le streaming Spotify il faut un compte Spotify Premium

  • Pour la partie Spotify, les valeurs a renseigner sont vos identifiants/mot de passe + un id/secret à récupérer depuis le site https://www.mopidy.com/authenticate/#
  • Idem pour Soundcloud : https://www.mopidy.com/authenticate/#

Ok une fois que c'est bon pour la configuration on peut lancer le serveur

systemctl enable mopidy
systemctl start mopidy

Pour voir si tout se lance bien

tail -f /var/log/mopidy/mopidy.log

Si le module Spotify à bien réussi à s'authentifier :

2017-08-18 23:55:25,074 INFO [10372:SpotifyEventLoop] spotify.session: Spotify logged in
2017-08-18 23:55:25,075 INFO [10372:SpotifyEventLoop] mopidy_spotify.backend: Logged in to Spotify in offline mode
2017-08-18 23:55:25,642 INFO [10372:SpotifyEventLoop] mopidy_spotify.backend: Logged in to Spotify in online mode

Sinon

2017-08-18 21:00:04,530 WARNING [6300:MainThread] mopidy.__main__: Found spotify configuration errors, the extension has been automatically disabled:
2017-08-18 21:00:04,531 WARNING [6300:MainThread] mopidy.__main__: spotify/client_secret must be set.
2017-08-18 21:00:04,532 WARNING [6300:MainThread] mopidy.__main__: spotify/client_id must be set.

Et comment utiliser ça maintenant ? http://\<ip raspberrypi>:6680 dans un navigateur et on récupère la liste des interface web disponibles

mopidy

Oui je n'ai pas trouvé mon bonheur tout de suite. Après plusieurs essais je conseille Iris + Musicbox. Iris ressemble à ça sur laptop

mopidy

Sur téléphone dans un navigateur (à gauche) il existe aussi une application dédiée Mopidy Mobile (via protocole MPD)

mopidy

Quelques notes :

  • La fonctionnalité Spotify permet de jouer de la musique depuis votre compte Spotify Premium sur le RPi en le controllant depuis une interface web (laptop/tablette/mobile). Elle ne permet pas d'utiliser la fonctionnalitée "Spotify Connect" donc n'est pas contrôllable depuis l'application Spotify directement.
  • Pour la locale je viens de me rendre compte qu'il me crois en Nouvelle Zélande, doit y'avoir une merde quelque part
  • La fonction recherche permet de recherche dans Spotify+SoundCloud+Localement. C'est puissant
  • Sur RPi3 le son est clean en sortie HDMI, crado en sortie jack. Dunno why
  • L'interface Iris est très orienté Spotify, pour être complet je laisse l'interface Musicbox qui permet de balancer du Youtube/SoundCloud/Local/Podcast plus simplement
  • J'ai coller RasperryCast en plus sur le même RPi ça ne rentre pas en conflit, les deux sont compatibles.

Voilà amusez vous bien, c'est simple à mettre en place (avec un minimum de techskilz), ça peut être sympa comme solution de musique partagée en soirée ou au bureau (avec ses risques et périls), vraiment efficace avec un compte Spotify Premium.