Willy rovelly alsacien, inventeur fou, IT guy, cinéfilou

Projecteur de bandes-annonces

Présentation

Le but du projet est de projeter des bandes-annonces (ou toute autre vidéo) en continu et en boucle sur un Raspberry Pi 5 (2 Go) de manière autonome. Il n’y a donc rien à faire côté utilisateur hormis allumer les équipements. Ici les fichiers seront lus sur un partage réseau mais ça peut être adapté (sur une clé USB par exemple).

Outils nécessaires :

  • un lecteur de carte SD (un Philonext avec son adaptateur)
  • une carte SD (sandisk ultra HC I de 16 Go)
  • utilitaire Rufus (https://rufus.ie/fr/) qui a une version « portable »
  • Putty pour l’accès ssh (https://www.putty.org/)
  • écran hdmi
  • clavier

Préparation de l’OS

Sur un PC, on télécharge la dernière version de LibreElec. C’est une distribution minimaliste qui permet de faire du Kodi (lecteur multimédia). Elle est donc très légère (142 Mo en compressé, 576 Mo décompressé) et par conséquent rapide. Il faut choisir la bonne « image », dans mon cas le fichier pour du Raspberry Pi 5.

On insère la carte SD dans le lecteur et on connecte le lecteur sur le PC. La carte SD doit donc apparaître dans l’explorateur sous une lettre quelconque.

On lance Rufus, on choisit l’image et hop, ça prend une poignée de secondes.

Premier démarrage

On insère la carte SD dans le Pi. On le relie au réseau interne via un câble RJ45. Mon but est d’y accéder ensuite à distance grâce à une connexion SSH.

Indispensable : brancher un écran/clavier pour voir ce qui se passe durant ce premier boot. On voit qu’il créé un filesystem puis qu’il reboote ensuite.

Chose bizarre au reboot, j’ai bien Kodi qui se lance mais les fenêtres apparaissent vides :

Un coup de google et… Je ne trouve absolument rien. Je vais alors sur le forum de Libreelec (https://forum.libreelec.tv/) pour poser ma question. En quelques heures, j’ai la réponse, il faut installer une nightly build, c’est-à-dire une version pas encore déclarée stable. Et en faisant ça, ça règle le problème. Le souci étant que le Raspi 2 Go est trop récent et n’a pas encore été pris en compte correctement chez Libre Elec dans la dernière version stable.

Si le réseau est connecté, on verra dans l’assistant de démarrage l’adresse ip du Pi sur laquelle se connecter en ssh.

Une fois cela fait, ça boot bien et il faut répondre à quelques questions de paramétrage, en prenant soin d’activer les protocoles réseau Samba et SSH.

J’ai dû également rebooter une nouvelle fois pour que le réseau soit pris en compte correctement.

Première connexion SSH

L’adresse IP du Pi est « à deviner ». Il faut soit l’avoir récupérée dans l’assistant lors du premier démarrager, soit se connecter sur votre Box Internet pour voir quelle ip le raspberry à récupérer.

Il y a un truc qui peut éviter cette manipulation, c’est en mettant en hostname : LibreELEC.local

Je suppose que ça fonctionne seulement si vous n’avez qu’un raspberry Libreelec sur le réseau et si vous n’avez pas changé le hostname.

Lancer Putty :

  • Dans hostname (or ip address) : mettre l’adresse IP du Pi (chez moi 192.168.1.166 ou LibreELEC.local)
  • Saved Session : Raspi5
  • Cliquer sur « save »
  • Double-cliquer sur « Raspi5 » pour s’y connecter
  • Accepeter la clé
  • Entrer les login/mdp par défaut : root / libreelec (évidemment à changer si le raspi n’est pas dans un endroit ultra-safe)

Et voilà on y est !

Créer un partage réseau SMB

Dans mon cas, le contenu vidéo est stocké sur un partage réseau Samba depuis un NAS. C’est un protocole qui est compatible avec beaucoup de systèmes, dont Windows. Mes fichiers sont accessibles sur \\192.168.1.101\trailers ainsi qu’un login et un mdp défini lors de la création du point d’accès sur le NAS.

Créer le répertoire

mkdir /storage/trailers

Ensuite, achtung, il faut créer le nom de fichier en fonction du répertoire ci-dessus :

vi /storage/.config/system.d/storage-trailers.mount

[Unit]
Description=cifs mount script
Requires=network-online.service
After=network-online.service
Before=kodi.service

[Mount]
What=//192.168.1.101/vd/trailers
Where=/storage/trailers
Options=username=toto,password=titi,rw,vers=2.1
Type=cifs

[Install]
WantedBy=multi-user.target

systemctl enable storage-trailers.mount

Un coup de reboot et ça devrait le faire. On devrait avoir accès au contenu du répertoire via /storage/trailers

Création d’un script de lancement

Il a fallu ruser pour lancer automatiquement une vidéo. Normalement il faut passer par la création d’un add-on mais voilà de quoi passer outre :

(
Créer un fichier /storage/.config/autostart.sh :
#! /bin/sh
(
        sleep 20
        /storage/display_trailers.py
)&


Lui donner les droits d'exécution : chmod +x /storage/.config/autostart.sh

Créer un script /storage/display_trailers.py et lui mettre les droits d'exécution avec chmod +x comme ci-dessus.
#!/usr/bin/env python
import random, csv, os
os.system("ls -d /storage/trailers/*.m*  > /storage/.kodi/userdata/all.m3u")

with open("/storage/.kodi/userdata/all.m3u") as file:
    list_all = [line.rstrip() for line in file]


random.shuffle(list_all)

fichier = open("/storage/.kodi/userdata/trailers.m3u", "w")

for element in list_all:
    fichier.write(element+"\n")

fichier.close()
os.system('kodi-send --action="PlayerControl(RepeatAll)"')
os.system('kodi-send --action="PlayMedia(/storage/.kodi/userdata/trailers.m3u)"'                                                                                                                                                                                                                                             )

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *