Lav et Raspberry Pi Gmail-beskedlys

  • Edmund Richardson
  • 0
  • 4778
  • 1210
Reklame

I dette hurtige og lette Raspberry Pi-projekt lærer du, hvordan du opretter en Gmail-e-mail-meddelelseslys. Hvis du har nogen ulæste e-mails, tænder et Python-script LED'en. Dette projekt kræver meget få dele og kan afsluttes på under en time! Du kan selvfølgelig pynte din LED, som du vil, såsom en MineCraft redstone-blok eller andet objekt 3D, der er trykt i klar plast. Her er slutresultatet:

Hvad du har brug for

  • 1 x Raspberry Pi
  • 1 x brødbræt
  • 1 x 220 ohm modstand
  • 1 x 5 mm LED
  • 1 x Gmail-konto
  • Han-til-kvindelige ledninger

Enhver Raspberry Pi fungerer til dette projekt - også Pi Zero! Der er kun brug for en GPIO-pin, og den er ikke særlig CPU-intensiv. Hvis du har et Pi-startpakke, har du mere end nok dele til at fuldføre dette.

Byg plan


Dette er et rigtig enkelt projekt. En lysemitterende diode (LED) er tilsluttet en GPIO (General Outputs Output Output) pin på Pi. Et meget simpelt Python-script kører regelmæssigt for at kontrollere, at ulæste e-mails er slået til og for at tænde eller slukke lysdioden i overensstemmelse hermed.

Hardwaren


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

Pi-opsætning


Forudsat at din Pi har et operativsystem (OS) installeret er der ikke meget installation nødvendigt (er du ikke sikker på, hvad du har brug for? Lær hvordan du installerer et her Sådan installeres et operativsystem på en hindbær Pi Sådan installeres et operativsystem på en hindbær Pi Her er, hvordan du installerer et operativsystem på din Raspberry Pi, og hvordan du kloner din perfekte opsætning til hurtig gendannelse af katastrofer.) Åbn en ny terminal (Øverst til venstre > menu > tilbehør > Terminal) på Pi (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 nogen, der kom over frygt for længe , her er 20 genveje, der kan hjælpe dig med at overvinde nogle af kommandolinjens akavethed.) Du skal oprette en ny mappe for at gemme Python-scriptet. Angiv følgende kommando:

pwd

Dette står for “Print Working Directory”, og viser 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 Dokumenter / sudo mkdir gmail_python

Det “mkdir” kommando står for “Lav telefonbog”. Alt, der følger efter dette, bruges til katalognavnet. Du skal nu kunne se dit bibliotek:

ls

Hvis du begik en fejl, kan du nemt fjerne dette bibliotek:

sudo rm -r gmail_python

Naviger nu ind i det nye bibliotek:

cd gmail_python /

Opret et nyt Python-script:

sudo nano check_messages.py

Dette vil skabe scriptet og åbne det klar til redigering i Nano. Du kan selvfølgelig bruge et andet program, såsom Vim, selvom denne tweet opsummerer mine følelser omkring det:

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

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

Hvis du spøger til side, så tjek denne sammenligning mellem de to nano vs. vim: Terminal Text Editors Sammenlignet nano vs. vim: Terminal Text Editors Sammenlignet Selvom Linux er blevet let nok til praktisk talt enhver at bruge uden nogensinde at skulle bruge terminalen, er der nogle af os, der regelmæssigt bruger det eller er nysgerrige efter, hvordan man kan kontrollere ... for en fuld sammenbrud.

Trykke CTRL + X for at forlade Nano og komme tilbage til terminalen.

Python-opsætning


Nu hvor Pi er konfigureret, er det tid til at skrive koden. Dette projekt kræver det fremragende Gmail Python-bibliotek af Charlie Guo. Download biblioteket fra Github, og tag indholdet ud. Inde 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 oprettes den. Her er Python:

import gmail, RPi.GPIO som GPIO, time # importmoduler GPIO.setwarnings (False) GPIO.setmode (GPIO.BCM) # fortæl Pi, hvilke overskrifter der skal bruges GPIO.setup (14, GPIO.OUT) # fortæl Pi dette pin er en output g = gmail.login ('[email protected]', 'DIN PASSWORD') unread_messages = g.inbox (). mail (unread = True) total_messages = 0 for meddelelse i unread_messages: total_messages + = 1 hvis total_meddelelser> 0: # der er ulæste e-mails, tænd for GPIO.output (14, sandt) ellers: # der er ingen ulæste e-mails, sluk for GPIO.output (14, falsk)

Du skal indtaste dit brugernavn og din adgangskode for at dette kan fungere. Du kan se den fulde kildekode for gmail-plugin, hvis du gerne vil. Hvis du ikke har det godt med at gøre dette (eller du bruger tofaktorautentisering), skal du oprette forbindelse til Gmail ved hjælp af OAuth2. Dette er lidt involveret i denne tutorial, men Google har en fremragende guide til at komme i gang.

Lad os fordele koden. Først importeres nogle moduler. Moduler i Python er små stykker kode skrevet til et formål (svarende til biblioteker i Arduino IDE). RPi.GPIO er et Pi-specifikt modul til adgang til GPIO, gmail er det modul, du har downloadet tidligere, og tiden er et modul indbygget i Python til at give timingfunktioner. Nu “GPIO.setmode” og “GPIO.setup” bruges til at fortælle Pi, at pin 14 er en output, og at du vil bruge “Broadcom Pin Numbering” (mere information om BCM).

Denne linje opretter forbindelse til din gmail-konto. Det skaber et kaldet objekt “g”, og kalder login-metoden til det tidligere importerede gmail-modul. Glem ikke at indtaste din gmail e-mail og adgangskode.

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

Hent nu alle ulæste meddelelser, og gem dem i en kaldet variabel “ulæste beskeder”:

unread_messages = g.inbox (). mail (ulæst = sandt)

Bemærk, hvordan “ulæst = True” sendes som en parameter - du kan ændre dette for at hente meddelelser baseret på forskellige parametre, f.eks. afsender eller emne. Se dokumentationsprogrammet for applikationsprogrammeringsgrænseflade (API) for at få flere oplysninger.

Dernæst bruges en for loop til at krydse over hver meddelelse:

til meddelelse i ulæste_meddelelser: total_meddelelser + = 1

For sløjfer er meget nyttige. De gentager en blok med kode flere gange, ofte med en lidt anden værdi hver gang. Denne for løkke går over hver meddelelse i ulæste_meddelelser og trinvis øges “total_messages” variabel.

Endelig nogle enkle “hvis” udsagn bruges. Hvis der er ulæste beskeder, skal du tænde LED'en, ellers skal du slå den til, hvis den er slukket.

Husk, at Python er store og små bogstaver, og bruger hvid afstand. Hvis du har problemer med at få koden til at køre, kan du prøve dette websted. Indsæt din Python i, og tryk på “validerer ovenfor python-kode” knap. Dette skulle derefter fortælle dig, hvad (hvis der er) fejl, der findes i din Python.

Skift til terminalen og kør dit script:

python check_messages.py

Denne kommando kører 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 lysdioden slå til eller fra for at afspejle din indbakke.

Cron-opsætning

Nu når scriptet fungerer, er det tid til at automatisere det. Den nemmeste måde at gøre dette på er gennem et cron-job. Cron-job bruges til at planlægge opgaver og scripts, såsom automatiske sikkerhedskopier. Åbn Crontab (liste over planlagte opgaver):

crontab -e

Hvis der ikke er konfigureret nogen planlagte opgaver, vil denne fil være tom (den kan indeholde dokumentation eller kommentarer, forudgående af a “#”). Hvis du allerede har poster her, skal du blot indtaste din nye kommando på en ny linje:

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

De fem “stjerner” (“* * * * *”) angiv, hvor ofte du skal køre opgaven (du kan blive virkelig fancy her, f.eks. hver anden onsdag kl. 2.00). Disse fem stjerner specificerer, at opgaven skal køres hvert minut. Dette er det mindste tilladte interval (lære mere om cronjob-planlægning Sådan planlægges opgaver i Linux med Cron og Crontab Sådan planlægges opgaver i Linux med Cron og Crontab Evnen til at automatisere opgaver er en af ​​de futuristiske teknologier, der allerede er her. Hver Linux bruger kan drage fordel af planlægningssystem og brugeropgaver takket være cron, en let at bruge baggrundstjeneste.). Næste, “python” fortæller planlæggeren at udføre scriptet som en python-fil. Langt om længe, “~ / Pi / Dokumenter / gmail_python / check_messages.py” er den absolutte filsti til dit script - en relativ sti fungerer ikke.

Du skal nu have dit eget Gmail-beskedlys! Det ville være ganske enkelt at ændre dette for at se efter meddelelser, der er baseret på et andet krav eller et filter (lær hvordan du bruger filtre her. 10 E-mail-problemer, du kan løse med Gmail-filtre. 10 E-mail-problemer, du kan løse med Gmail-filtre. En oversvømmende indbakke, der gør dig skør ? Vil du gennem din indbakke hurtigere end nogensinde? Prøv nogle af disse strålende Gmail-filtre for at se forskellen.), 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 opbygge en Pi Twitter bot Sådan bygger du en hindbær Pi Twitter bot Sådan bygger du en hindbær Pi Twitter Bot Twitter er verdens største opbevaringssted med korte meddelelser fra folk med intet at sige - og nu kan du også bidrage til det episke projekt med et automatiseret Twitter-bot, drevet af din Raspberry…).

Dog ender du med at kode dit underretningsfelt, vil jeg meget gerne vide, hvordan det går i kommentarerne!




Endnu ingen kommentarer

Om moderne teknologi, enkel og overkommelig.
Din guide i en verden af moderne teknologi. Lær hvordan du bruger de teknologier og gadgets, der omgiver os hver dag, og lær, hvordan du finder interessante ting på Internettet.