DEV Community

Remy Jacquand
Remy Jacquand

Posted on

Streamer des fichiers audio avec homeassistant et mopidy

Dans ce billet, je vais expliquer la mise en place d'un système permettant la diffusion de fichier audio vers différents périphériques connectés.
Je prendrai comme contexte les éléments suivants : je suis dans un lieu possédant 3 pièces.
Dans les pièces 1 et 2 y est disposé un Raspberry pi (3 ou 4) raccordé a des enceintes.
Dans la pièce 3 se trouve le serveur permettant de diffuser les fichiers audio vers les Raspberry pi des autres pièces.
Les Raspberry pi sont sous la distribution raspbian lite et le serveur principal est sous ubuntu 20.04 (LTS).

Préparation périphérique Mopidy

Afin de pouvoir lire de la musique depuis un Raspberry pi, je vais installer l'application Mopidy.
Mopidy est un lecteur de fichier audio avec plusieurs plugin intéressant tel qu'un plugin spotify, soundcloud, TuneIn et avec plusieurs thèmes ect...

Via son plugin mopidy-mdp, je vais pouvoir contrôler la lecture depuis d'autres applications. Home Assistant dans notre cas.

Je me connecte donc à un des deux Raspberry pi en gardant en tête que je devrai refaire la même oopération sur l'autre.

Installation Mopidy

Ajout de l'archive GPG

sudo mkdir -p /usr/local/share/keyrings
sudo wget -q -O /usr/local/share/keyrings/mopidy-archive-keyring.gpg \ 
    https://apt.mopidy.com/mopidy.gpg
Enter fullscreen mode Exit fullscreen mode

Ajout de la nouvelle source de paquet

sudo wget -q -O /etc/apt/sources.list.d/mopidy.list https://apt.mopidy.com/buster.list
Enter fullscreen mode Exit fullscreen mode

Installation de Mopidy

sudo apt update
sudo apt install mopidy
Enter fullscreen mode Exit fullscreen mode

source

Installation des extensions

Parmis les extensions, seulement 2 sont intéressantes pour le projet : mopidy-mpd et mopidy-iris

Modipy-MPD permettra de contrôler la lecture depuis Home Assistant et Mopidy Iris est une interface graphique pour simplifier son utilisation direct

La liste des extensions disponibles sont accessible au lien suivant : liste des extensions

Mopidy-MDP

pour installer l'extension:

sudo python3 -m pip install Mopidy-MPD
Enter fullscreen mode Exit fullscreen mode

Ensuite, je passe à la configuration:

sudo nano /etc/mopidy/mopidy.conf
Enter fullscreen mode Exit fullscreen mode

et j'y ajoute les lignes suivante

[mpd]
enabled = true
hostname = 192.168.0.48
port = 6600

Enter fullscreen mode Exit fullscreen mode

"enabled" correspond a l'activation de l'extension.
"hostname" est l'adresse IP de la machine sur laquelle je suis.
"port" est à 6600, ce qui est le port par défaut de mpd.

source

Mopidy-Iris

Voici la commande pour l'installation de l'interface graphique Iris

sudo python3 -m pip install Mopidy-Iris
Enter fullscreen mode Exit fullscreen mode

Rien n'oblige à utiliser spécifiquement cette interface. Elle est installé juste par soucis esthétique.

Aucune configuration est requise.

source

configuration HTTP

Afin d'accéder pour navigateur web a Mopidy, il faut configurer son accès. Pour cela, il faut ajouter les lignes suivantes dans le fichier "/etc/mopidy/mopidy.conf"

[http]
enabled = true
hostname = 192.168.0.48
Enter fullscreen mode Exit fullscreen mode

"enabled" active l'extension
"hostname" est l'adresse de notre Raspberry pi

Maintenant, mopidy est accessible par le navigateur à l'adresse du Raspberry pi et au port 6680 (pour ma part http://192.168.0.48:6680)

Il faut maintenant effectué la même installation sur l'autre Raspberry pi en prenant soin de changer l'adresse IP.

Préparation du serveur HomeAssistant

Ce serveur Permettra de diffuser et de controller la lecture d'un ou plusieurs fichiers audio vers les lecteur Mopidy installer précédement.

Pour commencer, il faut se rendre sur le serveur et y faire les mise à jour

sudo apt-get update
sudo apt-get upgrade -y
Enter fullscreen mode Exit fullscreen mode

Ensuite, installer les dependances

sudo apt-get install -y python3 python3-dev python3-venv python3-pip libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libtiff5 libturbojpeg0-dev tzdata
Enter fullscreen mode Exit fullscreen mode

Créer un compte utilisateur sur le serveur

sudo useradd -rm homeassistant
Enter fullscreen mode Exit fullscreen mode

Ainsi qu'un environement virtuel

sudo mkdir /srv/homeassistant
sudo chown homeassistant:homeassistant /srv/homeassistant
sudo -u homeassistant -H -s
cd /srv/homeassistant
python3 -m venv .
source bin/activate
Enter fullscreen mode Exit fullscreen mode

Une fois l'environement activé, il est necessaire d'installer le paquet python suivant

python3 -m pip install wheel
Enter fullscreen mode Exit fullscreen mode

Il est maintenant temps d'installer homeassistant

pip3 install homeassistant
Enter fullscreen mode Exit fullscreen mode

Pour démarrer homeassistant

hass
Enter fullscreen mode Exit fullscreen mode

Et l'interface de Home Assistant est maintenant accessible depuis le navigateur à l'adresse IP du serveur et au port 8123 (http://192.168.0.79:8123)

source

Configuration de Home Assistant

Configuration des contrôles des Raspberry pi par MPD

Afin de pouvoir faire lire aux Raspberry pi des fichiers audio depuis Home Assistant, il faut déclarer les adresses d'accès des Raspberry pi dans la configuration de Home Assistante.

sudo vim /home/homeassistant/.homeassistant/configuration.yaml
Enter fullscreen mode Exit fullscreen mode

et ajouter les lignes suivantes

media_player:
        - platform: mpd
          host: 192.168.0.48
          port: 6600
          name: rpi48
        - platform: mpd
          host: 192.168.0.35
          port: 6600
          name: rpi35
Enter fullscreen mode Exit fullscreen mode

"platform": correspond à l'entité utilisé
"host": c'est l'adresse IP de la machine à contrôler
"port": le port d'accès
"name": le nom qui apparaitra dans l'interface de Home Assistant afin de le repérer plus facilement

Ici, j'ai déclaré les 2 Raspberry pi que j'ai configuré précédement

source

Mise en place de l'espace media

Il existe un espace par defaut où Home Assistant va chercher les fichiers audio. Ce dossier "media" se trouvant à "/home/homeassistant/.homeassistant/"

sudo mkdir /home/homeassistant/.homeassistant/media
Enter fullscreen mode Exit fullscreen mode

C'est dans ce dossier que vous pouvez disposer vos fichiers audio à diffuser

Test

Une fois Home Assistant configuré et démarré, il faut placer les fichiers audio dans le dossier "/home/homeassistant/.homeassistant/" du serveur Home Assistant et ajouter les cartes de contrôle de chaque Raspberry pi sur le reseau.

Ajout des cartes de contrôle de média

Pour cela il faut cliquer sur l'icone "menu" en haut à droite de la page puis sur modifier le tableau de bord.

Modifier le tableau de bord

Clic sur le bouton "Ajouter une carte"

bouton ajouter carte

Dans la nouvelle fenêtre, il faut chercher le terme "media" et cliquer sur la carte "Contrôle des medias"

Selection carte contrôle media

Selectionner une des entités proposé que nous avons déclaré dans le fichier de configuration "/home/homeassistant/.homeassistant/configuration.yaml"
Pour mon exemple, ça sera les entités rpi48 et rpi35.

Une fois les cartes ajoutées, il est maitenant possible de diffuser un fichier audio vers le périphéque souhaité.

Diffusion du fichier audio

Pour diffuser un fichier audio que nous avons stocké au préalable sur le serveur Home Assistant, il faut repérer la carte du raspberry pi souhaité et cliquer sur le logo "media" en bas à droite de la carte.

logo media

Selectioner "Local Media" et sélectionner le fichier audio souhaité.

selection media

le fichier est maintenant lu sur le périphérique souhaité

lien supplémentaire

Discussion (0)