Le dispositif d'écoute de ma webradio

Bonjour à vous. Suite aux posts précédents su ce forum. Je synthétise un peu ce que j’ai réalisé pour pouvoir écouter notre webradio associative en wifi depuis un PI2. L’idée est de proposer un dispositif facile d’utilisation qui se branche sur le son de la webradio au démarrage. Il n’y a pas d’écran. Le pi est relié et alimente deux enceintes 3W.

Une fois configuré le pi lance l’écoute de la webradio. Si l’écoute s’arrête il la relance automatiquement. La configuration wifi est réalisée lorsqu’on insère une clef usb avec le fichier « configuration_wifi_dispositif.txt » à la racine.

J’ai réalisé un programme en purebasic, un exécutable que je place à la racine de la clef usb. Depuis cve programme, sous Windows l’utilisateur renseigne dans un formulaire le nom de sa box et la clef le fichier « configuration_wifi_dispositif.txt » correspondant à sa box est alors enregistré sur la clef usb.

Rien n’est parfait. Par exemple les fichiers sonores .wav ne sont pas lus et le job cron ne fonctionne pas vraiment, je suis obligé de le faire à la main (crontab -e, puis insérer la ligne * * * * * /home/webradio/Documents/webradio/checkradio.sh)

Le script que j’utilise pour installer sur un nouveau pi2 :
#
# Installation dispositif sonore
# Radio Les Floralies
#
#
cd/
sudo mkdir /home/webradio/Documents/webradio/
sudo mkdir /media/usbout
cd /home/webradio/Documents/webradio/
sudo wget http://www.lesfloralies.info/raspberry/installation.txt
sudo wget http://www.lesfloralies.info/raspberry/configradio.sh
sudo chmod a+x configradio.sh
sudo wget http://www.lesfloralies.info/raspberry/scriptradio.sh
sudo chmod a+x scriptradio.sh
sudo wget http://www.lesfloralies.info/raspberry/checkradio.sh
sudo chmod a+x checkradio.sh
sudo wget http://www.lesfloralies.info/raspberry/lancement_dispositif_sonore.wav
sudo chmod a+rw lancement_dispositif_sonore.wav
sudo wget http://www.lesfloralies.info/raspberry/configuration_wifi_ok.wav
sudo chmod a+rw configuration_wifi_ok.wav
sudo apt-get -y install mpc mpd
sudo wget http://www.lesfloralies.info/raspberry/rc.local
sudo cp -f rc.local /etc/rc.local
cd /etc/udev/rules.d
sudo wget http://www.lesfloralies.info/raspberry/99_ajout_clefusb.rules
sudo mkdir /home/webradio/Documents/webradio/crontab/
cd /home/webradio/Documents/webradio/crontab/
sudo wget http://www.lesfloralies.info/raspberry/pi.crontab
sudo chmod a+rw pi.crontab
sudo crontab /home/webradio/Documents/webradio/crontab/pi.crontab
cd /home/webradio/Documents/webradio/

Le fichier checkradio.sh
#!/bin/bash
if pgrep -f « mpc play » > /dev/null
then
#is running
exit
else
#not running, restart them
nohup /home/webradio/Documents/webradio/scriptradio.sh >/dev/null 2>&1 &
fi

Le fichier configradio.sh
#!/bin/bash
if [ -e « /dev/sda1 » ]
then
sudo mount -t vfat /dev/sda1 /media/usbout -w
#copie du fichier de configuration wifi depuis la clef USB, le renomme et le place dans le dossier adéquat.
if [ -e « /media/usbout/configuration_wifi_dispositif.txt » ]
then
sudo cp -f /media/usbout/configuration_wifi_dispositif.txt /boot/wpa_supplicant.conf
sudo cp -f /media/usbout/configuration_wifi_dispositif.txt /etc/wpa_supplicant/wpa_supplicant.conf
sudo mv /media/usbout/configuration_wifi_dispositif.txt /media/usbout/configuration_wifi_dispositif_realisee.txt
sudo aplay /home/webradio/Documents/webradio/configuration_wifi_ok.wav
sleep 20
sudo reboot
sleep 60
fi
sudo umount /media/usbout
sleep 10
fi

Le fichier scriptradio.sh
#!/bin/bash
amixer cset numid=3 1
mpc add http://lesfloralies.ovh:8000/floralies.ogg
mpc play

Le rc.local
#!/bin/sh -e
#
# rc.local
#

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi
cd /
cd home
cd webradio 
cd Documents
cd webradio
./configradio.sh
./scriptradio.sh
sudo aplay /home/webradio/Documents/webradio/lancement_dispositif_sonore.wav
exit 0

Le fichier pi.crontab
# Crontab utilisateur
* * * * * /home/webradio/Documents/webradio/checkradio.sh

Le fichier 99_ajout_clefusb.rules
ACTION=="add", KERNEL=="sd*", RUN+="/home/webradio/Documents/webradio/configradio.sh"

Le fichier configuration_wifi_dispositif.txt
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=FR

network={
ssid=« NomBox »
psk=« Clef box »
key_mgmt=WPA-PSK
}

Je suis parvenu à réaliser le cron depuis le script. Il suffit uniquement de mettre la ligne * * * * * /home/webradio/Documents/webradio/checkradio.sh dans le fichier pi.crontab (sans la première ligne commentaire # Crontab utilisateur. Pensez à aller à la ligne ensuite avant d’enregistrer le fichier.

Ensuite remplacez ‹ sudo crontab /home/webradio/Documents/webradio/crontab/pi.crontab › par ‹ crontab /home/webradio/Documents/webradio/crontab/pi.crontab › (sans le sudo).

Pour les fichiers .wav non lus par aplay, le mystère persiste…

Le format WAV est une format brut, théoriquement universel. Mais selon l’encodage utilisé, tu peux ne pas être en mesure des lires. C’est que le format Wave créé sous Windows n’est pas inclus dans toutes les librairies audio.

Tu as deux solutions;

  • Soit que tu réencode ton fichier en un autre format (mp3 par exemple) ou tu retravaille sont codec pour une version plus compatible.
  • Soit tu cherche des librairie de codec Wave et tu les installes.

Screenshot_14
Quelques exemples de version Wav existent.

Ce qui est étrange c’est que si je tape directement la commande cela fonctionne pour les fichiers wav. A moins que ce soit un problème de droit sur le dossier webradio. Peut être aussi que mpc bloque la lecture de aplay. La dessus je n’ai pas encore de piste. Inclus dans le script cela ne fonctionne pas. Je peux toujours essayer le MP3. Je me disais qu’au moins avec le Wav il n’y avait pas de temps de décodage.

Le temps de décodage est assez insignifiant.

Même que dans el cas d’une carte SD, el mp3 évite une trop grande lecture comparé au wav.

Pour ta difficulté a lire, peux tu fournir en détails la situation qui marche et celle qui marche pas (commandes et résultats/logs) ? Et pour t’aider, si tu met en script, redirige le output dans un log.

Comment je peux mettre le resultat de cette commande dans un log ?

sudo aplay /home/webradio/Documents/webradio/lancement_dispositif_sonore.wav >> MonFichierOut.Txt

?

hello,

si tu veux récupérer la sortie texte et les erreurs :
sudo aplay /home/webradio/Documents/webradio/lancement_dispositif_sonore.wav>log 2>&1

avant log:
un simple > crée un nouveau fichier
le double >> insert les sorties à la fin du fichier

source:
https://www.tuteurs.ens.fr/unix/shell/entreesortie.html

Merci beaucoup ! bof et levelkro