Un des problèmes courants liés à internet consiste à savoir si on a reçu un email en un coup d'œil sans avoir à explicitement consulter un équipement informatique. Nous vous proposons cette semaine de résoudre le problème en allumant une Yocto-PowerColor quand un mail non lu vous attend dans votre mail box. En fait, le vrai problème consiste à intégrer le Yocto-PowerColor dans un élément de décoration, histoire que le résultat soit visuellement acceptable.
Vous connaissez probablement ces lampes fabriquées à partir de fibres optiques. L'idée consiste à en modifier une pour qu'elle puisse changer de couleur en fonction de certains évènements, comme la réception d'un email.
Ok, c'est un peu kitch, mais si on la pilotait par USB?
On a trouvé une de ces lampes pour moins de dix francs dans un magasin de gadgets électroniques bon marché. On a joué avec pendant trois minutes, et évidement on l'a démonté. A l'intérieur il n'y a le minimum syndical: trois piles, quatre leds et quatre résistances.
On l'a payée CHF 9.90 mais ça ne vaut pas plus
Bref il y a dans le pied de la lampe largement la place d'installer un Yocto-PowerColor pour autant qu'on sépare la led du driver. On a construit une armature en verre acrylique, pour placer la led à l'endroit idéal dans la lampe, mais vous pouvez utiliser des matières plus faciles à travailler comme du contre-plaqué. Pensez à faire des ouvertures pour qu'il y ai un peu d'air qui passe pour refroidir la led.
Si on sépare la led du driver, ça va rentrer
Pour améliorer le rendement lumineux, on a placé une optique Led-Engine sur la led. Le résultat est plutôt concluant.
L'électronique originale
La version Yoctopuce
Pour le câblage, on a relié le driver à la LED avec un câble Picoflex, et on a simplement coupé un câble USB ordinaire qu'on a soudé directement sur le module sur les pads prévus à cet effet.
C'est quand même un peu plus...
.. spectaculaire que l'original
Une fois que la lampe fonctionne, il suffit de coder la partie qui vérifie la présence d'email dans notre boîte aux lettres. On va faire ça en C# étant donné que c'est apparemment le langage qui a le plus de succès auprès des utilisateurs de modules Yoctopuce.
En fait, la programmation est des plus simple: On utilise l'excellente librairie ImapX qui permet de résumer la partie "check mail" à une série d'appels. La mise à jour de la led quand à elle prend 2 lignes.
Voici le code de la fonction principale de l'application. Elle se connecte sur le serveur de mail, compte les mails non lus, puis cherche une led RGB avec le nom logique MailIndicator et la passe en rouge s'il y a des mails non lu, en vert sinon.
{
log("Checking...");
// connect to the mail server, you might need to tweak the parameters
// to make it work on your own mail server
ImapX.ImapClient client = new ImapX.ImapClient(server.Text, 143, false);
bool result = false;
result = client.Connection();
if (!result)
{ log("Connection failed");
return ;
}
log("Connected");
// logon
result = client.LogIn(username.Text, password.Text);
if (!result)
{ log("Login failed");
return ;
}
log("Login ok");
// retreive messages
ImapX.MessageCollection messages = client.Folders["INBOX"].Messages;
log(messages.Count+" mails found in inbox");
// count unread messages
int UnreadMessages = 0;
for (int i = 0; i < messages.Count; i++)
{ messages[i].ProcessFlags();
if (!messages[i].Flags.Contains(ImapFlags.SEEN)) UnreadMessages++;
}
log(UnreadMessages + " unread messages");
client.LogOut();
// update the led status, We look for a led with logical name
// set to "MailIndicator" (the function name, not the
// Module name)
YColorLed led = YColorLed.FindColorLed("MailIndicator");
if (led.isOnline())
led.rgbMove(UnreadMessages > 0 ? 0xFF0000 : 0x00FF00, 1000);
else
log("No 'MailIndicator' led found");
}
Vous remarquerez que cette fonction marche aussi bien avec un Yocto-Color. Vous pouvez télécharger le projet complet ici.