6 min read

Multiroom audio avec Logitech Media Server, Google Cast et OpenHAB (2019)

Un système multiroom à bas coût grâce au Logitech Media Server et à Google Cast ? C'est possible, et nous allons voir comment.
Multiroom audio avec Logitech Media Server, Google Cast et OpenHAB (2019)

Ce post fait suite à l'achat d'une Google Home Mini venant compléter ma collection d'appareils compatibles Google Cast composée d'un réveil Lenovo Smart Clock et d'une box Android TV Xiaomi MiBox 3.

Après quelques expérimentations, j'ai pu réaliser un système audio multiroom commandable via OpenHAB (OH) et utilisant le protocole Google Cast pour streamer vers des appareils à coûts réduits/modérés (Chromecast, Google Home Mini, etc). Nous détaillerons dans cet article son installation, sa configuration et son intégration au sein d'OH.


Installation du Logitech Media Server (LMS)

Le coeur de notre système multiroom audio repose sur un logiciel appelé Logitech Media Server abrégé en LMS. Ce programme remonte à l'époque des Squeezebox (2001 !!), des petites radios connectées conçues et vendues par Logitech. Réservé à un marché de niche, ces produits appréciés des bidouilleurs n'ont pas su séduire le grand public malgré leur aspect innovant et connecté. Heureusement pour nous, les programmes existent toujours et il est encore possible de se fabriquer sa propre Squeezebox artisanale de nos jours.

Le produit phare de l'époque !

Pour cet article, nous partirons sur une installation Debian/Ubuntu. Vous pouvez reprendre la machine sur laquelle vous avez installé votre OpenHAB. Comme avant chaque installation de paquet, nous nous assurons d'avoir la liste des paquets à jour en utilisant la commande apt update.

Puis nous allons télécharger la dernière version publiée de notre programme sous forme de paquet deb grâce à la commande wget http://downloads.slimdevices.com/nightly/7.9/sc/cae441494d6e1ca741a3f5ab9e370e73e3bbc5fb/logitechmediaserver_7.9.2~1574959426_amd64.deb. Finalement il nous suffit d'installer le paquet grâce à la commande dpkg -i logitechmediaserver_7.9.2~1574959426_amd64.deb.
Si vous rencontrez un problème de dépendances, vous pouvez tenter de le résoudre en installant celles manquantes avec la commande apt install -f. Si vous ne disposez pas d'une machine 64 bits mais 32 bits voire ARM, vous pourrez trouver les paquets correspondants à votre architecture à l'adresse suivante.

Les plus curieux auront peut-être constaté qu'une version 10 a été publié. Il s'agit en fait d'une version limitée du LMS qui a été publiée pour des appareils étiquetés Ultimate Ears. Nous utilisons donc la dernière version du LMS, la 7.9.2.

La fin de l'installation se déroulera depuis votre navigateur web. Si l'installation du paquet s'est effectuée sans accrocs, vous devriez obtenir cette interface-ci en vous rendant à l'adresse suivante : http://<@IP de votre machine>:9000 en remplaçant @IP par l'adresse IP de votre machine. Si vous rencontrez une erreur, vous pourrez obtenir plus de détails à l'adresse http://<@IP de votre machine>:9000/server.log. Notez que l'utilisation d'un compte mysqueezebox.com est totalement optionnel.

Félicitation ! Vous disposez désormais d'une installation fonctionnelle du Logitech Media Server ! Faites le tour du propriétaire et soufflez un peu, car nous n'en avons pas fini pour cet article.

Ajout du support Google Cast

Et le premier ajout que nous allons effectuer est de permettre à notre LMS de streamer notre musique sur des appareils compatibles Google Cast. Pour ce faire, le programme dispose d'un vaste éventail de plugins permettant d'étendre ses fonctionnalités et de le personnaliser à notre souhait. Pour se faire, rendez-vous dans les paramètres du LMS, section Plugins.

Le volet Plugins du panneau de configuration

Dans la liste des plugins désactivés, il vous suffira de cocher Chromecast bridge et valider pour activer le support du protocole Google Cast. Vous devrez probablement redémarrer le service logitechmediaserver avant de pouvoir vous attaquer à sa configuration.

Rendez-vous dans le volet Avancé du panneau de configuration de votre LMS et utilisez le menu déroulant pour sélectionner Chromecast bridge. Cochez Start the bridge et Use LMS network interface, sélectionnez le binaire squeeze2cast-x86-64-static, puis appliquez les modifications. Rafraîchissez la page et vous devriez obtenir un affichage similaire à celui-ci :

Si tout va et que la passerelle Chromecast est démarrée, vous devriez voir apparaître la liste de vos appareils en bas de l'écran. Laissez cocher ceux que vous souhaitez utiliser pour diffuser de la musique, puis validez. Si tout se passe bien, vous devriez retrouver ces appareils sous forme de platines accessible par le biais du menu déroulant en haut à droite de l'interface du LMS.

Les autres serveurs LMS de votre réseau sont visibles et accessibles depuis ce menu.
Remarquez une chose amusante, LMS vous offre la possibilité de synchroniser vos appareils pour qu'ils diffusent la même musique en même temps (plus la latence entre lui et vos appareils). Pratique non ?

Intégration des services de streaming

Maintenant que nous sommes en mesure de diffuser notre musique sur nos appareils Cast, nous allons voir comment intégrer nos services de streaming préférés comme Deezer ou encore Spotify. Sans grandes surprises, nous allons passer par un plugin propre à chacun : Deezer et Spotify for Squeezebox (Spotty). Comme pour le plugin Chromecast Bridge, nous allons devoir les configurer pour lier nos comptes respectifs. Dans les deux cas vous devrez saisir vos identifiants et si tout se passe bien vous devriez voir votre service fraîchement configuré dans la section Mes applications.

Tadaaaaa, on a désormais accès à nos playlists Spotify/Deezer/autre

Arrivé à ce niveau-là, vous pouvez d'ors et déjà tester votre installation et essayer de diffuser votre playlist Spotify préférée sur votre Google Home Mini (ou tout autre appareil compatible Cast). Si tout fonctionne, vous pouvez passer à la dernière étape...

Configuration de OpenHAB

Bravo, vous voilà arrivé à la dernière étape ! Nous allons intégrer notre toute nouvelle installation du Logitech Media Server à notre box domotique. Rappelez-vous, OpenHAB vous permet d'étendre ses facultés par le biais de bindings lui permettant de pouvoir communiquer avec d'autres protocoles et/ou services tiers. Nous allons donc installer le binding Logitech Squeezebox.

Le menu Add-ons d'OpenHAB

Après avoir installé le binding et attendus quelque peu, vous devriez voir apparaître vos appareils dans le menu Inbox de l'application. Le cas contraire, vérifiez la connexion au réseau d'OpenHAB et/ou du LMS. Vous pouvez également tenter de le configurer manuellement en suivant la documentation du binding.

Et hop deux platines Squeezebox détectées automatiquement !

Je vous joins ma configuration au cas où vous souhaiteriez vous en inspirer pour votre propre usage.

OpenHAB configuration files for Logitech Squeezebox binding.
OpenHAB configuration files for Logitech Squeezebox binding. - squeezebox.items

Finalement, il ne vous reste plus qu'à créer un panel sur le HABpanel d'OH pour pouvoir profiter de votre solution multiroom. Je vous laisse quelques screenshots de mon panel pour vous donner quelques idées de disposition.

Limites de la solution

Malgré tous les efforts déployés précédemment, il subsiste certains problèmes à cette solution que je me dois de détailler ici :

  1. Il n'est pas possible de lancer une playlist favorite depuis OpenHAB : la sélection des favoris se limite à des pistes audio placées à la racine du dossier favoris. Si vous souhaitez placer une playlist dans la file d'attente, vous devrez passer par l'interface web du LMS. Celle-ci a le mérite d'être à peu près ergonomique sur un affichage tactile comme une tablette. N'hésitez pas à dédier un panel de votre HABpanel pour son affichage (voir ci-dessus).