My 1st Arduino project

Je viens de terminer mon premier code pour une carte Arduino.
Ce code est destiné à un gadget qui averti l’utilisateur de l’arrivée de mails. Lorsqu’il y a des messages non lus dans la boîte de réception électronique, l’objet s’illumine. L’objet est designé par Arturo Erbsman et est en cours de réalisation.

Le code tourne pour l’instant sur une Duemilanove équipée de l’ETHERNET Shield. À terme il sera intégré dans une YellowJacket d’AsyncLabs qui est une Arduino Mini dotée d’une interface Wifi.

Le principe est assez simple. L’Arduino se connecte au serveur mail sur le port 143 et envoie ensuite les commandes IMAP suivantes :
- a1 LOGIN user pass
- a2 SELECT INBOX
- a3 LOGOUT.
Le protocole IMAP impose que chaque commande soit précédée d’un identifiant alphanumérique unique (ici a1, a2 et a3). L’identifiant est utilisée dans la réponse du serveur pour spécifier à quelle commande correspond la réponse.
La commande SELECT INBOX permet de sélectionner le dossier “Boite de réception” du compte auquel on vient de se connecter avec la commande LOGIN user pass. Le serveur renvoit plusieurs information en réponse à la commande SELECT ce qui ressemble à ça :

a2 SELECT INBOX
* 1 EXISTS
* 0 RECENT
* OK [UNSEEN 1] mailbox contains unseen messages
* OK [UIDVALIDITY 1] UIDs are valid for this mailbox
* OK [UIDNEXT 1523] next expected UID is 1523
* FLAGS (\Answered \Deleted \Draft \Flagged \Seen $Forwarded $MDNSent Forwarded $Junk $NotJunk Junk JunkRecorded NonJunk NotJunk)
* OK [PERMANENTFLAGS (\Answered \Deleted \Draft \Flagged \Seen $Forwarded $MDNSent Forwarded \*)] junk-related flags are not permanent
* OK [HIGHESTMODSEQ 7207] modseq tracked on this mailbox
a2 OK [READ-WRITE] SELECT completed

On trouve dans ce message la ligne [UNSEEN 1] qui indique que la boite mail contient un ou plusieurs messages non lus (ici le 1 correspond non pas au nombre de mails non lus mais à l’identifiant du premier message non lu de la boite). Le code Arduino cherche la chaîne de caractères “UNSEEN” dans la réponse du serveur à la commande a2. Si il la trouve, il allume une LED, s’il ne la trouve il l’éteint.

Télécharger le projet Arduino.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>