Mopidy le serveur de musique à la maison
Posted on Sat 19 August 2017 in Hardware
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
Oui je n'ai pas trouvé mon bonheur tout de suite. Après plusieurs essais je conseille Iris + Musicbox. Iris ressemble à ça sur laptop
Sur téléphone dans un navigateur (à gauche) il existe aussi une application dédiée Mopidy Mobile (via protocole MPD)
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.