Annonse

I dette raske og enkle Raspberry Pi-prosjektet lærer du hvordan du lager et e-postvarslingslys for Gmail. Hvis du har noen uleste e-post, slår et Python-skript på LED-en. Dette prosjektet krever svært få deler, og kan fullføres på under en time! Du kan selvfølgelig kle deg på LEDen du vil, for eksempel en MineCraft redstone-blokk eller andre 3D-objekter trykt i klar plast. Her er sluttresultatet:

Hva trenger du

  • 1 x bringebærpi
  • 1 x brødbrett
  • 1 x 220 ohm motstand
  • 1 x 5mm LED
  • 1 x Gmail-konto
  • Ledninger av mann til kvinne kobles til

Enhver Raspberry Pi vil jobbe for dette prosjektet - også Pi Zero! Bare en GPIO-pinne er nødvendig, og den er ikke spesielt CPU-intensiv. Hvis du har en Pi startpakke du har mer enn nok deler til å fullføre dette.

Bygg plan

Gmail-Varsel-LED
Dette er et veldig enkelt prosjekt. En lysdiode (LED) er koblet til en GPIO-pinne (General Purpose Input Output) på Pi. En veldig enkle Python-skript kjøres regelmessig for å sjekke om uleste e-post er og slå LED av eller på tilsvarende.

Maskinvaren

instagram viewer

Gmail-Notification-Circuit
Koble den positive anoden (langbenet) til LED-en til motstanden og deretter til GPIO-pinne 14. Du kan bruke en hvilken som helst GPIO-pinne, men se på pinout først, da de varierer litt mellom modeller. Koble den negative katoden (kort ben med flat kant) til bakken.

Pi-oppsett

Gmail-Notification-Pi
Forutsatt at Pi-en har et operativsystem (OS) installert, er det ikke mye installasjon som trengs (er du ikke sikker på hva du trenger? Lær hvordan du installerer en her Slik installerer du et operativsystem på en Raspberry PiSlik installerer du et operativsystem på Raspberry Pi og hvordan du kloner det perfekte oppsettet for rask gjenoppretting av katastrofer. Les mer ). Åpne en ny terminal (Øverst til venstre > Meny > Tilbehør > Terminal) på Pi (kassen disse snarveier for å gjøre deg til en kodende ninja Spar tid i Linux-terminalen med disse 20 snarveieneEnten du er en nybegynner eller noen som har overkommet frykten for lenge siden, her er 20 snarveier som kan hjelpe deg med å overvinne noen av kommandolinjens klosset. Les mer ). Du må opprette en ny mappe for å lagre Python-skriptet. Skriv inn følgende kommando:

pwd

Dette står for “Print Working Directory”, og viser deg hvilken mappe du er i (som standard er dette “/ home / pi”). Naviger i dokumentmappen og lag en ny katalog (mappe) kalt “gmail_python”:

cd-dokumenter / sudo mkdir gmail_python

Kommandoen “mkdir” står for “Make Directory”. Alt som følger etter dette vil bli brukt for katalognavnet. Du skal 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å inn i den nye katalogen:

cd gmail_python /

Lag 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 tweeten oppsummerer følelsene mine rundt det:

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

- I Am Devloper (@iamdevloper) 17. februar 2014

Spøke til side, sjekk ut dette sammenligning mellom de to nano vs. vim: Terminal Text Editors SammenlignetSelv om Linux har blitt enkelt nok til at praktisk talt alle kan bruke uten noen gang å måtte bruke terminalen, er det noen av oss som regelmessig bruker den eller er nysgjerrige på hvordan man kan kontrollere ... Les mer for et fullstendig sammenbrudd.

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

Python-oppsett

Gmail-Notification-kode
Nå som Pi er konfigurert, er det på tide å skrive koden. Dette prosjektet krever utmerket Gmail Python-bibliotek av Charlie Guo. Last ned biblioteket fra Github og trekk ut innholdet. Inni i skal det være en mappe som heter “gmail”. Kopier hele mappen til “/ home / pi / Documents / gmail_python”.

Bytt tilbake til kommandolinjen og åpne skriptet igjen (hvis du trykker på opp-tasten, kan du bla gjennom de tidligere oppførte kommandoene):

sudo nano check_messages.py

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

import gmail, RPi. GPIO som GPIO, time # importmoduler GPIO.setwarnings (False) GPIO.setmode (GPIO.BCM) # fortell Pi hvilke topptekster du skal bruke. GPIO.setup (14, GPIO.OUT) # fortell Pi at denne pinnen er en utgang g = gmail.login ('[email protected]', 'DIN PASSWORD') unread_messages = g.inbox (). mail (ulest = True) total_messages = 0 for melding i unread_messages: total_messages + = 1 hvis total_messages> 0: # det er uleste e-postmeldinger, slå på GPIO.output (14, True) annet: # det er ingen uleste e-postmeldinger, slå av GPIO.output (14, False)

Du må oppgi brukernavn og passord for at dette skal fungere. Du kan se hele kildekoden for gmail-plugin hvis du vil. Hvis du ikke føler deg komfortabel med å gjøre dette (eller du bruker tofaktorautentisering), må du koble deg til Gmail ved å bruke OAuth2. Dette er litt involvert for denne opplæringen, men Google har en utmerket komme i gang guide.

La oss fordele koden. Først importeres noen moduler. Moduler i Python er små koder som er skrevet for et formål (ligner biblioteker i Arduino IDE). RPI. GPIO er en Pi-spesifikk modul for tilgang til GPIO, gmail er modulen du lastet ned tidligere, og tiden er en modul innebygd i Python for å gi timingfunksjoner. Nå brukes “GPIO.setmode” og “GPIO.setup” for å fortelle Pi at pin 14 er en utgang, og at du vil bruke “Broadcom Pin Numbering” (mer informasjon om BCM).

Denne linjen kobles til gmail-kontoen din. Det oppretter et objekt som heter “g”, og kaller påloggingsmetoden til gmail-modulen som tidligere er importert. Ikke glem å oppgi e-postadressen og passordet ditt til Gmail.

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

Nå kan du hente alle uleste meldinger og lagre dem i en variabel som heter "uleste meldinger":

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

Legg merke til hvordan “ulest = sant” sendes som en parameter - du kan endre dette for å hente meldinger basert på forskjellige parametere, for eksempel avsender eller emne. Sjekk ut Dokumentasjon for applikasjonsprogrammeringsgrensesnitt (API) for mye mer informasjon.

Deretter brukes en for loop til å loop over hver melding:

for melding i ulest_meldinger: total_meldinger + = 1

For løkker er veldig nyttige. De gjentar en blokkkode flere ganger, ofte med en litt annen verdi hver gang. Denne for loop går over hver melding i ulest_meldinger og øker variabelen “total_meldinger”.

Til slutt brukes noen enkle "hvis" -utsagn. Hvis det er uleste meldinger, må du slå på lysdioden, ellers slå den av.

Husk at Python er små og små bokstaver, og bruker hvitt mellomrom. Hvis du har problemer med å få koden til å kjøre, kan du prøve denne nettsiden. Lim inn Python-enheten din og trykk på knappen “validere ovenfor python code”. Dette skal da fortelle deg hva (hvis noen) feil er til stede i Python-en.

Bytt til terminalen og kjør skriptet:

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å seg på eller av for å gjenspeile innboksen.

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 installert noen planlagte oppgaver, vil denne filen være tom (den kan inneholde dokumentasjon eller kommentarer, foran et "#"). Hvis du allerede har oppføringer her, skriver du bare den nye kommandoen på en ny linje:

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

De fem “stjernene” (“* * * * *”) spesifiserer hvor ofte du skal kjøre oppgaven (du kan bli veldig fancy her, for eksempel hver andre onsdag klokka 2.00). Disse fem stjernene spesifiserer at oppgaven skal kjøres hvert minutt. Dette er det minste tillatte intervallet (lære mer om cronjob planlegging Hvordan planlegge oppgaver i Linux med Cron og CrontabEvnen til å automatisere oppgaver er en av de futuristiske teknologiene som allerede er her. Hver Linux-bruker kan dra nytte av planleggingssystem og brukeroppgaver, takket være cron, en brukervennlig bakgrunnstjeneste. Les mer ). Deretter ber "python" planleggeren om å utføre skriptet som en python-fil. Til slutt er “~ / pi / Documents / gmail_python / check_messages.py” den absolutte filstien til skriptet ditt - en relativ bane vil ikke fungere.

Du bør nå ha ditt eget Gmail-varsellys! Det ville være ganske enkelt å endre dette for å se 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-filtreEn overfylt innboks som driver deg gal? Vil du gjennom innboksen raskere enn noen gang? Prøv noen av disse strålende Gmail-filtrene for å se forskjellen. Les mer ), eller kjør et annet stykke kode - kanskje du kan lage en Twitter-bot som tweets basert på e-post (lære mer om hvordan du bygger en Pi Twitter-bot Slik bygger du en Raspberry Pi Twitter BotTwitter er verdens største depot av korte meldinger fra mennesker med ingenting å si - og nå Du kan også bidra til det episke prosjektet med en automatisert Twitter-bot, drevet av din Bringebær... Les mer ).

Men når du ender med å kode varselboksen, vil jeg gjerne vite hvordan det går i kommentarfeltet!

Joe er utdannet innen informatikk fra University of Lincoln, Storbritannia. Han er en profesjonell programvareutvikler, og når han ikke flyr droner eller skriver musikk, kan han ofte finne bilder og produsere videoer.