Lag et Raspberry Pi Gmail Notification Light

Lag et Raspberry Pi Gmail Notification Light / DIY

I dette raske og enkle Raspberry Pi-prosjektet lærer du hvordan du lager et e-postvarsel i Gmail. Hvis du har uleste e-postmeldinger, slår et Python-skript lysdioden på. Dette prosjektet krever svært få deler, og kan fullføres på under en time! Du kan selvfølgelig kle din LED slik som du vil, for eksempel en MineCraft redstone-blokk eller et annet objekt 3D trykt i klart plast. Her er sluttresultatet:

Hva trenger du

  • 1 x Raspberry Pi
  • 1 x brødbrett
  • 1 x 220 ohm motstand
  • 1 x 5mm LED
  • 1 x Gmail-konto
  • Mann til kvinne koble opp ledninger

Enhver Raspberry Pi vil fungere for dette prosjektet - selv Pi Zero! Det er bare nødvendig med en GPIO-pin, og det er ikke spesielt CPU-intensiv. Hvis du har en Pi-startpakke, har du mer enn nok deler for å fullføre dette.

Bygg Plan


Dette er et veldig enkelt prosjekt. En lysemitterende diode (LED) er koblet til en GPIO (General Purpose Input Output) Pin på Pi. Et veldig enkelt Python-script vil løpe regelmessig for å sjekke til uleste e-postmeldinger og slå LED-en på eller av tilsvarende.

Maskinvaren


Koble den positive anoden (lang bein) til lysdioden til motstanden og deretter til GPIO pin 14. Du kan bruke en hvilken som helst GPIO-pin, men se først på pinouten, da de varierer litt mellom modellene. Koble den negative katoden (kort ben med flatt kant) til bakken.

Pi Setup


Gi din Pi et operativsystem (OS) installert, det er ikke mye setup nødvendig (ikke sikker på hva du trenger? Lær hvordan du installerer en her Slik installerer du et operativsystem til din Raspberry Pi Slik installerer du et operativsystem til din hindbær Pi Slik får du et nytt OS installert og kjører på Pi - og hvordan du kloner ditt perfekte oppsett for rask katastrofeoppretting. Les mer). Åpne en ny terminal (Øverst til venstre > Meny > Tilbehør > Terminal) på Pi (sjekk disse snarveiene for å gjøre deg til en kodende ninja Spar tid i Linux-terminalen med disse 20 snarveiene Lag tid i Linux-terminalen med disse 20 snarveiene, enten du er en nybegynner eller noen som har kommet over frykten for lenge siden , her er 20 snarveier som kan hjelpe deg med å overvinne noen av kommandolinjens plagsomhet. Les mer). Du må opprette en ny mappe for å lagre Python-skriptet. Skriv inn kommandoen Følg:

pwd

Dette står for “Skriv ut arbeidskatalog”, og vil vise deg hvilken mappe du er i (som standard dette være “/ Home / pi”). Naviger inn i dokumentmappen og opprett en ny katalog (mappe) som heter “gmail_python”:

CD Dokumenter / sudo mkdir gmail_python

De “mkdir” kommandoen står for “Lag katalogen”. Alt som følger dette vil bli brukt til katalognavnet. Du bør nå kunne se katalogen din:

ls

Hvis du har gjort en feil, kan du enkelt fjerne denne katalogen:

sudo rm -r gmail_python

Naviger nå til den nye katalogen:

cd gmail_python /

Opprett et nytt Python-skript:

sudo nano check_messages.py

Dette vil lage skriptet og åpne det klart for redigering i Nano. Du kan selvfølgelig bruke et annet program, som Vim, selv om denne tweet oppsummerer følelsene mine om det:

Jeg har brukt Vim i ca 2 år nå, for det meste fordi jeg ikke kan finne ut hvordan jeg skal avslutte det.

- Jeg er Devloper (@iamdevloper) 17. februar 2014

Spøk til side, sjekk ut denne sammenligningen mellom de to nano vs vim: Terminal Text Editors Sammenlignet nano vs vim: Terminal Text Editors Sammenlignet Selv om Linux har blitt lett nok til praktisk talt alle som bruker uten å måtte bruke Terminal, er det noen av oss som regelmessig bruker det eller er nysgjerrige på hvordan man kan kontrollere ... Les mer for en fullstendig sammenbrudd.

trykk CTRL + X å avslutte Nano og komme tilbake til terminalen.

Python Setup


Nå som Pi er satt opp, er det på tide å skrive koden. Dette prosjektet krever det utmerkede Gmail Python Library av Charlie Guo. Last ned biblioteket fra Github og hent innholdet. Inne skal det være en mappe som heter “gmail”. Kopier hele denne mappen til “/ Home / pi / Dokumenter / gmail_python”.

Bytt tilbake til kommandolinjen og åpne skriptet igjen (hvis du trykker på opp-tasten kan du bla gjennom dine tidligere inntatte kommandoer):

sudo nano check_messages.py

Legg merke til hvordan det er samme kommando du brukte til å lage filen - hvis en fil allerede eksisterer, vil den bli åpnet, ellers vil den bli opprettet. Her er Python:

import gmail, RPi.GPIO som GPIO, tid # importmoduler GPIO.setwarnings (False) GPIO.setmode (GPIO.BCM) # fortell Pi hvilke overskrifter å bruke GPIO.setup (14, GPIO.OUT) # fortell Pi dette pin er en utgang g = gmail.login ('[email protected] ',' DITT PASSORD ') unread_messages = g.inbox (). post (ulest = True) total_messages = 0 for melding i uleste_meldinger: total_messages + = 1 hvis total_messages> 0: # det er uleste e-postmeldinger, slår lys på GPIO.output (14, True) ellers: # det er ingen uleste e-postmeldinger, slår av GPIO.output (14, False)

Du må skrive inn brukernavn og passord for at dette skal fungere. Du kan se full kildekoden for gmail-plugin-modulen hvis du vil. Hvis du ikke føler deg komfortabel med å gjøre dette (eller bruker tofaktorautentisering), må du koble til Gmail ved hjelp av OAuth2. Dette er litt involvert for denne opplæringen, men Google har en utmerket startguide.

La oss bryte ned koden. Først importeres noen moduler. Moduler i Python er små kodestykker skrevet for et formål (ligner på biblioteker i Arduino IDE). RPi.GPIO er en Pi-spesifikke modul for tilgang til GPIO, gmail er modulen du lastet ned tidligere, og tid er en modul innbygget i Python for å gi timingfunksjoner. Nå “GPIO.setmode” og “GPIO.setup” brukes til å fortelle Pi at pin 14 er en utgang, og at du vil bruke “Broadcom Pin Nummering” (mer informasjon om BCM).

Denne linjen kobles til din gmail-konto. Det lager et objekt som heter “g”, og kaller innloggingsmetoden til gmail-modulen som ble importert tidligere. Ikke glem å skrive inn gmail-e-postadressen og passordet ditt.

g = gmail.login ('[email protected] ',' DITT PASSORD ')

Hent nå alle uleste meldinger og lagre dem i en variabel som heter “uleste meldinger”:

unread_messages = g.inbox (). post (ulest = sant)

Legg merke til hvordan “ulest = True” er bestått som en parameter - du kan endre dette for å hente meldinger basert på forskjellige parametere, for eksempel avsender eller emne. Ta en titt på dokumentasjonen for Programmeringsgrensesnitt (API) for mye mer informasjon.

Deretter brukes en for sløyfe til å sløyfe over hver melding:

for melding i unread_messages: total_messages + = 1

For sløyfer er veldig nyttige. De gjentar en blokk med flere ganger, ofte med en litt annen verdi hver gang. Denne for sløyfen går over hver melding i uleste meldinger og øker “TOTAL_MESSAGES” variabel.

Endelig, noen enkle “hvis” uttalelser blir brukt. Hvis det er uleste meldinger, slår du på lysdioden, ellers slår du av hvis den er av.

Husk at Python er saksfølsom, og bruker hvit avstand. Hvis du har problemer med å få koden til å kjøre, prøv denne nettsiden. Lim inn Python og trykk på “validere over python kode” knapp. Dette skal da fortelle deg hvilke (hvis noen) feil er tilstede i Python.

Bytt til Terminal og kjør skriptet ditt:

python check_messages.py

Denne kommandoen kjører skriptet ditt. Prøv å endre noen e-postmeldinger manuelt i innboksen din til ulest status og kjør skriptet igjen - du bør se lysdioden slås av eller på for å gjenspeile innboksen din.

Cron Setup

Nå som skriptet fungerer, er det på tide å automatisere det. Den enkleste måten å gjøre dette på er gjennom en cron jobb. Cron-jobber brukes til å planlegge oppgaver og skript, for eksempel automatiserte sikkerhetskopier. Åpne Crontab (liste over planlagte oppgaver):

crontab -e

Hvis det ikke er noen planlagte oppgaver allerede, vil denne filen være tom (det kan inneholde dokumentasjon eller kommentarer, foran en “#”). Hvis du allerede har oppføringer her, kan du bare skrive inn den nye kommandoen på en ny linje:

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

De fem “stjerner” (“* * * * *”) angi hvor ofte du skal løse oppgaven (du kan få det veldig fancy her, for eksempel hver andre onsdag klokken 2:00). Disse fem stjernene angir at oppgaven skal kjøres hvert minutt. Dette er det minste intervallet tillatt (lære mer om cronjob-planlegging Slik planlegger du oppgaver i Linux med Cron og Crontab Slik planlegger du oppgaver i Linux med Cron og Crontab Evnen til å automatisere oppgaver er en av de futuristiske teknologiene som allerede er her. Hver Linux Brukeren kan dra nytte av planleggingssystemet og brukeroppgaver, takket være cron, en brukervennlig bakgrunnstjeneste. Les mer). neste, “python” forteller planleggeren å utføre skriptet som en pythonfil. Endelig, “~ / Pi / Dokumenter / gmail_python / check_messages.py” er den absolutte filbanen til skriptet ditt - en relativ sti vil ikke fungere.

Du bør nå ha ditt eget Gmail varsellys! Det ville være ganske enkelt å endre dette for å lete etter meldinger basert på et annet krav eller filter (lær hvordan du bruker filtre her 10 E-postproblemer du kan løse med Gmail-filter 10 E-postproblemer du kan løse med Gmail-filtre En overfylt innboks som gjør deg gal Ønsker du å gjennom innboksen din raskere enn noen gang? Prøv noen av disse glimrende Gmail-filtre for å se forskjellen. Les mer) eller utfør et annet stykke kode - kanskje du kan opprette en Twitter-bot som tweets basert på e-postmeldinger (lære mer om å bygge en Pi Twitter bot Hvordan bygge en Raspberry Pi Twitter Bot Hvordan bygge en Raspberry Pi Twitter Bot Twitter er verdens største lager av korte meldinger fra folk som ikke har noe å si - og nå kan du også bidra til det episke prosjektet med en automatisert Twitter bot, drevet av din Raspberry ... Les mer).

Men du ender opp med å kode din varselboks, jeg vil gjerne vite hvordan det går i kommentarene!

Utforsk mer om: Gmail, Raspberry Pi.