Regie multi-diffusion video raspberry
Le principe
Commander 6 raspberry pi 3 en wifi depuis un pc pour diffuser des vidéos présentent sur les pi via omxplayer et puredata.
Matériel
- 1 x pc
- 1 x routeur wifi
- 6 x raspberry pi3
- 6 x disque dur pi drive 250Gb
Architecture
- Toutes les Pi se connectent à un routeur Wifi ainsi qu'un ordinateur central
- L'ordinateur central envoie des commandes à chaque Patch Pd sur chaque Pi pour piloter Omxplayer
Technique
Utilisation de Raspberry Pi 3 avec Raspbian, omxplayer piloté par Pure Data en réseau
- Omxplayer, les options et + https://github.com/popcornmix/omxplayer
- Omxplayer + Pure Data https://github.com/gllmAR/pd-omxplayer
Un exemple de commande :
omxplayer -d --blank WGBH_MEDIUM-IS-THE-MEDIUM_1969_PR.mp4
- -d pour désentrelacer
- --blank pour occuper tout l'écran avec un fond noir (si diff d'une video 4/3 sur un écran 16/9 par ex)
Coté pi
-6 raspberry3 + 6 disque dur PiDrive 250Gb
On part avec la version minimale raspbian-strecth-lite
sudo apt-get update sudo apt-get upgrade
Installation OMX player
- Installer git :
sudo apt-get install git
- Downloader OMX player
git clone https://github.com/popcornmix/omxplayer.git
- Modifier le script d'installations des dépendances
sed -i 's/gcc-4.7/gcc-4.9/g;' prepare-native-raspbian.sh sed -i 's/g++-4.7/g++-4.9/g;' prepare-native-raspbian.sh sed -i 's/libssl-dev/libssl1.0-dev/g;' prepare-native-raspbian.sh sed -i 's/libboost1.50-dev/libboost1.58-dev/g;' prepare-native-raspbian.sh
voir par là
- Installer les dépendances
sudo apt-get install git-core subversion libasound2-dev libva1 libpcre3-dev libidn11-dev libusb-1.0-0-dev libdbus-1-dev libssl-dev libsmbclient-dev gcc-4.9 g++-4.9 libboost1.58-dev libssh-dev libssl1.0-dev
./prepare-native-raspbian.sh
- Compiler ffmpeg, omxplayer puis installer
make ffmpeg make -j 4 sudo make install
Installation de puredata
apt-get install puredata-core pd-ggee
Utilisation de pd-omxplayer
Une interface puredata pour commander omxplayer via osc depuis un ordi
- Créer un répertoire src
cd ~/ mkdir src cd src
- Cloner le dépot git
git clone --recursive https://github.com/gllmAR/pd-omxplayer
- Changer les parmissions du nouveau répertoire
cd pd-omxplayer chmod +rx OMXdbuscontrol.sh
- Test du démon
pd -nogui ~/src/pd-omxplayer/omx-deamon.pd
Montage disque dur externe au boot
- connaitre l'identifiant du disque
sudo blkid
- Modifier fstab
sudo nano /etc/fstab
ajouter :
#/dev/sda2 UUID=2402-1C04 /media/disk vfat nofail,auto,noatime,rw,user 0 0
Démarrage du démon puredata au boot
sudo nano /etc/rc.local
ajouter la ligne suivante avant exit 0
pd -nogui /home/pi/src/pd-omxplayer/omx-deamon.pd &
Écran noir au démarrage
- connaitre temps avant veille en secondes
cat /sys/module/kernel/parameters/consoleblank
- modifier le fichier cmdline.txt
sudo nano /boot/cmdline.txt
et ajouter
consoleblank=20
- source
https://www.raspberrypi.org/documentation/configuration/screensaver.md
Configuration SSID cahé
- Lister les wifi diponnibles
sudo iwlist wlan0 scan
- Configurer la connexion à un wifi caché
sudo nano /etc/network/interfaces
auto wlan0 allow-hotplug wlan0 iface wlan0 inet dhcp wpa-scan-ssid 1 wpa-ap-scan 1 wpa-ssid "Nom_du_réseau" wpa-psk "Mot_de_passe"
- Sources
IP fixe
- Désactiver l'interface wifi
sudo ifdown wlan0
- Modifier /etc/network/interfaces
auto wlan0 allow-hotplug wlan0 iface wlan0 inet static wpa-scan-ssid 1 wpa-ap-scan 1 wpa-ssid "Nom_du_réseau" wpa-psk "mot_de_passe" address 192.168.2.101 netmask 255.255.255.0 gateway 192.168.2.1 broadcast 192.168.2.255 dns-nameservers 192.168.2.1
- Activer l'interface wifi
sudo ifup wlan0
ou...???
sudo systemctl enable networking.service
- Vérifier que tout est dans l'ordre
sudo ifconfig -a
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.2.101 netmask 255.255.255.0 broadcast 192.168.2.255 inet6 fe80::ba27:ebff:fe0f:53a prefixlen 64 scopeid 0x20<link>
sudo reboot
- Sources
https://manpages.debian.org/stretch/ifupdown/interfaces.5.en.html
https://debian-facile.org/doc:reseau:interfaces
https://www.linuxbabe.com/command-line/ubuntu-server-16-04-wifi-wpa-supplicant
Scan wifi
sudo iwlist wlan0 scan
Multiplication
Cloner l'image raspbian
Suite aux divers installations il faut maintenant cloner la carte SD de test sur les 6 pi de production.
- Monter la carte SD sur son ordinateur avec linux
df -h sudo umount /dev/mmcblk0p1 /dev/mmcblk0p2
- Installer l'utilitaire de copie (plus évolué que dd)
sudo apt-get install dcfldd
- lancer la création de l'image disque
sudo dcfldd if=/dev/mmcblk0 of=/image.img
http://www.aoakley.com/articles/2015-10-09-resizing-sd-images.php
http://www.framboise314.fr/clonez-la-carte-sd-de-votre-raspberry-pi/
https://github.com/billw2/rpi-clone
https://github.com/qrti/shrink
https://softwarebakery.com//shrinking-images-on-linux
Transfert de données depuis un ordi vers les pi
- Utilisation de SCP pour de petits transferts
- Copie de fichier depuis l'ordi vers les pi
scp /media/mon_fichier pi@192.168.1.12:/media/disk/
- Copie de dossier depuis l'ordi vers les pi
scp -r /media/mon_fichier pi@192.168.1.12:/media/disk/
- Utilisation de rsync pour de long transferts
rsync -avP /media/mon_fichier pi@192.168.1.12:/media/disk/
- Sources :
SCP : https://www.it-connect.fr/chapitres/transfert-de-fichier-via-ssh/ RSYNC : https://raspberrypi.stackexchange.com/questions/8950/copy-files-from-osx-to-from-pi/9818
Coté ordi maître
un brix i3 sous lubuntu 17.10
Installer pure data et ses librairies
sudo apt install puredata pd-ggee pd-cyclone pd-iem pd-iemlib pd-iemnet pd-import pd-maxlib pd-osc pd-zexy
Terminal multi-fenêtre
Terminal multi-fenêtre permettant de diffuser les commandes tapées aux autres terminaux (Alt+A)
sudo apt-get install terminator
http://terminator-gtk3.readthedocs.io/en/latest/index.html
Gérer écran de veille
xfce4-power-manager-settings
VPN
- openvpn
sudo apt install openvpn sudo openvpn --config mon-vpn.ovpn
- vnc
sudo apt install x11vnc
- x11vnc
x11vnc -display :0
- de l'autre coté
sudo apt install tightvnc-java sudo openvpn --config mon-vpn.ovpn vncviewer 10.0.0.0
Lancer script au démarrage
Par défaut rc.local n'est pas activé, pour l'activé :
printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local sudo chmod +x /etc/rc.local sudo reboot
puis
sudo systemctl edit --full rc-local sudo systemctl enable rc-local.service
faire un tcheck
sudo systemctl start rc-local.service sudo systemctl status rc-local.service
enfin
nano /etc/rc.local
- source
https://www.linuxbabe.com/linux-server/how-to-enable-etcrc-local-with-systemd
Le patch pure data
Une version modifier permettant de lire des vidéos selon une gande liste de lecture se déclenchant selon le jour et l'heure voulue.
- Lecture de liste de lecture sur 5 raspberry
- Commande manuel de 5 raspberry
- le zip
Fichier:Renarde-pd-omxplayer.zip
Coté diffusion
Gérer configuration vidéo des pi
https://www.raspberrypi.org/documentation/configuration/config-txt/video.md