Raspberry Pi : une chaine hifi radio Internet

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;
                }
        }
}

Je suggère aussi

Écrire un commentaire

Quelle est la dernière lettre du mot bsju ? :