Chronique d’un Raspberry n°2 – Un indicateur lumineux pour Gmail

On se retrouve pour cette deuxième chronique presque deux mois après la première. J’ai pas mal bidouillé depuis le premier numéro. Beaucoup commandé de matériel aussi. J’ai aussi changé de vision concernant l’utilisation de mon Raspberry. Il ne va pas (ou quasiment pas) me servir en tant qu’ordinateur à proprement parler étant donné qu’il n’a que 512mo de RAM et qu’il est sous Linux. Pas très confortable pour une utilisation quotidienne. Je vais par contre m’orienter vers l’utilisation des bornes GPIO, qui sont grossièrement des sorties électriques que l’on peut contrôler pour certaines. Nous allons donc aborder ici des tutos plus “avancés” qui concernent uniquement le Raspberry et non Linux en général étant donné que vous pouvez trouver ceux-ci sur de nombreux sites déjà très bien fournis et fait la plupart du temps par des connaisseurs, ce que je ne suis absolument pas (pour Linux en tout cas).

Le Raspberry Pi sera donc caché quelque part, sans écran ni clavier branchés. On devra donc se connecter sur le Raspberry en SSH. Je ne détaillerai pas ici la manip pour le faire. Vous trouverez un tuto très bien fait sur le site TropFacile.net.

Nous allons aujourd’hui voir comment créer un indicateur lumineux physique pour Gmail. Vous aurez besoin :

  • un Raspberry Pi sous Raspbian Wheezy
  • une LED de la couleur de votre choix (j’utilise une 5mm)
  • une résistance de 330 ohms (facultatif mais vivement conseillé, je n’en avais pas à disposition donc j’ai fait sans, mais la LED peut vous lâcher à n’importe quel moment)
  • deux câbles électriques (adaptés pour les breadboard de préférence, vous pouvez en trouver ici pour pas très cher)

Je vais utiliser ici une breadboard pour pouvoir facilement brancher la LED. Si vous comptez continuer dans cette direction vous aussi je vous conseille d’en faire l’acquisition, ça ne coûte rien et c’est très pratique pour vous éviter les soudures ou les enroulages de câbles douteux.

P1040579

Vous ne le savez peut être pas mais pour toute adresse mail de chez Google, un flux RSS sous la forme : https://USERNAME:PASSWORD@mail.google.com/gmail/feed/atom/ est disponible. Vous pouvez essayer ça marche pour toutes les boites. Nous allons donc utiliser ce flux RSS pour vérifier toutes les minutes l’arrivée de nouveaux mails non-lus dans la boite de réception.

Pour cela il vous faudra installer Python 2.7 ainsi que quelques librairies très bien faites pour contrôler les GPIO (RPi.GPIO) ou vérifier des flux RSS (feedparser). Bien sur les commandes s’entrent ligne par ligne, aussi n’allez pas copier-coller tout le bloc d’un coup. 🙂

sudo apt-get install python-pip python2.7-dev
sudo easy_install -U distribute
sudo pip install feedparser RPi.GPIO

Vous avez maintenant tous les pré-requis nécessaires aux montage de ce système. Le montage est d’une simplicité enfantine, il vous suffit de reproduire ce circuit sur votre breadbord ou sans mais préparer les tours de fils.

schéma

Passons maintenant au code en lui même. Enregistrez ce code quelque part dans votre Raspberry. Pour cela créer un document texte avec l’éditeur nano (choisissez le nom que vous voulez) :

sudo nano raspi_gmail.py

Et copiez-y ce code :

# On importe ce qui est nécessaire
import RPi.GPIO as GPIO, feedparser
import time

# On renseigne nos identifiants
USERNAME="votre_mail@gmail.com"
PASSWORD="votre_mot_de_passe"

# On défini quel PIN est utilisé pour brancher la LED
GPIO_PIN=11

# On le défini en sortie
GPIO.setmode(GPIO.BOARD)
GPIO.setup(GPIO_PIN, GPIO.OUT)

# On inspecte le flux RSS
newmails = int(feedparser.parse("https://" + USERNAME + ":" + PASSWORD + "@mail.google.com/gmail/feed/atom")["feed"]["fullcount"])

# Si le nombre de mail est supérieur à 0 alors on fait clignoter la LED
if newmails > 0: 
	for i in range(1,58) :
   GPIO.output(GPIO_PIN, True)
   time.sleep(1)
   GPIO.output(GPIO_PIN, False)
   i = i+1

# Si il est inférieur à 0 on ne fait rien
else: 
	GPIO.output(GPIO_PIN, False)

J’ai commenté le code pour une meilleure visibilité de votre part mais vous pouvez enlever toutes les lignes commençant par # si vous préferez.

Le problème est que nous devons recharger le code toutes les minutes, ce qui le rend totalement inutile si ça doit être fait manuellement. Heureusement Raspbian intègre crontab qui permet de programmer des tâches répétitives comme charger un logiciel au reboot ou un script chaque minute comme dans notre cas. Pour ce faire ouvrez crontab :

sudo crontab -e

Ajoutez cette ligne à la fin du fichier (modifiez le chemin d’accès suivant votre fichier) :

* * * * * python /home/pi/raspi_gmail.py

Et c’est fini ! Cron va exécuter le script toutes les minutes, si vous avez un (ou plusieurs) messages non-lues la LED va se mettre à clignoter chaque seconde, si vous n’en avez pas la LED restera éteinte.

Rédacteur qui n'est plus présent sur le site depuis un certains temps, son compte a donc été supprimé.

3 Comments

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.