Lav et Raspberry Pi Gmail Notification Light

I dette hurtige og nemme Raspberry Pi-projekt lærer du, hvordan du laver et Gmail-e-mail-meddelelseslys. Hvis du har ulæste e-mails, tænder et Python-script LED'en.

I dette hurtige og nemme Raspberry Pi-projekt lærer du, hvordan du laver et Gmail-e-mail-meddelelseslys.  Hvis du har ulæste e-mails, tænder et Python-script LED'en.
Reklame

I dette hurtige og nemme Raspberry Pi-projekt lærer du, hvordan du laver et Gmail-e-mail-meddelelseslys. Hvis du har ulæste e-mails, tænder et Python-script LED'en. Dette projekt kræver meget få dele, og kan gennemføres inden for en time! Du kan selvfølgelig klæde din LED, som du vil, som en MineCraft redstone-blok eller et andet objekt 3D trykt i klart plastik. Her er slutresultatet:

Hvad du har brug for

  • 1 x Raspberry Pi
  • 1 x brødbræt
  • 1 x 220 ohm modstand
  • 1 x 5mm LED
  • 1 x Gmail-konto
  • Mand til kvindelig krog op ledninger

Enhver Raspberry Pi vil arbejde for dette projekt - selv Pi Zero! Der kræves kun en GPIO-pin, og det er ikke særlig CPU-intensiv. Hvis du har et Pi starter kit, har du mere end nok dele til at fuldføre dette.

Build Plan

Gmail-meddelelse-LED
Dette er et virkelig simpelt projekt. En lysdiode (LED) er forbundet til en GPIO (General Purpose Input Output) Pin på Pi. Et meget simpelt Python-script kører regelmæssigt for at kontrollere ulæste e-mails og tænde eller slukke for LED'en.

Hardware

Gmail-meddelelse-Circuit
Tilslut LED'ens positive anode (lange ben) til modstanden og derefter til GPIO pin 14. Du kan bruge en hvilken som helst GPIO-pin, men se først på pinouten, da de varierer lidt mellem modeller. Tilslut den negative katode (kort ben med flad kant) til jorden.

Pi Setup

Gmail-meddelelse-Pi
Forudsat at din Pi har et operativsystem (OS) installeret, er der ikke meget opsætning nødvendig (ikke sikker på hvad du har brug for? Lær hvordan du installerer en her Sådan installeres et operativsystem til din hindbær Pi Sådan installeres et operativsystem til din hindbær Pi Sådan får du et nyt OS installeret og kører på din Pi - og hvordan man kloner dit perfekte setup til hurtig katastrofeinddrivelse. Læs mere). Åbn en ny terminal ( øverste venstre > menu > Tilbehør > Terminal ) på Pi'en (check disse genveje for at gøre dig til en kodende ninja Spar tid i Linux-terminalen med disse 20 genveje Spar tid i Linux-terminalen med disse 20 genveje Uanset om du ' er en terminal nybegynder eller en person, der kom over frygten for længe siden, her er 20 genveje, der kan hjælpe dig med at overvinde nogle af kommandolinjens akavet. Læs mere). Du skal oprette en ny mappe til at gemme Python-scriptet. Indtast kommandoen Følg:

pwd 

Dette står for "Print Working Directory", og vil vise dig hvilken mappe du er i (som standard er dette "/ home / pi"). Naviger i dokumentmappen og opret en ny mappe (mappe) kaldet "gmail_python":

 cd Documents/ sudo mkdir gmail_python 

Kommandoen "mkdir" står for "Make Directory". Alt efter dette vil blive brugt til katalognavnet. Du skal nu kunne se din mappe:

 ls 

Hvis du har lavet en fejl, kan du nemt fjerne denne mappe:

 sudo rm -r gmail_python 

Gå nu ind i den nye mappe:

 cd gmail_python/ 

Opret et nyt Python script:

 sudo nano check_messages.py 

Dette vil oprette scriptet og åbne det klar til redigering i Nano. Du kunne selvfølgelig bruge et andet program, som Vim, selv om denne tweet opsummerer mine følelser om det:

Jeg har brugt Vim i omkring 2 år nu, for det meste fordi jeg ikke kan finde ud af, hvordan man afslutter det.

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

Spøg til side, tjek denne sammenligning mellem de to nano vs vim: Terminal Text Editors Sammenlignet nano vs vim: Terminal Text Editors Sammenlignet Selv om Linux er blevet let nok til praktisk taget nogen at bruge uden at skulle bruge Terminal, er der nogle af os, der regelmæssigt bruger det eller er nysgerrige efter, hvordan man kan styre ... Læs mere for en fuldstændig sammenbrud.

Tryk på CTRL + X for at forlade Nano og komme tilbage til terminalen.

Python Setup

Gmail-meddelelse-kode
Nu hvor Pi er indstillet, er det tid til at skrive koden. Dette projekt kræver det fremragende Gmail Python Library af Charlie Guo. Download biblioteket fra Github og hent indholdet. Indvendigt skal der være en mappe kaldet "gmail". Kopier hele denne mappe til "/ home / pi / Documents / gmail_python".

Skift tilbage til kommandolinjen, og åbn dit script igen (hvis du trykker på op-tasten kan du rulle gennem dine tidligere indtastede kommandoer):

 sudo nano check_messages.py 

Bemærk, hvordan det er den samme kommando, du brugte til at oprette filen - hvis en fil allerede findes, åbnes den, ellers bliver den oprettet. Her er 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) 

Du skal indtaste dit brugernavn og din adgangskode, så dette kan fungere. Du kan se fuld kildekoden til gmail plugin, hvis du vil. Hvis du ikke har det godt at gøre dette (eller hvis du bruger tofaktorautentificering), skal du oprette forbindelse til Gmail ved hjælp af OAuth2. Dette er lidt involveret i denne vejledning, men Google har en fremragende startvejledning.

Lad os nedbryde koden. Først importeres nogle moduler. Moduler i Python er små stykker kode skrevet til et formål (ligner biblioteker i Arduino IDE). RPi.GPIO er et Pi-specifikt modul til adgang til GPIO, gmail er det modul, du downloadede tidligere, og tid er et modul indbygget i Python for at give timingfunktioner. Nu bruges "GPIO.setmode" og "GPIO.setup" til at fortælle Pi, at pin 14 er en udgang, og at du vil bruge "Broadcom Pin Numbering" (flere oplysninger om BCM).

Denne linje forbinder din gmail-konto. Det skaber et objekt kaldet "g", og kalder login-metoden til gmail-modulet, der er importeret tidligere. Glem ikke at indtaste din gmail email og adgangskode.

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

Hent nu alle de ulæste meddelelser og gem dem i en variabel kaldet "ulæste meddelelser":

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

Bemærk hvordan "ulæst = sand" er bestået som en parameter - du kan ændre dette for at hente meddelelser baseret på forskellige parametre, som f.eks. Afsender eller emne. Se dokumentation for API (Application Programming Interface) for meget mere information.

Dernæst bruges en til sløjfe til at løbe over hver besked:

 for message in unread_messages: total_messages += 1 

Til sløjfer er meget nyttige. De gentager en blok kode flere gange, ofte med en lidt anden værdi hver gang. Denne for sløjfe går over hver besked i ulæste_meddelelser og øger variablen "total_messages".

Endelig anvendes nogle enkle "hvis" udsagn. Hvis der er ulæste meddelelser, skal du tænde for lysdioden, ellers skal du slukke for den.

Husk at Python er sagerfølsom og bruger hvid afstand. Hvis du har problemer med at få koden til at køre, kan du prøve denne hjemmeside. Indsæt din Python i og tryk på knappen "validere over python kode". Dette skal så fortælle dig, hvilke (hvis nogen) fejl er til stede i din Python.

Skift til Terminal og kør dit script:

 python check_messages.py 

Denne kommando vil køre dit script. Prøv manuelt at ændre nogle e-mails i din indbakke til ulæst status og køre scriptet igen - du skal se, at LED'en tændes eller slukkes for at afspejle din indbakke.

Cron Setup

Nu da scriptet virker, er det tid til at automatisere det. Den nemmeste måde at gøre dette på er via et cron job. Cron-job bruges til at planlægge opgaver og scripts, som f.eks. Automatiserede sikkerhedskopier. Åbn Crontab (liste over planlagte opgaver):

 crontab -e 

Hvis der ikke er nogen planlagte opgaver, der allerede er konfigureret, vil denne fil være tom (den kan indeholde dokumentation eller kommentarer, forud for en "#"). Hvis du allerede har indlæg her, skal du blot indtaste din nye kommando på en ny linje:

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

De fem "stjerner" ("* * * * *") angiver, hvor ofte du skal køre opgaven (du kan få det rigtig fancy her, fx hver anden onsdag kl. Disse fem stjerner angiver, at opgaven skal køres hvert minut. Dette er det mindste tilladte interval (læs mere om cronjob planlægning Sådan planlægger du opgaver i Linux med Cron og Crontab Sådan planlægger du opgaver i Linux med Cron og Crontab Evnen til at automatisere opgaver er en af ​​de futuristiske teknologier, der allerede er her. brugeren kan drage fordel af planlægningssystemet og brugeropgaver, takket være cron, en brugervenlig baggrundstjeneste. Læs mere). Næste, "python" fortæller planlæggeren at udføre scriptet som en python-fil. Endelig er "~ / pi / Documents / gmail_python / check_messages.py" den absolutte filsti til dit script - en relativ sti vil ikke fungere.

Du skal nu have dit eget Gmail-meddelelseslys! Det ville være ret nemt at ændre dette for at søge efter meddelelser baseret på et andet krav eller filter (lær hvordan du bruger filtre her 10 Email-problemer, du kan løse med Gmail-filtre 10 Email-problemer, du kan løse med Gmail-filtre En overfyldt indbakke kører dig skør ? Vil du gennem din indbakke hurtigere end nogensinde? Prøv nogle af disse geniale Gmail-filtre for at se forskellen. Læs mere) eller udfør et andet stykke kode - måske kan du oprette en Twitter-bot, der tweets baseret på e-mails (lære mere om at bygge en Pi Twitter-bot Hvordan man opbygger en hindbær Pi Twitter Bot Hvordan man opbygger en hindbær Pi Twitter Bot Twitter er verdens største lager af korte beskeder fra mennesker med intet at sige - og nu kan du også bidrage til det episke projekt med en automatiseret kvidre bot, drevet af din hindbær ... Læs mere).

Men du ender med at kode din notifikationsboks, jeg vil gerne vide, hvordan det går i kommentarerne!

In this article