Faceți o lumină de notificare pentru zmeura Pi Gmail

Faceți o lumină de notificare pentru zmeura Pi Gmail / DIY

În acest proiect rapid și ușor de Raspberry Pi, veți învăța cum să faceți o notificare prin e-mail Gmail. Dacă aveți e-mailuri necitite, un script Python activează LED-ul. Acest proiect necesită foarte puține părți și poate fi finalizat în mai puțin de o oră! Puteți, desigur, îmbrăcați-vă LED-urile în orice fel doriți, cum ar fi un bloc Redstone din MineCraft sau un alt obiect 3D tipărit în plastic transparent. Iată rezultatul final:

De ce ai nevoie

  • 1 x Zmeură Pi
  • 1 x breadboard
  • 1 x 220 ohm rezistor
  • LED-uri de 1 x 5 mm
  • 1 x cont Gmail
  • Bărbați-femei conectează fire

Orice Raspberry Pi va lucra pentru acest proiect - chiar Pi Zero! Doar un pin GPIO este necesar și nu este deosebit de intensiv pentru CPU. Dacă aveți un kit de pornire Pi, aveți mai mult decât suficient pentru a finaliza acest lucru.

Construiți un plan


Acesta este un proiect foarte simplu. O diodă de emițător de lumină (LED) este conectată la pinul GPIO (Ieșire de intrare generală). Un script Python foarte simplu va rula în mod regulat pentru a verifica e-mailurile necitite și a porni sau opri LED-ul corespunzător.

Hardware-ul


Conectați anodul pozitiv (piciorul lung) al LED-ului la rezistor și apoi la pinul GPIO 14. Puteți folosi orice pin GPIO, cu toate acestea uita-te la pinout primul, deoarece acestea variază ușor între modele. Conectați catodul negativ (piciorul scurt cu muchia plană) la masă.

Pornire instalare


Asigurați-vă că Pi are un sistem de operare instalat (OS), nu este nevoie de o mulțime de setări (nu sunteți sigur ce aveți nevoie?) Aflați cum să instalați unul aici Cum să instalați un sistem de operare la zmeura dvs. Pi Cum să instalați un sistem de operare la zmeura dvs. Pi Iată cum puteți să instalați un nou sistem de operare pe Pi - și cum să vă clonați configurarea perfectă pentru recuperarea rapidă în caz de catastrofe. Deschideți un nou terminal (Stânga sus > meniul > Accesorii > Terminal) pe Pi (check out aceste comenzi rapide pentru a vă face un ninja de codificare Salvați timp în terminalul Linux cu aceste 20 de comenzi rapide Economisiți timp în terminalul Linux cu aceste 20 de comenzi rapide Fie că sunteți un newbie terminal sau cineva care a trecut peste frica de mult , aici sunt 20 de comenzi rapide care vă pot ajuta să depășiți o parte din incomoditatea liniei de comandă. Trebuie să creați un nou dosar pentru a stoca scriptul Python. Introduceți următoarea comandă:

PWD

Asta înseamnă “Imprimare director de lucru”, și vă va arăta în ce dosar vă aflați (în mod implicit, acesta va fi “/ Home / pi”). Navigați în dosarul documente și creați un director nou (dosar) numit “gmail_python”:

Documente cd / sudo mkdir gmail_python

“mkdir” comandă standuri “Faceți directorul”. Orice următor va fi folosit pentru numele directorului. Acum ar trebui să vă puteți vedea directorul:

ls

Dacă ați făcut o greșeală, puteți elimina cu ușurință acest director:

sudo rm -r gmail_python

Acum, navigați în noul director:

cd gmail_python /

Creați un nou script Python:

sudo nano check_messages.py

Acest lucru va crea scriptul și îl va deschide gata pentru editare în Nano. S-ar putea să folosiți, desigur, un alt program, cum ar fi Vim, deși acest tweet îmi rezumă sentimentele mele:

Am folosit Vim acum 2 ani, mai ales pentru că nu-mi dau seama cum să o părăsesc.

- I Am Devloper (@iamdevloper) 17 februarie 2014

Gândiți-vă la o parte, verificați această comparație între cei doi nano vs. vim: Terminali Text Editors Comparați nano vs vim: Terminali Text Editors Comparat Deși Linux a devenit destul de ușor pentru practic oricine să folosească fără a fi nevoit vreodată să utilizeze Terminalul, dintre noi care o folosesc în mod regulat sau sunt curioși cum se poate controla ... Citește mai mult pentru o defalcare completă.

presa CTRL + X pentru a ieși din Nano și a te întoarce la terminal.

Instalarea Python


Acum, când Pi este configurat, este timpul să scrieți codul. Acest proiect necesită biblioteca excelentă Gmail Python de Charlie Guo. Descărcați biblioteca de la Github și extrageți conținutul. În interior ar trebui să existe un dosar numit “gmail”. Copiați întregul dosar în “/ Home / pi / Documente / gmail_python”.

Reveniți la linia de comandă și deschideți din nou scriptul (dacă apăsați tasta de sus puteți parcurge comenzile introduse anterior):

sudo nano check_messages.py

Observați cum este aceeași comandă pe care ați folosit-o pentru a crea fișierul - dacă există deja un fișier, acesta va fi deschis, altfel va fi creat. Iată Python-ul:

import Gmail, RPi.GPIO ca GPIO, timp # module de import GPIO.setwarnings (Fals) GPIO.setmode (GPIO.BCM) # spune Pi ce anteturi de a utiliza GPIO.setup (14, GPIO.OUT) # spune Pi acest pin este o ieșire g = gmail.login ('[email protected] ',' PASSWORD ') unread_messages = g.inbox () mail (nereușit = adevărat) total_messages = 0 pentru mesaje în mesaje necitite: total_messages + = 1 if total_messages> 0: # există e-mailuri necitite, întoarceți lumina pe GPIO.output (14, True) altfel: # nu există e-mailuri necitite, opriți lumina GPIO.output (14,

Va trebui să introduceți numele de utilizator și parola pentru ca aceasta să funcționeze. Puteți vedea codul sursă complet pentru pluginul gmail, dacă doriți. Dacă nu vă simțiți confortabil (sau utilizați autentificarea cu doi factori), va trebui să vă conectați la Gmail utilizând OAuth2. Acest lucru este puțin implicat în acest tutorial, însă Google are un ghid excelent de a începe.

Să defalc codul. Mai întâi sunt importate câteva module. Modulele din Python sunt mici bucăți de cod scrise pentru un scop (similar cu bibliotecile din Arduino IDE). RPi.GPIO este un modul specific pentru accesul la GPIO, gmail este modulul pe care l-ați descărcat anterior și timpul este un modul construit în Python pentru a oferi funcții de sincronizare. Acum “GPIO.setmode” și “GPIO.setup” sunt folosite pentru a spune Pi că pinul 14 este o ieșire și pe care doriți să o utilizați “Numerotarea PIN-urilor” (mai multe informații despre BCM).

Această linie se conectează la contul dvs. Gmail. Creează un obiect numit “g”, și solicită metoda de autentificare a modulului gmail importat anterior. Nu uitați să introduceți adresa de e-mail și parola Gmail.

g = gmail.login ('[email protected] ',' PASUL DUMNEAVOASTRĂ ')

Acum recuperați toate mesajele necitite și păstrați-le într-o variabilă numită “mesaje necitite”:

unread_messages = g.inbox () mail (necitit = adevărat)

Observați cum “necitită = Adevărat” este trecut ca parametru - puteți schimba acest lucru pentru a prelua mesaje pe baza unor parametri diferiți, cum ar fi expeditorul sau subiectul. Consultați documentația privind interfața de programare aplicație (API) pentru mai multe informații.

Apoi, o buclă pentru se utilizează pentru a trece peste fiecare mesaj:

pentru mesaj în mesaje necitite: total_messages + = 1

Buclele sunt foarte utile. Ei repetă un bloc de cod de mai multe ori, adesea cu o valoare ușor diferită de fiecare dată. Acest lucru pentru buclă trece peste fiecare mesaj în mesaje necitite și crește incrementul “TOTAL_MESSAGES” variabil.

În cele din urmă, unele simple “dacă” sunt utilizate. Dacă există mesaje necitite, rotiți LED-ul, în caz contrar opriți.

Rețineți că Python este sensibil la minuscule și utilizează distanțe albe. Dacă întâmpinați probleme la obținerea codului, încercați acest site web. Inserați Python-ul și apăsați pe “validați codul de mai sus” buton. Acest lucru ar trebui să vă spună apoi ce erori (dacă există) sunt prezente în Python.

Treceți la Terminal și rulați scriptul:

python check_messages.py

Această comandă va rula scriptul. Încercați să schimbați manual unele mesaje de e-mail din căsuța de e-mail în stare necitită și să rulați scriptul din nou - ar trebui să vedeți LED-ul pornit sau oprit pentru a reflecta mesajele primite.

Configurarea Cron

Acum că scenariul funcționează este momentul să-l automatizezi. Cel mai simplu mod de a face acest lucru este printr-o activitate cron. Activitățile Cron sunt utilizate pentru a programa sarcini și scripturi, cum ar fi copii de rezervă automate. Deschideți Crontab (lista de sarcini programate):

crontab -e

Dacă nu există deja setări de sarcini programate, acest fișier va fi gol (poate conține documentație sau comentarii, precedate de a “#”). Dacă aveți deja intrări aici, pur și simplu introduceți noua comandă pe o linie nouă:

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

Cinci-ul “stele” (“* * * * *”) specificați cât de des să executați sarcina (puteți obține cu adevărat fantezie aici, de exemplu, în fiecare a doua zi de miercuri la ora 2.00). Aceste cinci stele specifică faptul că sarcina ar trebui să fie executată în fiecare minut. Acesta este cel mai mic interval permis (aflați mai multe despre programarea cronjob) Cum să programați sarcini în Linux cu Cron și Crontab Cum să programați sarcini în Linux cu Cron și Crontab Abilitatea de a automatiza sarcinile este una dintre acele tehnologii futuriste care este deja aici. utilizatorul poate beneficia de sarcini de programare și de utilizator, datorită serviciului de fundal ușor de utilizat, cron. Următor →, “piton” spune planificatorului să execute scriptul ca fișier python. In cele din urma, “~ / Pi / Documente / gmail_python / check_messages.py” este calea absolută a fișierului pentru scriptul dvs. - o cale relativă nu va funcționa.

Ar trebui să aveți acum propria dvs. lumină de notificare Gmail! Ar fi destul de simplu să modificați acest lucru pentru a căuta mesaje bazate pe o altă cerință sau filtru (aflați cum să utilizați filtrele aici) 10 Probleme de e-mail Puteți rezolva cu filtrele Gmail 10 Probleme de e-mail Puteți rezolva cu filtre Gmail ? Vrei să treci prin cutia poștală mai repede decât oricând? Încearcă unele dintre aceste filtre Gmail strălucitoare pentru a vedea diferența. Citește mai mult) sau să executați o altă bucată de cod - poate ai putea crea un bot de Twitter care să facă tweets bazat pe e-mailuri mai multe despre construirea unui Pi Twitter bot Cum de a construi o Zmeură Pi Twitter Bot Cum de a construi o Zmeură Pi Twitter Bot Twitter este cel mai mare depozit din lume de mesaje scurte de la oameni cu nimic de spus - și acum și tu puteți contribui la acest proiect epic cu un bot automat Twitter, alimentat de Raspberry dvs. ... Citeste mai mult).

Totuși, sfârșesc să codificați caseta de notificare, mi-ar plăcea să știu cum merge în comentarii!

Explorați mai multe despre: Gmail, Raspberry Pi.