Mini projet d'une demi-journée (ou plutôt 2h) : permettre d'écouter des radios Internet depuis le Raspberry Pi sans écran. J'ai utilisé une souris comme IHM. Le principe est simple : le programme lance cvlc avec un flux, l'appui sur un bouton de la souris change le flux. Le nom de la radio est annoncé avant la lecture.
#!/bin/bash next() { /home/pi/RadioPi/mouse while killall vlc; do echo "kill"; done } while true; do echo "Jazz radio" | espeak sudo -u pi cvlc http://radio/flux.mp3& next echo "BBC Radio 1" | espeak sudo -u pi cvlc http://radio/flux.asx& next done
La fonctionnement n'est pas très propre car cvlc ne nous offre pas de possibilité de le fermer autrement que par un kill. Le programme mouse rend la main dès qu'un bouton de la souris est appuyé.
Le programme est appelé dans rc.local par :
sudo -u pi /home/pi/RadioPi/radios.sh&
On note le sudo -u pi qui permet de lancer le script par l'utilisateur pi, car VLC ne peut pas être exécuté par le root.
Code source de mouse :
#include#include #include #include #include "ihm.h" #include #include #include "ihm.h" int fdMouse; char b[3]; void IHMinit() { fdMouse = open("/dev/input/mice", "r"); fcntl(fdMouse, F_SETFL, O_NONBLOCK); } // Renvoie 1 lors d'un événement souris char IHMuserEntry() { int r = read(fdMouse, b, 2); if(r == 2) { return 1; } return 0; } int main() { IHMinit(); while(1) { char r = IHMuserEntry(); usleep(200); if(r) { return r; } } }