Créer un témoin de notification Gmail pour Raspberry Pi

Créer un témoin de notification Gmail pour Raspberry Pi / DIY

Dans ce projet simple et rapide de Raspberry Pi, vous apprendrez comment allumer un message de notification par courrier électronique Gmail. Si vous avez des courriels non lus, un script Python allume le voyant. Ce projet nécessite très peu de pièces et peut être complété en moins d'une heure! Vous pouvez bien sûr habiller votre LED comme bon vous semble, comme un bloc de pierre rouge MineCraft ou tout autre objet imprimé en 3D en plastique transparent. Voici le résultat final:

De quoi as-tu besoin

  • 1 x Raspberry Pi
  • 1 x planche à pain
  • 1 x résistance de 220 ohms
  • 1 x 5mm LED
  • 1 x compte Gmail
  • Fil mâle à femelle

N'importe quel Raspberry Pi travaillera pour ce projet - même le Pi Zero! Une seule broche GPIO est nécessaire et ne nécessite pas beaucoup de ressources processeur. Si vous avez un kit de démarrage Pi, vous avez suffisamment de pièces pour le compléter..

Plan de construction


C'est un projet vraiment simple. Une diode électroluminescente (DEL) est connectée à une broche GPIO (entrée polyvalente) sur le Pi. Un script Python très simple s'exécutera régulièrement pour vérifier les e-mails non lus et allumer ou éteindre le voyant en conséquence..

Le matériel


Connectez l’anode positive (jambe longue) du voyant à la résistance, puis à la broche 14 de GPIO. Vous pouvez utiliser n’importe quelle broche GPIO, mais regardez tout d’abord le brochage, car ils varient légèrement d’un modèle à l’autre. Reliez la cathode négative (jambe courte avec bord plat) à la terre.

Configuration Pi


Si votre Pi dispose d’un système d’exploitation installé (système d’exploitation), il ne nécessite pas beaucoup d’installation (vous ne savez pas ce dont vous avez besoin? Découvrez comment l’installer ici. Comment installer un système d’exploitation sur votre Raspberry Pi. Comment installer un système d’exploitation sur votre Raspberry Pi Voici comment installer et utiliser un nouveau système d'exploitation sur votre Pi - et comment cloner votre configuration idéale pour une récupération après sinistre rapide. Ouvrir un nouveau terminal (En haut à gauche > menu > Accessoires > Terminal) sur le Pi (vérifiez ces raccourcis pour vous transformer en ninja de code. Gagnez du temps dans le terminal Linux avec ces 20 raccourcis. Gagnez du temps dans le terminal Linux avec ces 20 raccourcis. Que vous soyez un débutant en terminal ou quelqu'un qui a surmonté sa peur il y a longtemps , Voici 20 raccourcis qui peuvent vous aider à surmonter certains des inconvénients de la ligne de commande. Lire la suite). Vous devez créer un nouveau dossier pour stocker le script Python. Entrez la commande suivante:

pwd

Cela signifie “Imprimer le répertoire de travail”, et vous montrera dans quel dossier vous vous trouvez (par défaut “/ home / pi”). Naviguez dans le dossier de documents et créez un nouveau répertoire (dossier) appelé “gmail_python”:

cd Documents / sudo mkdir gmail_python

le “mkdir” commande signifie “Créer un répertoire”. Tout ce qui suit sera utilisé pour le nom du répertoire. Vous devriez maintenant pouvoir voir votre répertoire:

ls

Si vous avez commis une erreur, vous pouvez facilement supprimer ce répertoire:

sudo rm -r gmail_python

Maintenant, naviguez dans le nouveau répertoire:

cd gmail_python /

Créez un nouveau script Python:

sudo nano check_messages.py

Cela créera le script et l'ouvrira, prêt pour l'édition dans Nano. Vous pouvez bien sûr utiliser un autre programme, tel que Vim, bien que ce tweet résume mes sentiments à ce sujet:

J'utilise Vim depuis environ 2 ans maintenant, principalement parce que je ne vois pas comment le quitter..

- Je suis Devloper (@iamdevloper) 17 février 2014

Blague à part, vérifiez cette comparaison entre les deux comparateurs nano et vim: Editeurs de texte comparés nano et vim: Editeurs de texte pour terminaux comparés Bien que Linux soit devenu assez facile à utiliser pour presque tout le monde sans avoir à utiliser le terminal, il existe de nous qui l'utilisons régulièrement ou sommes curieux de savoir comment on peut contrôler… Lire la suite pour une ventilation complète.

presse CTRL + X pour quitter Nano et revenir au terminal.

Configuration Python


Maintenant que le Pi est installé, il est temps d'écrire le code. Ce projet nécessite l'excellente bibliothèque Gmail Python de Charlie Guo. Téléchargez la bibliothèque à partir de Github et extrayez le contenu. À l'intérieur, il devrait y avoir un dossier appelé “Gmail”. Copier tout ce dossier dans “/ home / pi / Documents / gmail_python”.

Revenez à la ligne de commande et ouvrez votre script à nouveau (si vous appuyez sur la touche haut, vous pouvez faire défiler vos commandes précédemment entrées):

sudo nano check_messages.py

Notez que c'est la même commande que vous avez utilisée pour créer le fichier. Si un fichier existe déjà, il sera ouvert, sinon il sera créé. Voici le Python:

importer gmail, RPi.GPIO en tant que GPIO, heure # modules d'importation GPIO.setwarnings (False) GPIO.setmode (GPIO.BCM) # indique au Pi quels en-têtes utiliser GPIO.setup (14, GPIO.OUT) # dire au Pi ceci pin est une sortie g = gmail.login ('[email protected] ',' YOUR PASSWORD ') unread_messages = g.inbox (). mail (unread = True) total_messages = 0 pour le message dans unread_messages: total_messages + = 1 if total_messages> 0: # il y a des e-mails non lus, allumer la lumière sur GPIO.output (14, True) sinon: # il n'y a pas d'e-mails non lus, éteindre la lumière sur GPIO.output (14, False)

Vous devrez entrer votre nom d'utilisateur et votre mot de passe pour que cela fonctionne. Vous pouvez afficher le code source complet du plug-in gmail si vous le souhaitez. Si vous ne vous sentez pas à l'aise avec cette opération (ou si vous utilisez une authentification à deux facteurs), vous devrez vous connecter à Gmail à l'aide de OAuth2. C'est un peu compliqué pour ce tutoriel, cependant, Google a un excellent guide de prise en main..

Décomposons le code. Certains modules sont d'abord importés. Les modules en Python sont de petits morceaux de code écrits dans un but précis (similaires aux bibliothèques de l'EDI Arduino). RPi.GPIO est un module spécifique à Pi permettant d’accéder au GPIO, gmail est le module que vous avez téléchargé précédemment et time est un module intégré à Python qui fournit des fonctions de minutage. À présent “GPIO.setmode” et “GPIO.setup” sont utilisés pour indiquer au Pi que la broche 14 est une sortie et que vous souhaitez utiliser “Numérotation des broches Broadcom” (plus d'informations sur BCM).

Cette ligne se connecte à votre compte Gmail. Il crée un objet appelé “g”, et appelle la méthode de connexion du module gmail importé précédemment. N'oubliez pas de saisir votre email et votre mot de passe gmail.

g = gmail.login ('[email protected] ',' VOTRE MOT DE PASSE ')

Maintenant, récupérez tous les messages non lus et stockez-les dans une variable appelée “messages non lus”:

unread_messages = g.inbox (). mail (unread = True)

Remarquez comment “non lu = vrai” est passé en tant que paramètre - vous pouvez le modifier pour récupérer des messages en fonction de différents paramètres, tels que l'expéditeur ou le sujet. Consultez la documentation de l'API pour plus d'informations..

Ensuite, une boucle for est utilisée pour parcourir tous les messages:

pour le message dans unread_messages: total_messages + = 1

Les boucles sont très utiles. Ils répètent un bloc de code plusieurs fois, souvent avec une valeur légèrement différente à chaque fois. Cette boucle for parcourt chaque message dans unread_messages et incrémente la “total_messages” variable.

Enfin, quelques simples “si” les déclarations sont utilisées. S'il y a des messages non lus, allumer le voyant, sinon éteindre.

N'oubliez pas que Python est sensible à la casse et utilise un espacement des blancs. Si vous rencontrez des problèmes pour exécuter le code, essayez ce site Web. Collez votre Python et appuyez sur le “valider le code python ci-dessus” bouton. Ceci devrait alors vous dire quelles erreurs (le cas échéant) sont présentes dans votre Python..

Basculez vers le terminal et lancez votre script:

python check_messages.py

Cette commande lancera votre script. Essayez de modifier manuellement certains e-mails de votre boîte de réception en les rendant non lus et de réexécuter le script. Vous devriez voir le voyant s'allumer ou s'éteindre pour refléter votre boîte de réception..

Configuration Cron

Maintenant que le script fonctionne, il est temps de l'automatiser. Le moyen le plus simple de le faire consiste à utiliser un travail cron. Les tâches Cron sont utilisées pour planifier des tâches et des scripts, tels que des sauvegardes automatisées. Ouvrez la Crontab (liste des tâches planifiées):

crontab -e

S'il n'y a pas de tâches planifiées déjà configurées, ce fichier sera vide (il peut contenir de la documentation ou des commentaires, précédés d'un “#”). Si vous avez déjà des entrées ici, entrez simplement votre nouvelle commande sur une nouvelle ligne:

* * * * * python ~ / pi / Documents / gmail_python / check_messages.py

Les cinq “étoiles” (“* * * * *”) spécifiez la fréquence à laquelle vous exécutez la tâche (vous pouvez vraiment vous en sortir ici, par exemple tous les deux mercredis à 2h00). Ces cinq étoiles spécifient que la tâche doit être exécutée toutes les minutes. Il s'agit du plus petit intervalle autorisé (en savoir plus sur la planification de cronjob. Procédure de planification de tâches sous Linux avec Cron et Crontab. Procédure de planification de tâches sous Linux avec Cron et Crontab. La possibilité d'automatiser des tâches est l'une de ces technologies futuristes déjà présentes. Chaque système Linux Les utilisateurs peuvent tirer parti du système de planification et des tâches des utilisateurs, grâce à cron, un service d’arrière-plan facile à utiliser. Suivant, “python” indique au planificateur d'exécuter le script en tant que fichier python. finalement, “~ / pi / Documents / gmail_python / check_messages.py” est le chemin de fichier absolu de votre script - un chemin relatif ne fonctionnera pas.

Vous devriez maintenant avoir votre propre voyant de notification Gmail! Il serait assez simple de modifier ceci pour rechercher des messages basés sur une exigence ou un filtre différent (apprenez à utiliser les filtres ici 10 Problèmes de messagerie que vous pouvez résoudre avec les filtres Gmail 10 Problèmes de messagerie que vous pouvez résoudre avec des filtres Gmail Une boîte de réception débordante vous rend fou "Voulez-vous parcourir votre boîte de réception plus rapidement que jamais? Essayez quelques-uns de ces brillants filtres Gmail pour voir la différence. Lisez-en plus), ou exécutez un morceau de code différent - vous pourriez peut-être créer un bot Twitter qui tweete sur la base d'e-mails (apprendre en savoir plus sur la création d'un bot Twitter Pi Comment créer un Twitter bot Raspberry Pi Comment construire un Twitter Twitter Pi est le plus grand répertoire au monde de messages courts émanant de personnes qui n'ont rien à dire - et vous aussi pouvez maintenant contribuer à ce projet épique avec un bot Twitter automatisé, propulsé par votre Raspberry… En savoir plus).

Quelle que soit la façon dont vous finissez par coder votre boîte de notification, j'aimerais savoir comment cela se passe dans les commentaires.!

En savoir plus sur: Gmail, Raspberry Pi.