Faire une lumière de notification Raspberry Pi Gmail
Dans ce projet Raspberry Pi simple et rapide, vous apprendrez à faciliter les notifications par e-mail Gmail. Le script Python allume une LED si vous avez des e-mails non lus. Ce projet nécessite très peu de pièces et peut être réalisé en moins d’une heure ! Vous pouvez bien sûr décorer vos LED comme bon vous semble, comme des blocs de redstone MineCraft ou d’autres objets imprimés en 3D en plastique transparent. Voici le résultat final :
de quoi avez-vous besoin
- 1 Raspberry Pi
- 1 planche à pain
- 1 résistance de 220 ohms
- 1 DEL de 5 mm
- 1 compte Gmail
- Fil de connexion mâle à femelle
N’importe quel Raspberry Pi fonctionnera pour ce projet – même un Raspberry Pi zéro ! Une seule broche GPIO est nécessaire et elle n’est pas particulièrement gourmande en CPU. Si vous avez un kit de démarrage Pi, vous avez suffisamment de pièces pour le faire.
Plan de construction
C’est un projet très simple. Les diodes électroluminescentes (LED) sont connectées aux broches GPIO (sortie d’entrée à usage général) sur le Pi. Un script Python très simple s’exécutera périodiquement pour vérifier les e-mails non lus et allumer ou éteindre la LED en conséquence.
Matériel
Connectez le positif (jambe longue) 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 il varie légèrement d’un modèle à l’autre. Connectez le pôle négatif (jambe courte avec côté plat) à la terre.
Faire une vidéo du jour
Paramètres Pi
Si votre Pi a un système d’exploitation (OS) installé, vous n’avez pas besoin de faire beaucoup de configuration (vous n’êtes pas sûr de ce dont vous avez besoin ? Apprenez comment l’installer ici). Ouvrez un nouveau terminal (en haut à gauche > menu > Accessoires > Terminal) sur le Pi (consultez ces raccourcis pour devenir un ninja de la programmation). Vous devez créer un nouveau dossier pour stocker vos scripts Python. Entrez la commande suivante :
le mot de passe
Cela signifie « répertoire de travail d’impression » et affichera le dossier dans lequel vous vous trouvez (la valeur par défaut est « /home/pi »). Accédez au dossier des documents et créez un nouveau répertoire (dossier) appelé « gmail_python »:
Fichier CD/
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 faites une erreur, vous pouvez facilement supprimer ce répertoire :
sudo rm -r gmail_python
Accédez maintenant au nouveau répertoire :
cdgmail_python/
Créez un nouveau script Python :
sudo nano check_messages.py
Cela créera le script et l’ouvrira pour le modifier dans Nano. Vous pouvez bien sûr utiliser un autre programme comme Vim, bien que ce tweet résume mon ressenti :
Je plaisante, jetez un œil à la comparaison entre les deux pour une ventilation complète.
selon CTRL + X Quittez Nano et retournez au Terminal.
Paramètres Python
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. À l’intérieur, il devrait y avoir un dossier appelé « gmail ». Copiez l’intégralité du dossier dans « /home/pi/Documents/gmail_python ».
Revenez à la ligne de commande et ouvrez à nouveau le script (si vous appuyez sur la touche haut, vous pouvez faire défiler les commandes saisies précédemment) :
sudo nano check_messages.py
Notez qu’il s’agit de la même commande que vous utiliseriez pour créer le fichier – si le fichier existe déjà, il sera ouvert, sinon il sera créé. Voici Python :
importer gmail, RPi.GPIO comme GPIO, heure
GPIO.setwarnings(faux)
GPIO.setmode(GPIO.BCM)
GPIO.setup(14, GPIO.OUT)
g = gmail.login(‘VOTREMAIL@gmail.com’, ‘votre mot de passe’)
unread_messages = g.inbox().mail(unread=true)
total_messages = 0
Pour les messages dans les messages non lus :
total_messages += 1
Si total_messages > 0 :
gpio.out(14, vrai)
autre:
gpio.output(14, faux)
Vous devez entrer votre nom d’utilisateur et votre mot de passe à utiliser. Vous pouvez afficher le code source complet du plugin gmail si vous le souhaitez. Si vous n’êtes pas à l’aise avec cela (ou si vous utilisez une authentification à deux facteurs), vous devrez utiliser OAuth2 pour vous connecter à Gmail. Ce tutoriel est un peu compliqué, mais Google a un bon guide de démarrage.
Décomposons le code. Importez d’abord quelques modules. Les modules en Python sont de petits morceaux de code (semblables aux bibliothèques de l’IDE Arduino) écrits dans un but précis. 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 time est un module Python intégré qui fournit 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 souhaitez utiliser le « numéro de broche Broadcom » (plus sur BCM).
Cette ligne est connectée à votre compte gmail. Il crée un objet nommé « g » et appelle la méthode de connexion du module gmail précédemment importé. N’oubliez pas d’entrer votre email et votre mot de passe gmail.
g = gmail.login(‘VOTREMAIL@gmail.com’, ‘votre mot de passe’)
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 « unread=True » est passé en tant que paramètre – vous pouvez le modifier pour récupérer les messages en fonction de différents paramètres tels que l’expéditeur ou le sujet. Consultez la documentation de l’interface de programmation d’application (API) pour plus d’informations.
Ensuite, utilisez une boucle for pour parcourir chaque message :
Pour les messages dans les messages non lus :
total_messages += 1
Les boucles for sont très utiles. Ils répètent un morceau de code plusieurs fois, souvent avec des valeurs légèrement différentes à chaque fois. Cette boucle for itère sur chaque message dans unread_messages et incrémente la variable « total_messages ».
Enfin, quelques instructions « si » simples sont utilisées. S’il y a des messages non lus, la LED est allumée, sinon elle est éteinte.
N’oubliez pas que Python est sensible à la casse et utilise des espaces blancs. Si vous rencontrez des difficultés pour exécuter le code, essayez ce site. Collez votre Python et appuyez sur le bouton « Vérifier le code Python ci-dessus ». Cela devrait vous dire quels bogues, le cas échéant, existent dans Python.
Basculez vers le terminal et exécutez votre script :
python check_messages.py
Cette commande exécutera votre script. Essayez de modifier manuellement certains e-mails de votre boîte de réception pour qu’ils ne soient pas lus et exécutez à nouveau le script – vous devriez voir le voyant s’allumer ou s’éteindre pour refléter votre boîte de réception.
Paramètres Cron
Maintenant que le script fonctionne, il est temps de l’automatiser. Le moyen le plus simple consiste à utiliser une tâche cron. Les tâches cron sont utilisées pour planifier des tâches et des scripts, tels que des sauvegardes automatisées. Ouvrez Crontab (liste des tâches planifiées) :
crontab -e
Si aucune tâche planifiée n’a été configurée, ce fichier sera vide (il peut contenir de la documentation ou des commentaires commençant par un « # »). Si vous avez déjà une entrée ici, entrez simplement la 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 obtenir une réelle fantaisie ici, comme 2 heures tous les deux mercredis). Ces cinq étoiles précisent que la tâche doit s’exécuter toutes les minutes. Il s’agit de l’intervalle minimum autorisé (en savoir plus sur la planification des tâches cron). 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 de fichier absolu vers le script – les chemins relatifs ne fonctionnent pas.
Vous devriez maintenant avoir votre propre voyant de notification Gmail ! Il serait très simple de le modifier pour trouver des messages basés sur différentes exigences ou filtres (apprenez à utiliser les filtres ici) ou exécuter un code différent – vous pouvez peut-être créer un bot Twitter qui envoie des tweets basés sur le courrier électronique (en savoir plus sur la création de plus d’informations sur le robot Pi Twitter).
Où que vous finissiez par coder la boîte de notification, j’aimerais voir comment cela se passe dans les commentaires !
A propos de l’auteur