# Pilotage TV avec Raspberry Pi

## 1. Présentation du projet

Ce système permet de transformer une TV connectée à un Raspberry Pi 4B en un support de communication dynamique.

- **Objectif :** Diffuser en boucle des médias (images/vidéos) gérés à distance.
- **Principe :** Un dossier partagé sur le réseau permet de mettre à jour les contenus, tandis qu'un script lance automatiquement la lecture sur la TV.

---

## 2. Architecture Technique

Le système repose sur trois briques logicielles principales :

1. **Samba (SMB) :** Pour le partage de fichiers entre le Pi et les ordinateurs du lab (Mac/PC).
2. **VLC (cvlc) :** Pour le moteur de rendu vidéo et image en mode "headless" (sans interface).
3. **Autostart (LXDE) :** Pour garantir que l'affichage se lance dès que le Pi est sous tension.

---

## 3. Mise en place du Partage Réseau (Samba)

Pour permettre aux collaborateurs de déposer des fichiers sans utiliser de clé USB.

### Installation

<div _ngcontent-ng-c2040646847="" class="code-block ng-tns-c2040646847-444 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwji4oKrtaGTAxUAAAAAHQAAAAAQhwY" decode-data-ved="1" id="bkmrk-bash" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_f9a79fe2c2983399","c_7411e36b58e7ae7c",null,"rc_50d9607a2a333787",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c2040646847="" class="code-block-decoration header-formatted gds-title-s ng-tns-c2040646847-444 ng-star-inserted"><span class="ng-tns-c2040646847-444">Bash</span><div _ngcontent-ng-c2040646847="" class="buttons ng-tns-c2040646847-444 ng-star-inserted"><button aria-label="Copy code" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-mdc-tooltip-trigger copy-button ng-tns-c2040646847-444 mat-unthemed ng-star-inserted"></button></div></div><div _ngcontent-ng-c2040646847="" class="formatted-code-block-internal-container ng-tns-c2040646847-444"><div _ngcontent-ng-c2040646847="" class="animated-opacity ng-tns-c2040646847-444"></div></div></div>```
sudo apt update && sudo apt install samba samba-common-bin -y

```

<div _ngcontent-ng-c2040646847="" class="code-block ng-tns-c2040646847-444 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwji4oKrtaGTAxUAAAAAHQAAAAAQhwY" decode-data-ved="1" id="bkmrk--3" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_f9a79fe2c2983399","c_7411e36b58e7ae7c",null,"rc_50d9607a2a333787",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c2040646847="" class="formatted-code-block-internal-container ng-tns-c2040646847-444"><div _ngcontent-ng-c2040646847="" class="animated-opacity ng-tns-c2040646847-444"></div></div></div>### Configuration

Le dossier de destination est déclaré dans `/etc/samba/smb.conf`.

- **Droits :** Le dossier doit avoir des permissions de lecture/écriture suffisantes (`chmod 777` ou gestion par groupe).
- **Accès :** Un utilisateur Samba doit être créé avec `sudo smbpasswd -a [utilisateur]`.

---

## 4. Configuration de l'Affichage (VLC)

Nous utilisons la version "ligne de commande" de VLC pour piloter la sortie HDMI.

### Paramètres de lecture

La commande de base utilisée est : `cvlc -f --loop --no-video-title-show --image-duration 5 /chemin/vers/medias/*`

- `-f` : Mode plein écran.
- `--loop` : Recommence au début une fois la playlist terminée.
- `--no-video-title-show` : Masque le nom du fichier au début de la lecture.
- `*` : Force VLC à charger tous les fichiers présents dans le dossier.

### Variables d'environnement

Puisque la commande est lancée via SSH ou au démarrage, il est crucial de spécifier l'écran de sortie : `DISPLAY=:0` (cible l'écran physique branché en HDMI).

---

## 5. Automatisation au démarrage

Pour rendre le système autonome, un fichier `.desktop` est créé dans le répertoire de l'utilisateur : `~/.config/autostart/diaporama.desktop`

Ce fichier ordonne au système de lancer la commande VLC dès que la session graphique est prête.

---

## 6. Pilotage à distance

### Commandes Terminal (SSH)

Des alias peuvent être configurés dans le fichier `.bashrc` pour simplifier la maintenance :

- `startshow` : Relance le processus en arrière-plan avec `nohup`.
- `stopshow` : Arrête la diffusion avec `pkill vlc`.
- `statusshow` : Vérifie si le processus est actif.

### Scripts de bureau (Mac/Windows)

Il est possible de créer des fichiers exécutables (`.command` sur Mac ou `.bat` sur Windows) qui envoient la commande de lancement via SSH.

- **Note :** L'utilisation de clés SSH (`ssh-copy-id`) est recommandée pour éviter la saisie répétitive du mot de passe.

---

## 7. Maintenance &amp; Dépannage

- **L'heure n'est pas correcte :** Le Pi n'ayant pas de pile interne, il se synchronise via NTP (Internet). Si hors-ligne, utiliser `sudo date [MMDDhhmmYYYY]`.
- **Écran noir :** Vérifier que le "Screen Blanking" est désactivé dans les préférences du Raspberry Pi (Display).
- **Processus bloqué :** Utiliser `pkill vlc` pour réinitialiser l'affichage.