Streamer des fichiers audio avec homeassistant et mopidy
Tags: stream, modipy, homeassistant, ubuntu
Published: 2022-04-21 13:23:08

---
title: Streamer des fichiers audio avec homeassistant et mopidy
published: true
description: Streamer des fichiers audio depuis un serveur homeassistant vers des periphériques modipy 
tags: 
- stream
- modipy
- homeassistant
- ubuntu
//cover_image: https://direct_url_to_image.jpg
---

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](https://raspberry-pi.fr/telechargements/) et le serveur principal est sous [ubuntu 20.04 (LTS)](https://www.ubuntu-fr.org/download/).

# Préparation périphérique Mopidy
Afin de pouvoir lire de la musique depuis un Raspberry pi, je vais installer l'application [Mopidy](https://mopidy.com).
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
```

Ajout de la nouvelle source de paquet
```
sudo wget -q -O /etc/apt/sources.list.d/mopidy.list https://apt.mopidy.com/buster.list
```

Installation de Mopidy
```
sudo apt update
sudo apt install mopidy
```

[source](https://docs.mopidy.com/en/latest/installation/debian/)

## 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](https://mopidy.com/ext/)

### Mopidy-MDP

pour installer l'extension: 
```
sudo python3 -m pip install Mopidy-MPD
```

Ensuite, je passe à la configuration:
```
sudo nano /etc/mopidy/mopidy.conf
```

et j'y ajoute les lignes suivante
```
[mpd]
enabled = true
hostname = 192.168.0.48
port = 6600

``` 

"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](https://mopidy.com/ext/mpd/)

### Mopidy-Iris

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

```
sudo python3 -m pip install Mopidy-Iris
```

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

Aucune configuration est requise.

[source](https://mopidy.com/ext/iris/)

### 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
```

"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
```

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
```

Créer un compte utilisateur sur le serveur
```
sudo useradd -rm homeassistant
```

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
```

Une fois l'environement activé, il est necessaire d'installer le paquet python suivant
```
python3 -m pip install wheel
```

Il est maintenant temps d'installer homeassistant
```
pip3 install homeassistant
```

Pour démarrer homeassistant
```
hass
```
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](https://www.home-assistant.io/installation/linux#install-home-assistant-core)


# 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
```

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
```

"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](https://www.home-assistant.io/integrations/mpd/)

## 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
```

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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e8dpde2939iayqr54mvn.png)

Clic sur le bouton "Ajouter une carte"

![bouton ajouter carte](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/681altloq6s1zxsqcx75.png)

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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x6osh7qrcpi17s618nqs.png)

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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y7jcndwejfzwmnsqc3it.png)

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

![selection media](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/45sefb7qgun140nda1pb.png)

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




# lien supplémentaire
- [video explicative](https://www.youtube.com/watch?v=0YnSwYFpzDA)