Web Radio réveil sur Raspberry

Edit: nouvelle version disponible ici.
Dans le but de m’immerger un peu plus dans l’anglais et monter en compétence au niveau de la compréhension oral, j’aimerais bien me réveiller le matin avec des radios US. Seulement voila un radio réveil fonctionnant avec des web radios coûte en moyenne dans les 150€. Je vous propose de le faire pour le prix d’un raspberry pi. Matériel nécessaire:

  •  Un Raspberry Pi 
  • Une paire d’enceintes à relier sur le Raspberry.
  • (Optionnel) Un Smartphone Android

 

Prérequis sur le système du Rpi

La bonne heure

Pour afficher l’heure de votre Rpi tapez la commande

Si l’heure n’est pas correcte c’est surement que la zone n’est pas correctement réglée. Tapez alors

puis choisissez ‘Europe/Paris’.

Serveur Web

Un serveur web pour distribuer l’application écrite en HTML5 et PHP.

Pour vérifier que l’installation est ok on se rend à l’adresse du Rpi avec notre navigateur préféré. Pour moi ça sera IE6. Le serveur web apache doit vous afficher la page d’index par défaut comme l’image suivante. itwork

 

Règlage de l’audio

Par défaut sur le Rpi, le son sort par l’interface HDMI. Pour faire sortir le son par la sortie analogique afin de se servir d’enceintes on tape la commande suivante

Ou <n> est le numéro de la sortie. 0=auto, 1=analog, 2=hdmi.

Pour forcer la sortie analogique on va taper

Un simple de test de son pour vérifier.

Vous devez entendre un grésillement.

Vous pouvez régler le volume de sortie du Rpi via la commande

Par défaut le Rpi amplifie à 50%. La commande alsamixer vous propose un menu de réglage via les touches « flèche haut » et flèche bas » du clavier.

Le lecteur multimédia

L’application est basé sur un lecteur open-source nommé MPlayer. MPlayer est un lecteur multimédia pour linux. Il prend en charge la plupart des formats et gère également les flux audio se trouvant sur le net, ce qui nous intéresse dans notre cas.

mplayer est un programme en ligne de commande piloté par l’entrée standard.

Pour le tester, branchez une paire d’enceinte au Rpi et lancer la commande suivante

Mise à jour des privilèges de apache

L’idée est donc de piloter ce programme par l’interface web. Seulement, il y a un problème. Sur nunux, chaque programme possède son propre utilisateur pour être lancé. Ceci pour des raisons de sécurités. Il est normal que l’utilisateur du serveur web Apache(www-data) ne puise pas exécuter des commandes systèmes. Cet utilisateur n’a donc pas le droit de lancer le programme MPlayer. On va autoriser l’utilisateur www-data à exécuter certaines commandes systèmes nécessaires au programme. Pour cela on utilise sudo. Sudo permet à l’administrateur système d’accorder à certains utilisateurs (ou groupes d’utilisateurs) la possibilité de lancer une commande en tant qu’administrateur, ou comme autre utilisateur. Il peut être paramétré finement pour autoriser ou refuser l’exécution de tâches privilégiées. Nous allons grâce à lui données les droits particulier à nôtre utilisateur www-data suivants:

  • Lancer MPlayer
  • Savoir si MPlayer est lancé
  • Stopper MPlayer

Pour cela, on édite le fichier sudoer à l’aide de la commande

On ajoute la ligne suivante en fin de fichier

Installation de l’application Piclodio sur le Rpi

J’ai nommé l’application Piclodio pour Rapsberry Pi Clock Radio.  Le code est disponnible sur GitHub ici.

On récupere la derniere version de l’archive directement sur le Rpi

On extrait

On place le dossier dans le répertoire de apache

On donne les droits à l’utilisateur de apache (www-data) sur ce répertoire

L’application est installée.

Utilisation

Vous pouvez utiliser l’application via n’importe quel navigateur d’un terminal de votre réseau local. Il suffit de se rendre à l’adresse IP du Rpi et d’ajouter le nom du dossier de piclodio à la fin de l’url comme ceci

L’application,de part son interface, est plutôt destinée au terminaux mobiles de type smartphone mais elle fonctionne tout aussi bien sur un navigateur de PC.

 Ou trouver des URLs de web radio?

Je vous conseil le site http://tunein.com ou encore http://www.radio.fr. Une fois que vous avez trouvé une web radio vous n’avez qu’a récupérer l’url qui génére le flux audio pour la mettre dans Piclodio.

Sur Chrome:

  • clique droit sur la page
  • Procéder à l’inspection de l’élément
  • Onglet « Network
  • Trouver le script qui transfert le plus de données (celui qui à la plus grande bare jaune)
  • Copié la « Request URL » dans Piclodio

stream_audio_chrome

 

requestURL

Application Android Piclodio

C’est pas super de passer par le navigateur de son smartphone à chaque fois que l’on souhaite changer le réveil ou juste lancer la radio. Il faut lancer le navigateur puis rentrer l’url du raspberry ou aller la chercher dans ses favoris. Bref c’est trop long. Du coup j’ai fais une petite application Android qui va simplement faire un affichage de la page web du Rpi.

Le code est disponible  sur GitHub ici pour que les puristes barbus puissent vérifier que je n’ai pas placer à l’insu de mon plein gré une back door qui vend leurs données directement sur Ebay.

Sinon vous pouvez télécharger l’apk ici. Au lancement le programme vous demandera juste l’url de piclodio sur le Rpi.

settings_piclodiopiclodio_android

 

 

 

16 thoughts on “Web Radio réveil sur Raspberry”

  1. marcp dit :

    bonjour, envisageant de réaliser le même système pour mes enfants pourriez vous me dire si vous etes satisfait du résuiltat après quelques mois d’utilisation. auriez-vous fait certaines choses autrement ?

    merci d’avance pour votre réponse et merci pour cet article très interessant.

    1. Sispheor dit :

      Je suis très satisfait. J’ai conservé mon ancien réveil en secours pendant un moment et je m’en remet au Rpi entièrement aujourd’hui. Si je devais refaire le projet je pense que je partirais sur le framework Django car le Rpi aime beaucoup le langage python. Bien que pour une application de cette taille le gain serait probablement minime. Bon courage pour votre projet !

  2. valentinp72 dit :

    Bonsoir ! Depuis quelques jours je me sers de votre astuce pour la radio dans ma chambre, et pour le réveil (pour l’instant encore quelques bugs : décalage du réveil + re-démarrage impossible du Rbpi après installation de tout ça, je suis pour l’instant obligé de réinstaller Raspbian à chaque re-démarrage -__-), c’est vraiment génial !
    Je viens de commander deux écrans LCD (http://goo.gl/Us6WKA et http://goo.gl/4pfzxA), j’ai dans l’idée d’améliorer le tout en :
    – Affichant l’heure sur un écran
    – Affichant le nom de la radio
    – Affichant le nom de la musique & de l’artiste
    Mais malheureusement, je ne sais pas comment commencer, j’ai étudié le code source, c’est en PHP, je connais, mais pour faire la partie en Python, je sais pas du tout comment faire. Pour mon écran, je compte utiliser le tutoriel de idleman (http://goo.gl/j3KQdO) mais je comprends pas son code (c’est du Python).
    Pourriez-vous me donner quelques pistes, sans pour autant me mâcher le boulot ? :p

    Merci d’avance pour votre réponse 😉

    1. Sispheor dit :

      Bonjour. En ce qui concerne l’utilisation d’un écran je m’étais dit la même chose. Il est vrai qu’un réveil qui n’affiche pas l’heure c’est pas top ;).
      Alors moi je partirai plutôt sur un mini écran. idleman en parle aussi sur son blog. Il y a plusieurs avantage : l’affichage serra plus jolie que sur un écran de type téléphone portable et le code serra plus facile à produire car l’on peut profiter des librairies graphique de python comme Tkinter ou Pygame (ce dernier est natif à Raspbian). Le code de idleman n’est pas du python mais du C. Les sources sont disponibles sur sa page ici. Si vous voulez apprendre en douceur le python je vous recommande le site http://www.codecademy.com/.
      Bon courage !

  3. Kasi dit :

    Merci.

    Je cherche toujours un moyen d’obtenir les liens des webradios… quand j’utilise l’astuce tunein, j’obtiens : http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.map

    1. Sispheor dit :

      Il semble que pour ce site il est même une doc officielle pour récupérer le flux ici http://blog.tunein.com/moderator-help/stations/acquiring-internet-streams
      Bonne continuation.

  4. jean dit :

    merci beaucoup pour cette astuce permettant d écouter les radios
    super l application android encore merci et vivement une radio
    wi-fi avec affichage

  5. knarou dit :

    Bonjour, si cela vous intéresse, j’ai fait un radio réveil a base de raspberry, petit LCD, bouton encoder, et boite en carton 🙂

    http://knarou.megaplog.com/article-veritable-radio-reveil-raspberry-avec-radio-inte-7561.php

    Je vais partager mes sources et faire un petit tuto d’installer complète..

    K

    1. Sispheor dit :

      Merci, je penses que le commentaires servira aux lecteurs de passage sur le sujet. Félicitation pour le résultat.

  6. pide dit :

    Bonjour,
    sur la page index, je cherche à rajouter un bouton qui activerait une commande « sudo halt ». J’ai déjà essayé en faisant
    a href= »launch.sh » (avec launch.sh contenant sudo halt)

    j’ai essayé en ajoutant une fonction dans le fichier controller.js

    mais rien ne marche 🙁
    auriez-vous une idée?
    merci d’avance

    1. N.i.c.O dit :

      Bonjour, Désolé la version PHP n’est plus en développement. Je vous conseil de regarder du coté de la version Python.
      https://mespotesgeek.fr/piclodio-radio-reveil-raspberry-pi/

      Sinon il n’est pas possible de faire un href d’un script sh directement. Il faut faire un bouton qui appel une page PHP qui contient le code d’exécution du script.

  7. Aurélio dit :

    Bonjour,
    merci pour ces conseils très utiles car mis en place sur mon pi, je suis en place pour diffuser ma radio préférée dans ma résidence, et pour supprimer mon GROS pc très gourmand …….en tout, je le remplace par mon nano pc, mais j’ai un petit souci sur la mise en veille automatique qui me coupe mon plaisir, je n’arrive pas à mettre la main sur la solution.
    merci pour vos conseils et solutions.
    Bien cordialement.
    Aurélio

    1. N.i.c.O dit :

      Bonsoir, cette version n’est plus supportée. Voir ici pour la nouvelle –> https://mespotesgeek.fr/piclodio-radio-reveil-raspberry-pi/

  8. Aurélio dit :

    Bonsoir,
    tout marche parfaitement bien, le seul hic est que mon Pi se met en veille automatiquement, et je suis incapable de trouver une solution sur les différentes FAQ, help …….

    1. N.i.c.O dit :

      J’ai entendu parler de ce genre de phénomène avec certains adaptateurs wifi.
      Regardez ici –> https://www.raspberrypi.org/forums/viewtopic.php?t=61665

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *