Ma Raspberry Pi MusicBox

On m’a récemment demandé de trouver une façon de faire jouer une liste Spotify en continu.

Au début, on me proposait d’utiliser une tablette, mais on voulait quelque chose qui pouvait être automatisé et configuré avec plus de flexibilité. Après quelques recherches, je suis tombé sur le projet Pi MusicBox qui répondait à mes besoins. Après quelques essais et erreurs, j’ai réussi à me faire une configuration plutôt stable. Un problème que j’ai eu à de multiples reprises, fut la corruption de la carte mircoSD (due à une interruption impromptue du Raspberry Pi), ce qui m’obligeait à recharger mon image et refaire toutes les configurations. J’ai fini par mettre mon Raspberry Pi en mode lecture seule, afin d’éviter que ce problème revienne.

Voici une procédure étape par étape de ma configuration.

Note : Pour pouvoir utiliser Spotify, vous devez disposer d’un compte premium.

Matériel utilisé :

Étape 1 configuration de la carte microSD

Puisque j’étais sous Windows, j’ai utilisé l’utilitaire Win32 Disk Imager. Il suffit de télécharger l’image de Pi MusicBox, disponible sur la page référée ci-dessus ou directement, en suivant ce lien https://github.com/pimusicbox/pimusicbox/releases/tag/v0.7.0RC6.

Sous Linux, vous pouvez utiliser l’utilitaire dd pour écrire l’image sur la carte microSD.

/dev/sdX correspond au chemin vers votre carte microSD, en prenant pour acquis que vous êtes dans le répertoire où se trouve le fichier image.

Étape 2 connexion de la Raspberry Pi

Il est assez simple de brancher la Raspberry Pi, il suffit de brancher le fil réseau à la Pi, d’y connecter la prise analogue à votre amplificateur en utilisant le fil Jack à RCA, et d’y brancher le courant.

Il peut être pratique d’y connecter un écran et un clavier, mais ce n’était pas nécessaire (dans mon cas).

Étape 3 configuration (de base)

Vous devez d’abord identifier l’adresse IP de votre Pi. Personnellement, j’ai regardé l’attribution faite par mon serveur DHCP faite à ma Pi. Elle est facilement identifiable, son nom est MusicBox. Si vous avez branché un moniteur à la Pi, l’adresse IP devrait être affichée à l’écran.

Disons que l’adresse identifiée est : 192.168.0.10

Dans un fureteur, entrez l’adresse http://192.168.0.10 dans la barre d’adresse.

Vous devriez tomber sur l’interface web de la MusicBox.

  1. Dans la section Settings, nous allons d’abord configurer un mot de passe pour l’utilisateur root.
      1. Ouvrir l’onglet MusicBox.
      2. Mettre un mot de passe.
      3. Enregistrer les modifications.
      4. Appliquer les modifications et redémarrer le Pi.
    1. Effectuer les autres configurations possible via l’interface web (note : vos configurations peuvent varier). Retournez sur la Settings de l’interface web, puis :
      1. Dans l’onglet Network, activer la connexion SSH.
      2. Dans l’onglet MusicBox :
        1. Configurer l’URL de lecteur automatique (dans mon cas, pour Spotfiy) : spotify:user:Nom-d’utilisateur:playlist:Id-de-la-liste.
        2. Mettre le Autoplay Timeout à 600 secondes.
        3. Activer le Stream Watchdog.
      3. Dans l’onglet Audio, choisir la sortie Analog.
    2. Dans l’onglet Spotify :
      1. Activer l’option Enable playing music form Spotify.
      2. Entrer le nom d’utilisateur et le mot de passe de votre compte Spotify.
      3. Activer l’option Spotify Connect.
      4. Activer l’option Spotify Web.
      5. Suivre le lien https://www.mopidy.com/authenticate
      6. Copier le Client ID et le Client Secret dans les cases à cet effet.
    3. Enregistrer les modifications.
    4. Appliquer les modifications et redémarrer le Pi.

Si tout s’est bien passé, la musique de votre liste Spotify devrait jouer au redémarrage de la Pi.

Étape 4 configuration (avancée)

Vous devez d’abord vous connecter à la Pi, si vous y avez branché un moniteur et un clavier, il est possible de faire les configurations suivante directement sur la Pi, personnellement, je préfaire utiliser SSH pour faire ceci. Vous pouvez donc vous connecter à votre Pi en utilisant Putty (sous Windows) ou SSH (sous Linux).

Sous  Linux, utilisez la ligne de commande suivante pour vous connecter à votre Pi.

  1. Configurer le fuseau horaire.
  2. Puisque je voulais que la liste Spotify joue de façon aléatoire et en boucle, j’ai aussi ajouter les lignes suivantes au fichier /opt/musicbox/startup.sh

Voilà! Tout est configuré. Mais, nous avions dit que nous voulions que la Pi soit en lecture seule, afin d’éviter la corruption de la carte microSD.

Étape 5 configuration de la Pi en lecture seule

Afin de me guider dans la configuration de ma Pi en lecture seule, je me suis basé sur les deux pages suivantes :

Le deuxième réfère à une installation Raspbian de base (utilisant Jessie), puisque nous utilisons Pi MusicBox (Wheezy), il faut en prendre et en laisser, voici ce que j’ai fait.

Désactivation de la swap et de la vérification du système de fichiers.

Il faut pour ce faire ajouter les paramètres fastboot noswap ro à la ligne de commande du fichier /boot/cmdline.txt.

Mon fichier original était comme ceci :

Mon fichier modifié est donc comme ceci :

Déplacement de fichiers dans le système de fichier temporaire.

Installation du paquet resolvconf.

Afin de permettre la mise à jour des serveurs de noms par l’entremise de DHCP, nous devons installer le paquet resolvconf.

Modification de la synchronisation de l’horloge internet.

Premièrement, installons le service ntp (Network Time Protocol).

Puis, il faut modifier le fichier de configuration du service ntp pour permettre l’écriture (temporairement) lorsque l’heure est mise à jour. Pour ce faire, nous devons ajouter des lignes au fichier /etc/cron.hourly/fakehwclock.

Mon fichier original était comme ceci :

Mon fichier modifié est comme ceci :

Noter les modifications aux lignes 7 et 9 du fichier modifié.

Ensuite, nous devons rediriger le driftfile du fichier /etc/ntp.conf vers une zone inscriptible.

Mon fichier original contenait la ligne suivante :

que j’ai commentée, puis j’ai ajouté une ligne comme ceci :

Modification de l’emplacement des logs de mopidy.

Afin de permettre l’écriture du fichier log de Mopidy, nous devons modifier l’emplacement du fichier en question. Pour ce faire, nous enlevons simplement le sous-répertoire mopidy du chemin du fichier de journalisation dans le fichier de configuration /etc/mopidy/logging.conf.

Mon fichier original était comme ceci :

Mon fichier modifié est comme ceci :

Noter la modification de la ligne 21 de mon fichier.

Altération du démarrage

Tout d’abord, nous enlevons 2 scripts de démarrage en utilisant la ligne de commande suivante :

Finalement, nous modifions le fichier /etc/fstab afin de lui indiquer de monter les partitions en lecture seule.

Mon fichier original était comme ceci :

Mon fichier modifié est comme ceci :

Noter les modifications  aux lignes 2 et 3 (ajout du paramètre ro pour readonly) ainsi qu’à la ligne 5 que j’ai commentée. Je ne suis pas certain que la modification de la ligne 5 était nécessaire, mais tout semble bien tourner avec cette configuration.

Redémarrer

Nous avons terminé, il ne reste qu’à redémarrer la Raspberry Pi afin d’appliquer toutes les modifications.

Comment passer du mode lecture seule au mode lecture/écriture

Si vous devez passer en mode lecture/écriture afin de modifier une configuration ou pour toute autre raison. Vous pouvez utiliser la ligne de commande suivante :

Pour retourner en mode lecture seule, utilisez la commande suivante :

Voilà!

Tout est configuré, vous pouvez maintenant profiter de votre MusicBox.

 

Cloche programmable Raspberry Pi

Nous utilisions, au travail, un système de cloches complètement archaïque qui datait de Mathusalem (ou presque). La programmation de cette cloche était très complexe et aucune documentation n’était disponible. Puisque la programmation de la cloche avait été faite avant le changement de date des changements d’heures en Amérique du Nord (2007) et que personne ne semblait savoir comment programmer le changement d’heure de la cloche, je devais changer, 4 fois par année, l’heure du système. De plus, notre ancien système prenait du retard (environ 10 minutes par année). Alors, lorsqu’on m’a demandé s’il était possible d’ajouter une deuxième cloche à notre système, j’ai proposé de créer un nouveau système digne de notre siècle pour remplacer notre vieillerie.

Matériel requis :

  • 2 fils Dupont mâle/femelle (rouge)
  • 1 fil Dupont mâle/femelle (noir)
  • 2 fils Dupont mâle/mâle (rouge)
  • 6 fils Dupont mâle/mâle (noir)
  • 2 cloches Ajax Scientific Deluxe Electric Bell (ASIN: B00EPQKIXE)
  • 1 planche de montage expérimental (breadboard)
  • 1 puce à circuit intégré ULN2003A
  • 1 Raspberry Pi (B+ v1.2 dans mon cas)
  • 1 connecteur DC femelle 2.1 pour planche de montage expérimental
  • 1 adaptateur DC-16V 1A
  • 1 carte micro SD 4Go (ou plus)
  • 1 chargeur micro USB
  • 1 fil réseau

Matériel optionnel :

  • 1 cable HDMI
  • 1 écran compatible HDMI
  • 1 clavier USB

 

Étape 1 : préparer le Raspberry Pi.

Téléchargez et extraire Raspbian Jessie Lite sur un ordinateur pouvant lire les cartes SD (ou utiliser un adaptateur micro SD/USB), puis montez l’image sur la carte SD.

Sous Linux :

En remplaçant /chemin/vers/ par l’emplacement où se trouve le fichier image et /dev/sdX par le périphérique correspondant à la carte micro SD.

Sous Windows :

Utilisez un programme tel que Win32 Disk Imager pour transférer l’image sur la carte micro SD.

Puis, insérez la carte micro SD dans le Raspberry Pi (RPi) et démarrer celui-ci. Connectez-vous sur le RPi en utilisant l’utilisateur pi et le mot de passe raspberry, puis lancer l’utilitaire raspi-config.

Nous allons d’abord étendre le système de fichier en choisissant l’option 1. Ensuite, nous devons activer quelques options avancées notamment SPI, I2C et accessoirement SSH (afin de simplifier la gestion).

Nous pouvons maintenant choisir l’option Finish et redémarrer le RPi. Nous pouvons vérifier que les modules sont bel et bien installés à l’aide de la commande suivante.

Maintenant, nous allons mettre les paquets apt à jour, puis installer certains paquets nécessaires au fonctionnement de notre projet.

Voilà, le RPi est prêt pour l’utilisation des entêtes GPIO.

Étape 2 : création du fichier pi_bell.py.

Créons un nouveau fichier pi_bell.py dans le sous-répertoire pi_bell répertoire « home » de l’utilisateur pi ou clonons simplement mon référentiel GitLab. Il est conseillé de cloner le référentiel plutôt que de créer le fichier, puisque le référentiel sera possiblement mis à jour.

Puis, compions le contenu du fichier.

Ou, clonons simplement le référentiel GitLab comme suit :

Consulter le référentiel GitLab.

Étape 3 : Brancher les composantes.

Avertissement : il est conseillé d’éteindre le RPi avant d’y connecter d’autres composantes. De plus, veuillez redoubler de prudence en jouant avec les courants électriques.

Cette étape est plutôt simple, nous n’avons qu’à connecter les composantes en conformité avec le schéma suivant.

 

 

Étape 4 : Tester le fonctionnement du système.

À cette étape, le système de cloches devrait être fonctionnel. Pour tester le bon fonctionnement de celui-ci, nous devons taper la commande suivante dans la console.

Si vous obtenez un message d’erreur comme celui-ci :

RuntimeError: No access to /dev/mem. Try running as root!

Vous essayez probablement d’exécuter la commande en tant qu’un utilisateur autre que pi. Par défaut, l’utilisateur pi a accès aux GPIO. Vous pouvez toutefois ajouter quelques groupes à votre utilisateur pour lui donner accès au contrôle des GPIO. Par exemple, pour autoriser l’utilisateur julien à contrôler les GPIO, j’entrerais la commande suivante.

Étape 5 : Programmer la cloche.

La programmation de la cloche se fait à l’aide des crontabs.

Afin de ne pas effacer les crontabs que nous pourrions déjà avoir, nous en faisons une sauvegarde dans un fichier temporaire nommé cron.tmp  auquel nous allons ajouter quelques lignes. Dans cet exemple, nous allons programmer les cloches pour qu’elles sonnent à midi et à 16 h 30 tous les jours de semaine (du lundi au vendredi). Puis, nous allons mettre à jour les crontabs et finalement nous effaçons notre fichier temporaire.

Voilà!

Nous avons maintenant une cloche moderne qui sonnera quand et comme nous le voulons!

Mon script de message du jour perso pour Debian.

Consulter le référentiel GitLab.

Dukesay, ah la vache!

Vous connaissez peut-être les applications cowsay et fortune qui sont disponibles dans plusieurs distributions de Linux depuis longtemps, eh bien voici dukesay. Ce projet utilise les deux applications citées et y met le célèbre Duke accompagné de quelques une de ses citations les plus « savoureuses ».

Nom du projet : Dukesay
Version actuel : 0.0.2a
Date de publication : 2014-01-08
Plateforme : Linux
Langage : bash
Auteurs : Julien Bonnier, Steven Beaupré

Versions :

0.0.2a

  • Ajout du paramètres d’entré -c.

0.0.1a

  • Ajout des paramètres d’entrés -h -l -q -s -f.

0.0.0a