Installation de LibreELEC et de Catch-up TV & More sur un Raspberry Pi

Versions installées

LibreELEC 9.2.6 – Kodi 18.9 – Catch-up TV & More 0.2.34 – IPTV Simple PVR Add-on 3.10.1 – IPTV Manager 0.2.3 – IPTV Recorder 0.0.131 – FFmpeg Tools 9.2.0.111

Le but

On installe LibreELEC sur un Raspberry Pi, une distribution avec le média center Kodi. On ajoute ensuite Catch-up TV & More pour pouvoir regarder la télévision ainsi IPTV Manager ,IPTV Recorder et ffmpeg pour enregistrer des émissions.

Création de la carte SD avec LibreELEC depuis Windows

Depuis le site :

https://libreelec.tv/downloads_new/

J’ai téléchargé LibreELEC USB-SD Creator pour Windows. Je l’ai ensuite utilisé pour créer ma carte SD avec LibreELEC. J’ai ensuite installé cette carte mémoire sur un Raspberry Pi 3 model B. J’ai suivi la procédure de paramétrage qui s’est exécutée au démarrage.

LibreELEC intègre le média center Kodi.


Catch-up TV & More

J’ai ensuite installé Catch-up TV & More en suivant la procédure suivante :

https://catch-up-tv-and-more.github.io/fr/installation/

Catch-up TV & More permet de regarder la télévision en direct et de rattrapage.

IPTV Manager et IPTV Recorder

J’ai ensuite installé IPTV Manager et IPTV Recorder en suivant la procédure suivante :

https://catch-up-tv-and-more.github.io/fr/live_tv_installation/

Cette fonctionnalité est uniquement disponible sous Kodi Leia (18) et versions supérieures.

Prérequis

Installer FFMPEG

Pour installer FFMPEG afin qu’IPTV Recorder fonctionne :

Cliquez sur Extensions ==> Navigateur d’extensions ==>Installer depuis un dépôt ==> Libre ELEC Add-ons ==> Extensions Programmes ==> FFmpeg Tools

Le navigateur d’extensions

Configuration pour FFMPEG

Il faut ensuite préciser où se trouve ffmpeg.exe /storage/.kodi/addons/tools.ffmpeg-tools

.kodi est un dossier caché.

Allez sur Extensions ==> Mes extensions ==> Tout ==> IPTV Recorder ==> Configurer ==> Jobs and Rules ==> ffmpeg exe et donnez le chemin d’accès pour ffmpeg.

Afficher les fichiers cachés :

Système ==> Médias ==> Général ==> Afficher les dossiers et les fichiers cachés

Système

Configuration des chaînes TV

Configuration d’un compte 6play par exemple

Extensions ==> Catch-up TV & More ==> [flèche gauche] avec la télécommande ou le clavier ==> Paramètres de l’extension ==> Comptes

Intégration des chaînes TV

Extensions ==> Catch-up TV & More ==> [flèche gauche] avec la télécommande ou le clavier ==> Paramètres de l’extension ==> Intégration TV ==> Sélectionner les chaînes TV à activer

Si des chaînes intégrées n’apparaissent pas

Extensions ==> IPTV Manager ==> Channels ==> Refresh channels and guide now…


Configuration réseau

Durant l’installation, mon Raspberry Pi était connecté en filaire et l’adressage réseau se faisait par le DHCP de la boxe internet.

Par la suite, j’ai configuré l’accès réseau par le WIFI.

Système (la roue dentée) ==> LibreELEC ==> Connexions (choisir l’interface réseau filaire ou WIFI) ==> Choisir Connecter ou Modifier (saisir les paramètres) ==> Valider avec [OK]

On peut configurer en DHCP ou en IP fixe. Si on utilise une application comme télécommande sur un smartphone ou une tablette le mieux est d’avoir une IP fixe. Personnellement, pour le WIFI je suis en DHCP mais ma boxe est configurée pour toujours attribuer la même adresse à la carte WIFI du Raspberry Pi qu’elle reconnait.


Informations

Les vidéos enregistrées le sont sous special://temp ce qui correspond en fait à /storage/.kodi/Movies ou Other

Pour créer la carte SD sur mon PC sous Windows j’ai utilisé un lecteur de carte connecté en USB.

Il n’est pas possible d’enregistrer certaines émissions, je pense que cela est dû aux DRM (protections contre la copie).

J’utilise la télécommande de ma TV qui est compatible, je dispose aussi d’un clavier sans fil.

Par la suite, j’ai testé l’application Official Kodi Remote pour piloter mon media center depuis un iPad.


À voir également

Pour ceux qui désirent télécharger des émissions sur la télévision de rattrapage sous Windows, vous pouvez utiliser Captvty.

Captvty sous Windows 8.1 Pro et Windows 10

Bios et Boot menu

Le BIOS, de l’anglais Basic Input Output System est un ensemble de fonctions, contenu dans la mémoire morte de la carte mère d’un ordinateur, lui permettant d’effectuer des opérations de base, lors de sa mise sous tension. Wikipédia

Le boot menu, menu de démarrage, permet de sélectionner le périphérique depuis lequel vous souhaitez démarrer le système. Habituellement par défaut, sous Windows, on utilise le disque (C :).

Création et déploiement d’images système

Article en cours de réalisation concernant l’accès au BIOS et au Boot menu pour les machines parfois anciennes sur lesquelles j’interviens dans le cadre de mon travail. J’utilise le Boot menu pour démarrer les systèmes depuis une image ISO se trouvant sur une clé USB « bootable » ou un boitier Zalman. Mon but étant de réaliser une image disque ou d’en déployer une à l’aide d’un logiciel (sur l’ISO). En complément de la clé USB, je peux utiliser un disque dur pour héberger l’image. On ne peut malheureusement pas toujours avoir la possibilité d’un boot PXE (depuis la carte réseau) pour déployer une image (depuis un serveur). Je réalise aussi parfois des démarrages depuis un CD/DVD pour installer des systèmes GNU/Linux.

Le BIOS

Concernant mes interventions sur le BIOS, le plus souvent c’est pour modifier l’heure sur la machine. On y trouve également le « Boot Order » ou « Boot Séquence » qui permet de préciser un ordre de boot, une liste de périphériques à partir desquels le système va tenter de démarrer (CD/DVD, disques durs…). Dès qu’un support « bootable » est trouvé, le système d’exploitation installé dessus peut démarrer.


On accède au BIOS ou au boot menu en appuyant sur une touche du clavier au démarrage du PC. Voilà ce que j’ai noté pour ce qui me concerne.

Acer

Acer Veriton

Bios [Suppr] – Boot menu [F12]


Asus

Asus VM40B

Bios [F2] ou [Suppr] – Boot menu [F8]

Portable Asus N61VG Series

Bios [F2] – Boot menu [Echap]

Carte mère Asus Z97-PRO

Bios [Suppr]


HP

HP Compaq dx2400

Boot menu [Echap]

HP Compaq dx2420 Microtower

Boot menu [Echap]

HP Prodesk

Bios [F10] – Boot menu [F9]


Lenovo

Lenovo ThinkCentre

Bios [F1] – Boot menu [F12]


Mes archives

Pour créer une clé USB Bootable hébergeant plusieurs systèmes sous la forme d’images ISO :

MutiSystem – Créer une clé LiveUSB MultiBoot sous Linux Mint 18

Exemple de mise à jour du BIOS :

Mise à jour du BIOS d’une carte mère ASUS Z97-PRO

Exemple d’activation du boot PXE (depuis la carte réseau) sur une carte mère :

Activer le boot PXE sur une carte mère ASUS Z97-PRO

Ancien article au sujet de la mise en place d’un serveur PXE (pouvant héberger des images système pouvant être déployées) en utilisant Clonezilla :

Mettre en place un serveur Clonezilla via PXE – Debian 8

Création d’une image et restauration d’un disque avec Clonezilla :

Clonezilla

Le centre de solutions HP ne fonctionne plus

Vous avez une vieille imprimante multifonction Hewlett Packard (HP) qui fonctionnait parfaitement (impression et numérisation), mais depuis le 12 janvier 2021, vous ne pouvez plus accéder au centre de solutions HP pour numériser vos documents. La raison de ce dysfonctionnement est, simplement, dû à l’arrêt d’Adobe Flash Player.

Une solution, créer un raccourci vers ce programme :

« C:\Program Files (x86)\HP\Digital Imaging\bin\hpiscnapp.exe »

J’ai utilisé cette solution pour un multifonction HP Photosmart C4780. Je suis sous Windows 8.1 Pro, le niveau d’encre s’affiche toujours lors d’une impression bien que j’ai désinstallé le centre de solutions HP.


Plus d’informations :

https://bernard-sperandio.fr/resolution-probleme-centre-solutions-hp/

Installation de 7-Zip sous Windows

7-Zip est un logiciel de compression de données et d’archivage de fichiers (.zip) fonctionnant sous Windows.

Tutoriels au format PDF

Dans le tutoriel qui suit, vous pouvez voir l’installation de 7-Zip sous Windows 8.1 Pro en utilisant le navigateur WEB Firefox pour télécharger le programme nécessaire à l’installation. Vous pouvez réaliser la même chose sous Windows 7.

Installer 7-Zip sous Windows 8.1Pro

Télécharger des vidéos sur le WEB avec Youtube-dl

1 – Sous Windows sans interface graphique avec Youtube-dl

Si vous n’êtes pas à l’aise avec la ligne de commande, installez plutôt Youtube-DLG.

Depuis le site GitHub :

https://github.com/ytdl-org/youtube-dl

Les utilisateurs de Windows peuvent télécharger un fichier .exe et le placer à n’importe quel emplacement de leur PATH, à l’exception de% SYSTEMROOT% \ System32 (par exemple, ne pas le mettre dans C: \ Windows \ System32).

Le programme youtube-dl.exe s’utilise avec la ligne de commande.


2 – Sous Windows avec une interface graphique grâce à Youtube-DLG

Youtube-DLG est un logiciel libre permettant de télécharger des vidéos hébergées en ligne. Il est compatible avec des centaines de sites, dont YouTube, Dailymotion et Vimeo. C’est une interface graphique pour l’outil en ligne de commande Youtube-dl.

Si vous préférez utiliser Youtube-dl depuis une interface graphique. Depuis le site :

https://github.com/MrS0m30n3/youtube-dl-gui

Sélectionnez Windows Installer, on télécharge l’archive youtube-dl-gui-0.4-win-setup.zip.

Décompressez l’archive puis exécutez le fichier youtubedlg-0.4.exe (le nom des fichiers peut changer selon la version) qui se trouve dans le dossier obtenu. Ensuite, on peut procéder à l’installation du programme.


Les tutoriels au format PDF

Installation de Youtube-DLG sous Windows 8.1 Pro en utilisant le navigateur WEB Firefox et 7-Zip. Peut être adapté pour Windows 7 et 10.

Installer Youtube-DLG sous Windows

L’utilisation de Youtube-DLG pour télécharger des vidéos.

Utilisation de Youtube-DLG


Et sous Linux

Vous pouvez retrouver les différentes procédures d’installation sous Linux de Youtube-dl et la documentation sur son utilisation (en ligne de commande).

https://github.com/ytdl-org/youtube-dl

Pour installer Youtube DLG (avec l’interface graphique) sous Linux.

https://github.com/MrS0m30n3/youtube-dl-gui

Copier une carte mémoire SD

Dans le tutoriel au format PDF qui suit, vous verrez comment réaliser un fichier image d’une carte mémoire SD que l’on utilise ensuite pour dupliquer cette carte. Je réalise cela avec le logiciel Win32 Disk Imager 1.0 sous Windows :

Cloner une carte mémoire SD


Raspberry Pi OS

Si vous utilisez ce logiciel pour copier la carte SD d’un Raspberry Pi avec Raspberry Pi OS, vous pouvez si nécessaire étendre la partition à la capacité de la carte avec la procédure suivante.

Dans un terminal :

sudo raspi-config

Choix 6 Advanced Options

Choix A1 Expand Filesystem

Validez avec <Select>

Validez avec <OK>

Redémarrez ensuite le système.

Installation d’Asterisk sur un Raspberry Pi

Asterisk est un autocommutateur téléphonique privé (PABX) libre et propriétaire (publié sous double licence GPLv2 ou commerciale pour systèmes GNU/Linux. Il inclut de nombreuses fonctionnalités. Raspbx est une distribution Linux pour Raspberry Pi incluant Asterisk. FreePBX propose une interface WEB facilitant le paramétrage d’Asterisk.

Logo Asterisk

Télécharger RasPBX – Asterisk pour le Raspberry Pi

Pour télécharger la dernière image :

http://www.raspberry-asterisk.org/downloads/

J’ai téléchargé raspbx-10-10-2020.zip.

Transfert de l’image sur la carte micro SD

On télécharge une archive .zip, pour extraire l’image .img j’ai utilisé 7-Zip sous Windows (Extraire les fichiers…).

Pour transférer l’image sur la carte MicroSD j’ai utilisé balenaEtcher (sous Linux dans mon cas) :

https://www.balena.io/etcher/

On peut également utiliser Raspberry Pi Imager :

https://www.raspberrypi.org/software/

Au premier démarrage du Raspberry Pi

Sur mon réseau local, je me suis connecté au Raspberry Pi en SSH depuis un poste sous Windows avec le logiciel PuTTY (pour le moment le clavier du Raspberry Pi est en qwerty). Pour avoir l’adresse IP du Raspberry Pi, on peut scanner le réseau avec une application ou repérer l’adresse qui est affichée au démarrage du Raspberry Pi (on est en DHCP).

Login pour SSH

User : root

Password : raspberry

Pour mettre à jour le système :

raspbx-upgrade

Avant de continuer, nous devons régénérer les clés d’hôte SSH. La raison est que la distribution RasPBX que nous utilisons en contient déjà, mais celles-ci sont distribuées et donc ne sont pas aussi sécurisées.

Pour régénérer les clés d’hôte SSH, exécutez la commande suivante :

regen-hostkeys

Pour étendre la partition système à la capacité de la carte SD :

raspi-config

user :pi ==> 7 Advanced Options ==> A1 Expand Filesystem ==> [OK]

Pour que les changements soient pris en compte, on doit redémarrer le Raspberry Pi :

shutdown -r now

Configuration du fuseau horaire pour Asterisk :

configure-timezone

Configuration des paramètres régionaux

Pour voir les paramètres régionaux :

locale ou locale -a

Pour les modifier :

dpkg-reconfigure locales

J’ai sélectionné les paramètres en fr et désélectionné les choix précédemment sélectionnés.

fr_FR ISO-8859-1

fr_FR.UFT-8 UFT-8

fr_FR@euro ISO-8859-15

J’ai confirmé ensuite.

fr_FR.UFT-8 UFT-8

Pour que les modifications soient prises en compte, j’ai redémarré le Raspberry Pi :

shutdown -r now

Configuration en français du clavier (azerty)

Configurer les paramètres du clavier (non requis pour travailler avec SSH uniquement) :

dpkg-reconfigure keyboard-configuration

PC générique 105 touches (internat.) ==> Français – Français (azerty) ==> Disposition par défaut pour le clavier ==> Pas de touche «  compose »

Pour les choix (French azerty), je me suis aidé de l’article suivant :

http://www.soft-alternative.com/raspberry-pi-configurer-clavier-francais-raspbian.php

Pour que les modifications soient prises en compte, j’ai redémarré le Raspberry Pi :

shutdown -r now

Configuration de la carte réseau en IP fixe

Pour voir les paramètres des cartes réseau :

ifconfig

La carte eth0 est la carte filaire, wlan0 la carte WIFI. Mon Raspberry Pi étant connecté en filaire sur ma box, je vais mettre la carte eth0 en IP fixe (actuellement, je suis en DHCP). J’attribue une adresse IP de mon réseau local en dehors de la plage du DHCP de la box. J’ai choisi l’adresse 192.168.1.60. Le CIDR /24 correspond au masque de sous-réseau 255.255.255.0. Le routeur, c’est ma box 192.168.1.1, les DNS ma box et un serveur de Google 8.8.8.8.

On ouvre le fichier /etc/dhcpcd.conf avec nano.

nano /etc/dhcpcd.conf

Ma configuration est la suivante.

interface eth0
 static ip_address=192.168.1.60/24
 static routers=192.168.1.1
 static domain_name_servers=192.168.1.1 8.8.8.8

Pour enregistrer les modifications [CTRL]+[C] ==> [O] ==> [Entrée]

Ensuite, je redémarre le système :

shutdown -r now

Pour modifier le mot de passe root

passwd

Saisir le nouveau mot de passe puis le confirmer.


Plus d’informations sur les sites :

https://pimylifeup.com/raspberry-pi-asterisk/

http://www.raspberry-asterisk.org/documentation/


Logo FreePBX

Pour configurer Asterisk avec des softphones sur mon réseau local et réaliser des appels

Dans le tutoriel au format PDF qui suit, vous verrez la configuration d’Asterisk depuis une autre machine sur le réseau local grâce à votre navigateur et l’interface Web avec FreePBX. On voit également des exemples de configurations de softphones.

Configuration avec FreePBX


Configuration d’un trunk IAX2 avec FreePBX

Un exemple de configuration d’un trunk IAX2 (en utilisant FreePBX) qui permet d’interconnecter des Asterisk se trouvant sur des sites distants. On peut également utiliser ce protocole pour relier des Asterisk se trouvant sur le même site. C’est en cours de tests, si vous avez des informations à apporter, Contact ou vous pouvez laisser un commentaire.

Création d’un trunk IAX2 avec FreePBX


« Call Flow Control » – jour / nuit Contrôle

Tutoriel au format PDF avec la traduction du Guide de l’utilisateur du contrôle de flux d’appels « Call Flow Control ». J’ai également documenté l’installation d’un module avec FreePBX.

Guide de l’utilisateur du contrôle de flux d’appels « Call Flow Control » – jour / nuit Contrôle


Les informations utiles

Si l’on appelle le numéro *43 on accède au service d’écho qui vous permet de tester la latence.

La CLI (Command Line Interface ou console pour Asterisk) permet d’obtenir des informations depuis le Raspberry Pi ou PuTTY.

asterisk -rvvv

Quelques commandes :

pjsip list contacts
pjsip show endpoints
iax2 show peers

On peut quitter la CLI avec les commandes quit ou exit.

On peut trouver des commandes utiles sur le site suivant :

https://www.provya.net/?d=2015/06/24/08/18/10-

Affichage dynamique en Python

Le projet

J’ai travaillé sur un projet d’affichage dynamique, un diaporama sur un écran TV. Recherchant une solution peu onéreuse s’appuyant sur des logiciels libres, j’ai trouvé un script Shell pouvant être exécuté sur un Raspberry Pi sur le site suivant :

http://wiki.dane.ac-versailles.fr/

Un partage sur un réseau local héberge un diaporama réalisé avec LibreOffice Impress (.odp). Lorsque ce fichier est modifié, il est automatiquement téléchargé par le Raspberry Pi qui se trouve sur le même réseau et est affiché. Cela fonctionne très bien et actuellement dans un collège, j’ai deux Raspberry Pi pour deux écrans TV qui affichent le même diaporama. Le script Shell est lancé automatiquement aux démarrages des Raspberry Pi.

Un petit schéma de mon installation

Programme en Python

J’ai décidé de réaliser une version en Python de ce script Shell. J’ai créé deux petits programmes, le premier avec une interface graphique permettant de configurer plus facilement mon logiciel, le second permettant l’affichage du diaporama. Les difficultés étaient d’accéder au partage réseau depuis Python et d’exécuter des commandes Shell Bash.


Programme de configuration

Ce programme permet d’enregistrer dans un fichier les paramètres de configuration de mon logiciel depuis une interface graphique. Si vous êtes en groupe de travail lors des tests, enregistrez son nom en guise de nom de domaine, cela doit fonctionner.

Le programme Diapo-ini.py

!/usr/bin/env python3.7
 -- coding: utf-8 --
 from tkinter import *
 import pickle
 import os.path
 def Lancer_Diaporama():
     exec(open("./Diapo-py.py").read())
 def Enregistrer():
     serveursmb = Serveur_Entry.get()
     partagesmb = Partage_Entry.get()
     utilisateur = Utilisateur_Entry.get()
     mot_de_passe = Mot_de_passe_Entry.get()
     domaine = Domaine_Entry.get()
     fichier_diaporama = Fichier_du_diaporama_Entry.get()
 #Enregistrer mes variables sous forme d'une liste dans un fichier variables = [serveursmb, partagesmb, utilisateur, mot_de_passe, domaine, fichier_diaporama] fichierSauvegarde = open("diaporamaini","wb") pickle.dump(variables, fichierSauvegarde) fichierSauvegarde.close()
 Lecture du fichier ini
 fichierini = "diaporamaini"
 Ouverture du fichier s'il existe et récupération de la liste
 if os.path.isfile(fichierini):
     fichierSauvegarde = open(fichierini,"rb")
     variables = pickle.load(fichierSauvegarde)
     fichierSauvegarde.close()
 # Affichage d'informations print("Initialisation des variables") # Récupération des données dans les variables serveursmb = variables[0] partagesmb = variables[1] utilisateur = variables[2] mot_de_passe = variables[3] domaine = variables[4] fichier_diaporama = variables[5]
 else:
     # Le fichier n'existe pas
     print("Fichier " + fichierini + " non trouvé")
     serveursmb = partagesmb = utilisateur = mot_de_passe = domaine = fichier_diaporama = "vide"
 Fenetre = Tk() #création de la fenêtre, avec un nom de votre choix Fenetre
 Fenetre.title('Paramètres Diaporama') #Titre de la fenêtre
 Fenetre.geometry("420x170") # On définit la taille de la fenêtre
 Fenetre.resizable(width=False,height=False) #Empêcher de redimentionner la fenêtre
 Création d'un interface graphique avec grid
 Serveur_Label= Label(Fenetre, text = 'Votre serveur - Nom ou IP :') #Un label pour afficher du texte
 Serveur_Label.grid(row=0)
 Serveur_Entry= Entry(Fenetre) #On définit l'objet Entry (zone de saisie) qui porte le nom Serveur_Entry
 Serveur_Entry.insert(0, serveursmb)
 Serveur_Entry.grid(row=0,column=1,ipadx=30) # ipadx=30 pour créer 10 pixels de plus horizontalement
 Partage_Label= Label(Fenetre, text = 'Votre partage réseau :')
 Partage_Label.grid(row=1,column=0)
 Partage_Entry= Entry(Fenetre)
 Partage_Entry.insert(0, partagesmb)
 Partage_Entry.grid(row=1,column=1,ipadx=30)
 Utilisateur_Label= Label(Fenetre, text = 'Votre utilisateur :')
 Utilisateur_Label.grid(row=2,column=0)
 Utilisateur_Entry= Entry(Fenetre)
 Utilisateur_Entry.insert(0, utilisateur)
 Utilisateur_Entry.grid(row=2,column=1,ipadx=30)
 Mot_de_passe_Label= Label(Fenetre, text = 'Votre mot de passe :')
 Mot_de_passe_Label.grid(row=3,column=0)
 Mot_de_passe_Entry= Entry(Fenetre) # Saisie du mot de passe
 Mot_de_passe_Entry.insert(0, mot_de_passe)
 Mot_de_passe_Entry.grid(row=3,column=1,ipadx=30)
 Domaine_Label= Label(Fenetre, text = 'Votre nom de domaine:')
 Domaine_Label.grid(row=4,column=0)
 Domaine_Entry= Entry(Fenetre)
 Domaine_Entry.insert(0, domaine)
 Domaine_Entry.grid(row=4,column=1,ipadx=30)
 Fichier_du_diaporama_Label= Label(Fenetre, text = 'Votre fichier de diaporama :')
 Fichier_du_diaporama_Label.grid(row=5,column=0)
 Fichier_du_diaporama_Entry= Entry(Fenetre)
 Fichier_du_diaporama_Entry.insert(0, fichier_diaporama)
 Fichier_du_diaporama_Entry.grid(row=5,column=1,ipadx=30)
 Mon_bouton_Lancer_Diaporama = Button(Fenetre, text = 'Lancer le Diaporama',command = Lancer_Diaporama)
 Mon_bouton_Lancer_Diaporama.grid(row=6,column=0,ipadx=0)
 Mon_bouton_Enregistrer = Button(Fenetre, text = ' Enregistrer le fichier', command = Enregistrer)
 Mon_bouton_Enregistrer.grid(row=6,column=1,ipadx=0)
 Fenetre.mainloop() # lance la boucle principale
L’interface graphique pour la saisie des paramètres du diaporama

Programme d’affichage du diaporama

Ce programme lit le fichier de configuration pour attribuer aux variables les valeurs qui ont été enregistrées puis il affiche le diaporama. Lorsque le diaporama est modifié sur le partage réseau, il est automatiquement téléchargé et affiché.

Le programme Diapo-py.py

!/usr/bin/env python3.7
 -- coding: utf-8 --
 import pickle
 import os.path
 import smbclient
 import subprocess
 import time
 Lecture du fichier ini
 fichierini = "diaporamaini"
 Ouverture du fichier s'il existe et récupération de la liste
 if os.path.isfile(fichierini):
     fichierSauvegarde = open(fichierini,"rb")
     variables = pickle.load(fichierSauvegarde)
     fichierSauvegarde.close()
 # Affichage d'informations print("Initialisation des variables") # Récupération des données dans les variables serveursmb = variables[0] partagesmb = variables[1] utilisateur = variables[2] mot_de_passe = variables[3] domaine = variables[4] fichier_diaporama = variables[5]
 else:
     # Le fichier n'existe pas
     print("Fichier " + fichierini + " non trouvé")
 initialisation des variables
 Version_Old = "vide"
 local_path = "./" + fichier_diaporama
 smb = smbclient.SambaClient(server=serveursmb, share=partagesmb, username=utilisateur, password=mot_de_passe, domain=domaine)
 Boucle = True
 while Boucle == True:
     try:
         # Afficher des informations sur le fichier
         Version_New = smb.info(fichier_diaporama)
     except:
         Version_New = Version_Old
     if Version_New != Version_Old:
         try:
             ### On arrête l'application LibreOffice ###
             subprocess.Popen(['/bin/sh', '-c', "pkill office"])
             time.sleep(2)
             ### On supprime l'ancien fichier diaporama s'il existe ###
             if os.path.isfile(local_path):
                 os.remove(local_path)
             ### Téléchargement du nouveau fichier ###
             smb.download(fichier_diaporama, local_path)
             time.sleep(2)
             ### Affichage du diaporama ###
             Affichage = subprocess.Popen(["libreoffice", "--norestore", "--show", fichier_diaporama], shell=False)
             Version_Old = Version_New
         except:
             print("Erreur lors du téléchargement et de l'affichage du diaporama")
     else:
         time.sleep(20) # Pas de mise à jour - On attend 20 secondes avant de revérifier

Prérequis pour l’installation du programme en Python sur le Raspberry Pi

Version de Python installée

python3 --version
 Python 3.7.3

Pour l’interface graphique avec Tkinter

Le paquet python3-tk doit être présent sinon on l’installe :

sudo apt-get install python3-tk

Accès au partage Samba

Vous devez disposer d’un partage réseau Windows ou sous Linux (Samba) avec les login/mot de passe pour y avoir accès.

Pour pouvoir accéder au partage réseau depuis le Raspberry Pi vous devez installer le paquet smbclient (client samba) sous Linux :

sudo apt-get install smbclient

En cas de problème, il peut être utile de vérifier la connexion au partage depuis l’explorateur de fichiers du Raspberry Pi :

smb://ip_du_serveur/nom_du_partage

Installer la bibliothèque pysmbclient (client samba) pour l’accès au partage réseau depuis Python :

pip3 install pysmbclient

Plus d’informations :

https://pypi.org/project/PySmbClient/

Les droits sur les fichiers

Les deux programmes doivent être exécutables et je réduis les droits au seul utilisateur pi :

chmod 700 nom_du_fichier

Pour le fichier diaporamaini, droits en lecture et en écriture au seul utilisateur :

chmod 600 diaporamaini

Lancer et arrêter les programmes

Pour lancer les programmes depuis un terminal :

./nom_du_fichier

Pour arrêter la diffusion du diaporama depuis le Raspberry Pi :

[Alt] + [F4] Pour fermer LibreOffice Impress.

[Ctrl] + [C] Pour stopper l’exécution du programme dans le terminal.

Par la suite, on pourra automatiser le lancement du programme qui affiche le diaporama au démarrage du Raspberry Pi.


Et maintenant…

Je ne suis pas programmeur, j’ai une formation de technicien d’assistance informatique et une autre de technicien réseau. Vous avez peut-être des idées pour améliorer ce programme et ajouter de nouvelles fonctionnalités. Si vous êtes intéressé, n’hésitez pas. Vous pouvez laisser des commentaires ou me contacter pour faire évoluer le code.

Programmes mis à jour le 21/12/2020

Dominique Renaudeau

Lecture d’une vidéo en boucle sur un Raspberry Pi

Raspberry Pi sous Raspbian GNU/Linux 9.13 (stretch).

On m’a demandé la lecture d’une vidéo en boucle sur un écran TV depuis un Raspberry Pi 3. Habituellement, j’utilise ce matériel pour un affichage dynamique (Diaporama). Je pensais utiliser le logiciel VLC, mais il n’affichait pas correctement la vidéo malgré plusieurs tentatives de réencodages avec le logiciel Handbrake. À la recherche d’une solution, j’ai testé le logiciel Omxplayer et cela a fonctionné.

Pour lancer l’affichage de la vidéo en boucle (depuis le dossier où se trouve la vidéo, dans un terminal) :

omxplayer --loop fichier_vidéo

Pour stopper l’affichage de la vidéo [Alt] + [F4] ou [Q].

Le logiciel Omxplayer était déjà installé sur le Raspberry Pi, on peut vérifier cela avec la commande :

dpkg -l omxplayer
 Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder
 | État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé/W=atte
 |/ Err?=(aucune)/besoin Réinstallation (État,Err: majuscule=mauvais)
 ||/ Nom            Version               Architecture Description
 +++-==============-=====================-============-==========================
 ii  omxplayer      20190723+gitf543a0d-1 armhf        Command line media player
 lines 1-6/6 (END)

Tapez [Q] pour reprendre la main.

Si comme pour moi votre fichier vidéo se trouve sur une clé USB vous retrouverez celle-ci dans le dossier /media/pi/.

Linux – commande introuvable

Sous Linux, si vous avez le message commande introuvable alors que vous pensez qu’elle est bien installée.

Exemple sous Debian 10 avec la commande pwck :

pwck -r
 bash: pwck : commande introuvable

On peut effectuer une recherche de la commande, ici pwck, avec whereis :

whereis pwck
 pwck: /usr/sbin/pwck /usr/share/man/man8/pwck.8.gz

On voit ici que la commande pwck se trouve sous /usr/sbin, à noter que l’on voit également où se trouvent les pages de manuel.

Si le système ne trouve pas la commande pwck, c’est que son chemin d’accès /usr/bin est absent de la variable d’environnement PATH.

Si l’on veut consulter le contenu de la variable PATH (en respectant la casse) :

echo $PATH
 /home/dominique/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

Je vois que /usr/sbin ne figure pas dans la variable.

Pour la durée de la session

Pour ajouter /usr/sbin à la variable PATH :

export PATH=$PATH:/usr/sbin

Si je contrôle à nouveau le contenu de la variable PATH, /usr/sbin doit s’y trouver.

Ma commande pwck -r est maintenant fonctionnelle à condition d’être administrateur, root, sous Debian ou avec sudo sous Ubuntu (dans son cas).

Pour modifier PATH de façon permanente

Voir l’article :

Recherche des fichiers sous Linux et la variable PATH