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)
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.
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.
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.
Tu gères 😉
Merci pour cette 2ème chronique !
Je trouve ça vraiment cool ! (En plus c’est bien expliqu
Merci à toi 🙂