Maak een Gmail-notificatielamp voor Raspberry Pi

In dit snelle en eenvoudige Raspberry Pi-project leer je hoe je een e-mailnotificatie voor Gmail kunt maken. Als u ongelezen e-mails heeft, zet een Python-script de LED aan.

In dit snelle en eenvoudige Raspberry Pi-project leer je hoe je een e-mailnotificatie voor Gmail kunt maken.  Als u ongelezen e-mails heeft, zet een Python-script de LED aan.
Advertentie

In dit snelle en eenvoudige Raspberry Pi-project leer je hoe je een e-mailnotificatie voor Gmail kunt maken. Als u ongelezen e-mails heeft, zet een Python-script de LED aan. Dit project vereist heel weinig onderdelen en kan binnen een uur worden voltooid! Je kunt je LED natuurlijk op elke gewenste manier aankleden, zoals een Redstone-blok van MineCraft of een ander 3D-object dat in doorzichtig plastic is afgedrukt. Dit is het eindresultaat:

Wat je nodig hebt

  • 1 x Raspberry Pi
  • 1 x breadboard
  • 1 x 220 ohm weerstand
  • 1 x 5 mm LED
  • 1 x Gmail-account
  • Man-vrouw-hook-up draden

Elke Raspberry Pi zal voor dit project werken - zelfs de Pi Zero! Er is slechts één GPIO-pin nodig en deze is niet bijzonder CPU-intensief. Als je een Pi-starterkit hebt, heb je meer dan genoeg onderdelen om dit te voltooien.

Bouw plan

-Gmail-Notification LED
Dit is een heel eenvoudig project. Een Light Emitting Diode (LED) is verbonden met een GPIO-ingang (General Purpose Input Output) op de Pi. Een heel eenvoudig Python-script zal regelmatig worden uitgevoerd om te controleren of er ongelezen e-mails zijn en dienovereenkomstig de LED aan of uit te zetten.

De hardware

Gmail-Notification-Circuit
Sluit de positieve anode (lange been) van de LED aan op de weerstand en vervolgens op GPIO-pen 14. U kunt elke GPIO-pin gebruiken, kijk echter eerst naar de pinout, omdat deze enigszins van model tot model verschillen. Verbind de negatieve kathode (korte poot met vlakke rand) met de grond.

Pi-instelling

Gmail-Notification-Pi
Als je Pi een besturingssysteem (OS) heeft geïnstalleerd, is er niet veel setup nodig (weet je niet zeker wat je nodig hebt? Hier leren hoe je er een installeert.) Een besturingssysteem installeren op je Raspberry Pi Hoe je een besturingssysteem installeert op je Raspberry Pi Hier leest u hoe u een nieuw besturingssysteem op uw Pi kunt installeren en gebruiken - en hoe u uw perfecte installatie kunt klonen voor snel noodherstel. Lees meer). Open een nieuwe terminal ( Linksboven > menu > Accessoires > Terminal ) op de Pi (check deze snelkoppelingen om je een codering ninja te maken Bespaar tijd in de Linux Terminal met deze 20 snelkoppelingen Bespaar tijd in de Linux Terminal met deze 20 snelkoppelingen Of je nu ' ben een terminaal newbie of iemand die lang geleden de angst overwon, hier zijn 20 snelkoppelingen die je kunnen helpen om een ​​deel van de onhandigheid van de commandoregel te overwinnen. U moet een nieuwe map maken om het Python-script op te slaan. Voer de volgopdracht in:

pwd 

Dit staat voor "Print Working Directory" en toont u in welke map u zich bevindt (standaard is dit "/ home / pi"). Navigeer naar de documentenmap en maak een nieuwe map (map) met de naam "gmail_python":

 cd Documents/ sudo mkdir gmail_python 

Het "mkdir" -commando staat voor "Make Directory". Alles wat hierna volgt, wordt gebruikt voor de directorynaam. Je zou nu je map moeten kunnen zien:

 ls 

Als je een fout hebt gemaakt, kun je deze map eenvoudig verwijderen:

 sudo rm -r gmail_python 

Navigeer nu naar de nieuwe map:

 cd gmail_python/ 

Maak een nieuw Python-script:

 sudo nano check_messages.py 

Hiermee maakt u het script en opent u het voor bewerking in Nano. Je zou natuurlijk een ander programma kunnen gebruiken, zoals Vim, hoewel deze tweet mijn gevoel daarover opsomt:

Ik gebruik Vim nu ongeveer 2 jaar, vooral omdat ik niet weet hoe ik het moet afsluiten.

- I Am Devloper (@iamdevloper) 17 februari 2014

Een grapje terzijde, bekijk deze vergelijking tussen de twee nano vs. vim: Terminal Text Editors vergeleken met nano versus vim: Terminal Text Editors vergeleken Hoewel Linux gemakkelijk genoeg is geworden voor praktisch iedereen om te gebruiken zonder de Terminal ooit te hoeven gebruiken, zijn er enkele van ons die het regelmatig gebruiken of nieuwsgierig zijn naar hoe iemand controle kan uitoefenen ... Lees meer voor een volledige uitsplitsing.

Druk op CTRL + X om Nano af te sluiten en terug te gaan naar de terminal.

Python-installatie

Gmail-Notification-code
Nu de Pi is ingesteld, is het tijd om de code te schrijven. Voor dit project is de uitstekende Gmail Python-bibliotheek van Charlie Guo vereist. Download de bibliotheek van Github en pak de inhoud uit. Binnen zou er een map moeten zijn met de naam "gmail". Kopieer deze hele map naar "/ home / pi / Documents / gmail_python".

Schakel terug naar de opdrachtregel en open je script opnieuw (als je op de toets omhoog drukt, kun je door je eerder ingevoerde opdrachten scrollen):

 sudo nano check_messages.py 

Merk op hoe dat hetzelfde commando is dat je hebt gebruikt om het bestand te maken - als er al een bestand bestaat, wordt het geopend, anders wordt het gemaakt. Dit is de 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) 

U moet uw gebruikersnaam en wachtwoord invoeren om dit te laten werken. U kunt de volledige broncode voor de gmail-plug-in bekijken als u dat wilt. Als u zich niet op uw gemak voelt om dit te doen (of als u twee-factor-authenticatie gebruikt), moet u verbinding maken met Gmail met OAuth2. Dit is een beetje betrokken bij deze zelfstudie, maar Google heeft een uitstekende handleiding 'Aan de slag'.

Laten we de code uitsplitsen. Eerst worden enkele modules geïmporteerd. Modules in Python zijn kleine stukjes code die voor een doel zijn geschreven (vergelijkbaar met bibliotheken in de Arduino IDE). RPi.GPIO is een Pi-specifieke module voor toegang tot de GPIO, gmail is de module die je eerder hebt gedownload en tijd is een module ingebouwd in Python om tijdfuncties te bieden. Nu worden "GPIO.setmode" en "GPIO.setup" gebruikt om de Pi te vertellen dat pin 14 een uitvoer is en dat u "Broadcom Pin Numbering" wilt gebruiken (meer informatie over BCM).

Deze regel maakt verbinding met je gmail-account. Het maakt een object met de naam "g" en roept de inlogmethode van de eerder geïmporteerde Gmail-module aan. Vergeet niet je Gmail-e-mailadres en wachtwoord in te voeren.

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

Haal nu alle ongelezen berichten op en sla ze op in een variabele met de naam "ongelezen berichten":

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

Merk op hoe "ongelezen = waar" wordt doorgegeven als een parameter - u kunt dit wijzigen om berichten op te halen op basis van verschillende parameters, zoals afzender of onderwerp. Bekijk de Application Programming Interface (API) documentatie voor veel meer informatie.

Vervolgens wordt een for-lus gebruikt om elk bericht door te lussen:

 for message in unread_messages: total_messages += 1 

For-loops zijn erg handig. Ze herhalen een blok code meerdere keren, vaak met telkens een iets andere waarde. Deze for-lus doorloopt elk bericht in unread_messages en verhoogt de variabele "total_messages".

Ten slotte worden enkele eenvoudige "als" -verklaringen gebruikt. Als er ongelezen berichten zijn, zet u de LED aan, of zet hem anders uit.

Onthoud dat Python hoofdlettergevoelig is en witte spatiëring gebruikt. Als u problemen ondervindt bij het uitvoeren van de code, probeert u deze website. Plak je Python in en druk op de "validate above python code" -knop. Dit zou u dan moeten vertellen welke (eventuele) fouten aanwezig zijn in uw Python.

Schakel over naar de terminal en voer je script uit:

 python check_messages.py 

Met deze opdracht wordt uw script uitgevoerd. Probeer handmatig sommige e-mails in uw inbox te wijzigen in ongelezen status en het script opnieuw uit te voeren - u zou de LED aan of uit moeten zien om uw inbox weer te geven.

Cron instellen

Nu het script werkt, is het tijd om het te automatiseren. De gemakkelijkste manier om dit te doen is via een cron-taak. Cron-taken worden gebruikt om taken en scripts te plannen, zoals geautomatiseerde back-ups. Open de Crontab (lijst met geplande taken):

 crontab -e 

Als er geen geplande taken zijn ingesteld, is dit bestand leeg (het kan documentatie of opmerkingen bevatten, voorafgegaan door een "#"). Als u hier al gegevens heeft, voert u eenvoudig uw nieuwe opdracht in op een nieuwe regel:

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

De vijf "sterren" ("* * * * *") geven aan hoe vaak de taak moet worden uitgevoerd (u kunt hier echt veel opfleuren, bijvoorbeeld elke tweede woensdag om 2.00 uur). Deze vijf sterren geven aan dat de taak elke minuut moet worden uitgevoerd. Dit is het kleinste toegestane interval (kom meer te weten over cronjob scheduling Hoe taken plannen in Linux met Cron en Crontab Hoe taken plannen in Linux met Cron en Crontab De mogelijkheid om taken te automatiseren is een van die futuristische technologieën die er al is. gebruiker kan profiteren van roostersysteem en gebruikerstaken, dankzij cron, een eenvoudig te gebruiken achtergrondservice Lees meer). Vervolgens geeft "python" aan de planner door dat het script als een python-bestand moet worden uitgevoerd. Ten slotte is "~ / pi / Documents / gmail_python / check_messages.py" het absolute pad naar uw script - een relatief pad zal niet werken.

U zou nu uw eigen Gmail-meldingslampje moeten hebben! Het zou vrij eenvoudig zijn om dit aan te passen om te zoeken naar berichten op basis van een andere eis of filter (hier leren hoe u filters kunt gebruiken) E-mailproblemen die u kunt oplossen met Gmail-filters 10 E-mailproblemen die u kunt oplossen met Gmail-filters Een overvolle inbox die u gek maakt ? Wil je sneller dan ooit door je inbox? Probeer enkele van deze briljante Gmail-filters om het verschil te zien, lees meer), of voer een ander stuk code uit - misschien kun je een Twitter-bot maken die tweets op basis van e-mails (lees Meer over het bouwen van een Pi Twitter-bot Hoe bouw je een Raspberry Pi Twitter Bot Hoe bouw je een Raspberry Pi Twitter Bot Twitter is 's werelds grootste opslagplaats van korte berichten van mensen met niets te zeggen - en nu kun jij ook een bijdrage leveren aan dat epische project met een geautomatiseerde Twitter-bot, mogelijk gemaakt door je Raspberry ... Lees meer).

Hoe je uiteindelijk je notificatie-box codeert, ik zou graag willen weten hoe het in de comments gaat!

In this article