Maak een Gmail-notificatielamp voor Raspberry Pi

Maak een Gmail-notificatielamp voor Raspberry Pi / DIY

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


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


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


Als je Pi een besturingssysteem (OS) heeft geïnstalleerd, is er niet veel installatie nodig (weet je niet wat je nodig hebt? Hier vind je informatie over hoe je er een installeert.) Een besturingssysteem installeren op je Raspberry Pi Een besturingssysteem installeren 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 van 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 een beginnend newbie bent of iemand die lang geleden de angst overwon , hier zijn 20 snelkoppelingen die u kunnen helpen een deel van de onhandigheid van de opdrachtregel te overwinnen. U moet een nieuwe map maken om het Python-script op te slaan. Voer de volgopdracht in:

pwd

Dit staat voor “Print werkdirectory”, en laat u zien in welke map u zich bevindt (standaard is dat dit “/ Home / pi”). Navigeer naar de documentenmap en maak een nieuwe map (map) genaamd “gmail_python”:

cd Documents / sudo mkdir gmail_python

De “mkdir” commando staat voor “Maak een map”. 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.

- Ik ben Devloper (@iamdevloper) 17 februari 2014

Een grapje terzijde, bekijk deze vergelijking tussen de twee nano versus 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 te verlaten en terug te gaan naar de terminal.

Python-installatie


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 genaamd “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 als GPIO, tijd # import modules GPIO.setwarnings (False) GPIO.setmode (GPIO.BCM) # vertel de Pi welke koppen GPIO gebruiken. setup (14, GPIO.OUT) # vertel de Pi dit pin is een uitvoer g = gmail.login ('[email protected] ',' YOUR PASSWORD ') unread_messages = g.inbox (). mail (ongelezen = True) total_messages = 0 voor bericht in ongelezen bericht: total_messages + = 1 if total_messages> 0: # er zijn ongelezen e-mails, zet licht aan op GPIO.output (14, True) else: # er zijn geen ongelezen e-mails, schakel licht uit 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 “GPIO.setmode” en “GPIO.setup” worden gebruikt om de Pi te vertellen dat pen 14 een uitvoer is en dat u deze wilt gebruiken “Broadcom Pin-nummering” (meer informatie over BCM).

Deze regel maakt verbinding met je gmail-account. Het maakt een object genaamd “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 (ongelezen = waar)

Merk op hoe “ongelezen = True” 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:

voor bericht 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 gaat elk bericht in ongelezen berichten door en verhoogt het “total_messages” veranderlijk.

Eindelijk wat eenvoudig “als” verklaringen worden 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 erin en druk op de “valideer bovenstaande 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 (mogelijk bevat het documentatie of opmerkingen, 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” (“* * * * *”) Geef 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). volgende, “Python” vertelt de planner dat het script als een python-bestand moet worden uitgevoerd. Tenslotte, “~ / Pi / Documents / gmail_python / check_messages.py” is het absolute pad naar uw script - een relatief pad werkt niet.

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 gebruikt (leer 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 ook je meldingsvenster codeert, ik wil graag weten hoe dit in de opmerkingen staat!

Ontdek meer over: Gmail, Raspberry Pi.