Faire une lumière de notification Raspberry Pi Gmail

Dans ce projet Raspberry Pi rapide et facile, vous apprendrez comment faire une notification par courriel Gmail. Si vous avez des e-mails non lus, un script Python allume le voyant.

Dans ce projet Raspberry Pi rapide et facile, vous apprendrez comment faire une notification par courriel Gmail.  Si vous avez des e-mails non lus, un script Python allume le voyant.
Publicité

Dans ce projet Raspberry Pi rapide et facile, vous apprendrez comment faire une notification par courriel Gmail. Si vous avez des e-mails 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 vous le souhaitez, comme un bloc Redstone MineCraft ou un 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 compte Gmail
  • Mâle à femelle raccorder des fils

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

Construire un plan

Gmail-Notification-LED
C'est un projet vraiment simple. Une diode électroluminescente (LED) est connectée à une broche GPIO (sortie d'entrée à usage général) sur le Pi. Un script Python très simple fonctionnera régulièrement pour vérifier les e-mails non lus et activer ou désactiver le voyant en conséquence.

Le matériel

Gmail-Notification-Circuit
Connectez l'anode positive (longue branche) de la LED à la résistance, puis à la broche GPIO 14. Vous pouvez utiliser n'importe quelle broche GPIO, mais regardez d'abord le brochage, car ils varient légèrement entre les modèles. Connectez la cathode négative (jambe courte avec bord plat) à la terre.

Configuration Pi

Gmail-Notification-Pi
Fournir votre Pi a un système d'exploitation (OS) installé il n'y a pas beaucoup d'installation nécessaire (pas sûr de ce dont vous avez besoin? Apprenez à en installer un ici Comment installer un système d'exploitation à votre Raspberry Pi Comment installer un système d'exploitation à votre framboise Pi Voici comment obtenir un nouveau système d'exploitation installé et fonctionnant sur votre Pi - et comment cloner votre installation parfaite pour la récupération après sinistre rapide. Ouvrez un nouveau terminal (en haut à gauche > menu > Accessoires > Terminal ) sur le Pi (checkout ces raccourcis pour vous faire un ninja de programmation Gagnez du temps dans le terminal Linux avec ces 20 raccourcis Gagnez du temps dans le terminal Linux avec ces 20 raccourcis En ce qui concerne un novice terminal ou quelqu'un qui a dépassé la peur il y a longtemps, voici 20 raccourcis qui peuvent vous aider à surmonter certaines des maladresses de la ligne de commande. Vous devez créer un nouveau dossier pour stocker le script Python. Entrez la commande suivante:

pwd 

Cela signifie "Print Working Directory", et vous montrera dans quel dossier vous vous trouvez (par défaut c'est "/ home / pi"). Naviguez dans le dossier des documents et créez un nouveau répertoire (dossier) appelé "gmail_python":

 cd Documents/ sudo mkdir gmail_python 

La commande "mkdir" signifie "Make Directory". Tout ce qui suit sera utilisé pour le nom du répertoire. Vous devriez maintenant pouvoir voir votre répertoire:

 ls 

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

 sudo rm -r gmail_python 

Naviguez maintenant dans le nouveau répertoire:

 cd gmail_python/ 

Créez un nouveau script Python:

 sudo nano check_messages.py 

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

J'utilise Vim depuis environ 2 ans maintenant, principalement parce que je n'arrive pas à comprendre comment le quitter.

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

Blague à part, vérifiez cette comparaison entre les deux nano vs vim: Editeurs de texte Terminal Comparé nano vs vim: Editeurs de texte Terminal comparé Bien que Linux est devenu assez facile pour pratiquement tout le monde à utiliser sans jamais avoir à utiliser le terminal, il y a 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.

Appuyez sur CTRL + X pour quitter Nano et revenir au terminal.

Configuration Python

Gmail-Notification-Code
Maintenant que le Pi est configuré, 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 depuis Github et extrayez le contenu. A l'intérieur il devrait y avoir un dossier appelé "gmail". Copiez ce dossier entier dans "/ home / pi / Documents / gmail_python".

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

 sudo nano check_messages.py 

Remarquez 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:

 import gmail, RPi.GPIO as GPIO, time # import modules GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) # tell the Pi what headers to use GPIO.setup(14, GPIO.OUT) # tell the Pi this pin is an output g = gmail.login('[email protected]', 'YOUR PASSWORD') unread_messages = g.inbox().mail(unread=True) total_messages = 0 for message in unread_messages: total_messages += 1 if total_messages>0: # there are unread emails, turn light on GPIO.output(14, True) else: # there are no unread emails, turn light off GPIO.output(14, False) 

Vous devrez entrer votre nom d'utilisateur et votre mot de passe pour que cela fonctionne. Vous pouvez voir le code source complet pour le plugin Gmail si vous le souhaitez. Si vous ne vous sentez pas à l'aise de le faire (ou si vous utilisez une authentification à deux facteurs), vous devrez vous connecter à Gmail en utilisant OAuth2. Ceci est un peu impliqué pour ce tutoriel, mais Google a un excellent guide de démarrage.

Décompressons le code. D'abord certains modules sont importés. Les modules en Python sont de petits morceaux de code écrits dans un but (similaire aux bibliothèques de l'IDE Arduino). RPi.GPIO est un module spécifique Pi pour accéder au GPIO, gmail est le module que vous avez téléchargé précédemment, et le temps est un module intégré en Python pour fournir des fonctions de synchronisation. Maintenant, "GPIO.setmode" et "GPIO.setup" sont utilisés pour indiquer au Pi que la broche 14 est une sortie, et que vous voulez utiliser "Broadcom Pin Numbering" (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 d'entrer votre adresse e-mail et votre mot de passe Gmail.

 g = gmail.login('[email protected]', 'YOUR PASSWORD') 

Récupérez maintenant tous les messages non lus et stockez-les dans une variable appelée "messages non lus":

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

Notez comment "non lu = Vrai" est passé en paramètre - vous pouvez le modifier pour récupérer des messages basés sur différents paramètres, tels que l'expéditeur ou le sujet. Consultez la documentation de l'API (Application Programming Interface) pour plus d'informations.

Ensuite, une boucle for est utilisée pour boucler chaque message:

 for message in unread_messages: total_messages += 1 

Pour 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 passe sur tous les messages de unfead_messages et incrémente la variable "total_messages".

Finalement, quelques simples instructions "si" sont utilisées. S'il y a des messages non lus, allumez le voyant, sinon, désactivez-le.

Rappelez-vous que Python est sensible à la casse et utilise l'espacement blanc. Si vous rencontrez des problèmes lors de l'exécution du code, essayez ce site Web. Collez votre Python dans et appuyez sur le bouton "valider au-dessus du code python". Cela devrait alors vous dire quelles erreurs (le cas échéant) sont présentes dans votre Python.

Passez au Terminal et lancez votre script:

 python check_messages.py 

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

Cron Setup

Maintenant que le script fonctionne, il est temps de l'automatiser. La façon la plus simple de le faire est de faire un travail cron. Les tâches cron sont utilisées pour planifier des tâches et des scripts, tels que des sauvegardes automatiques. Ouvrez le Crontab (liste des tâches planifiées):

 crontab -e 

Si aucune tâche planifiée n'est déjà configurée, ce fichier sera vide (il peut contenir de la documentation ou des commentaires, précédé 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écifient la fréquence d'exécution de la tâche (vous pouvez avoir vraiment envie ici, par exemple tous les deux mercredi à 2 heures). Ces cinq étoiles spécifient que la tâche doit être exécutée toutes les minutes. En savoir plus sur la planification de cronjob Comment planifier des tâches sous Linux avec Cron et Crontab Comment planifier des 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. l'utilisateur peut bénéficier des tâches du système de planification et de l'utilisateur, grâce à cron, un service d'arrière-plan facile à utiliser. Ensuite, "python" indique au planificateur d'exécuter le script en tant que fichier python. Enfin, "~ / pi / Documents / gmail_python / check_messages.py" est le chemin d'accès absolu à 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 (apprendre à utiliser les filtres ici). 10 Problèmes de messagerie que vous pouvez résoudre avec des filtres Gmail 10 Problèmes de messagerie que vous pouvez résoudre avec des filtres Gmail Voulez-vous parcourir votre boîte de réception plus rapidement que jamais? Essayez certains de ces filtres Gmail géniaux pour voir la différence.), Ou exécutez un code différent - vous pourriez peut-être créer un bot Twitter qui tweete basé sur des emails (apprendre En savoir plus sur la construction d'un bot Twitter Pi Comment construire un robot Twitter Raspberry Pi Comment construire un Raspberry Pi Twitter Bot Twitter est le plus grand dépôt mondial de messages courts de personnes qui n'ont rien à dire - et maintenant vous aussi pouvez contribuer à ce projet épique avec un robot Twitter automatisé, alimenté par votre Raspberry ... Lire la suite).

Cependant, vous finissez par coder votre boîte de notification, j'aimerais savoir comment ça se passe dans les commentaires!

In this article