Fai una luce di notifica Gmail Raspberry Pi

In questo rapido e facile progetto Raspberry Pi, imparerai come creare una notifica di posta elettronica di Gmail. Se hai delle e-mail non lette, uno script Python accende il LED.

In questo rapido e facile progetto Raspberry Pi, imparerai come creare una notifica di posta elettronica di Gmail.  Se hai delle e-mail non lette, uno script Python accende il LED.
Annuncio pubblicitario

In questo rapido e facile progetto Raspberry Pi, imparerai come creare una notifica di posta elettronica di Gmail. Se hai delle e-mail non lette, uno script Python accende il LED. Questo progetto richiede pochissime parti e può essere completato in meno di un'ora! Ovviamente puoi vestire il tuo LED come preferisci, come un blocco di pietra rossa di MineCraft o altri oggetti stampati in plastica trasparente. Ecco il risultato finale:

Quello che ti serve

  • 1 x Raspberry Pi
  • 1 x breadboard
  • 1 x 220 ohm di resistenza
  • 1 x 5mm LED
  • 1 x account Gmail
  • Cavi da uomo a femmina

Qualsiasi Raspberry Pi funzionerà per questo progetto - anche il Pi Zero! È necessario un solo pin GPIO e non è particolarmente intenso per la CPU. Se hai un kit di avviamento Pi hai più di parti sufficienti per completare questo.

Piano di costruzione

Gmail-Notification-LED
Questo è un progetto molto semplice. Un diodo a emissione luminosa (LED) è collegato a un pin GPIO (General Purpose Input Output) sul Pi. Uno script Python molto semplice verrà eseguito regolarmente per controllare le e-mail non lette e accendere o spegnere il LED di conseguenza.

L'hardware

Gmail-Notification-Circuit
Collegare l'anodo positivo (gamba lunga) del LED al resistore e quindi al pin 14 GPIO. È possibile utilizzare qualsiasi pin GPIO, tuttavia osservare prima il pinout, poiché variano leggermente tra i modelli. Collegare il catodo negativo (gamba corta con bordo piatto) a terra.

Pi Setup

Gmail-Notification-Pi
Se il tuo Pi ha installato un sistema operativo (OS), non è necessaria molta installazione (non sei sicuro di cosa hai bisogno?) Scopri come installarne uno qui Come installare un sistema operativo sul tuo Raspberry Pi Come installare un sistema operativo sul tuo Raspberry Pi Ecco come ottenere un nuovo sistema operativo installato e funzionante sul tuo Pi e come clonare la tua configurazione perfetta per un rapido ripristino di emergenza. Apri un nuovo terminale (in alto a sinistra > menu > Accessori > Terminale ) sul Pi (controlla queste scorciatoie per renderti un ninja di codifica Risparmio di tempo nel terminale Linux con queste 20 scorciatoie Risparmia tempo nel terminale Linux con questi 20 scorciatoie Se sei un principiante o qualcuno che ha superato la paura molto tempo fa, ecco 20 scorciatoie che possono aiutarti a superare alcuni dei disagi della linea di comando. È necessario creare una nuova cartella per memorizzare lo script Python. Inserisci il seguente comando:

pwd 

Questo significa "Stampa directory di lavoro" e ti mostrerà in quale cartella ti trovi (di default è "/ home / pi"). Passare nella cartella documenti e creare una nuova directory (cartella) chiamata "gmail_python":

 cd Documents/ sudo mkdir gmail_python 

Il comando "mkdir" sta per "Crea Directory". Tutto ciò che segue sarà usato per il nome della directory. Ora dovresti essere in grado di vedere la tua directory:

 ls 

Se hai fatto un errore, puoi facilmente rimuovere questa directory:

 sudo rm -r gmail_python 

Ora naviga nella nuova directory:

 cd gmail_python/ 

Crea un nuovo script Python:

 sudo nano check_messages.py 

Questo creerà lo script e lo aprirà pronto per la modifica in Nano. Ovviamente potresti usare un altro programma, come Vim, anche se questo tweet riassume i miei sentimenti a riguardo:

Sto usando Vim da circa 2 anni, soprattutto perché non riesco a capire come uscirne.

- I Am Devloper (@iamdevloper) 17 febbraio 2014

Scherzi a parte, dai un'occhiata a questo confronto tra i due nano e vim: Terminale Editor di testo Confronto nano vs vim: Terminale Editor di testo a confronto Sebbene Linux sia diventato abbastanza facile da essere utilizzato da chiunque senza dover utilizzare il terminale, ci sono alcuni di noi che lo usano regolarmente o sono curiosi di sapere come si può controllare ... Leggi di più per un completo esaurimento.

Premi CTRL + X per uscire da Nano e tornare al terminale.

Installazione di Python

Gmail-Notification-Code
Ora che il Pi è configurato, è il momento di scrivere il codice. Questo progetto richiede l'eccellente libreria Python di Gmail di Charlie Guo. Scarica la libreria da Github ed estrai il contenuto. All'interno dovrebbe esserci una cartella chiamata "gmail". Copia l'intera cartella in "/ home / pi / Documents / gmail_python".

Torna alla riga di comando e riapri lo script (se premi il tasto su puoi scorrere i comandi precedentemente inseriti):

 sudo nano check_messages.py 

Nota come è lo stesso comando che hai usato per creare il file - se un file esiste già verrà aperto, altrimenti verrà creato. Ecco il 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) 

È necessario inserire il nome utente e la password per farlo funzionare. Se vuoi, puoi visualizzare il codice sorgente completo per il plug-in di Gmail. Se non ti senti a tuo agio nel fare ciò (o stai utilizzando l'autenticazione a due fattori) dovrai collegarti a Gmail usando OAuth2. Questo è un po 'complicato per questo tutorial, tuttavia Google ha un'ottima guida introduttiva.

Analizziamo il codice. Prima vengono importati alcuni moduli. I moduli in Python sono piccoli pezzi di codice scritti per uno scopo (simile alle librerie nell'IDE di Arduino). RPi.GPIO è un modulo Pi specifico per accedere al GPIO, gmail è il modulo che hai scaricato in precedenza e il tempo è un modulo integrato in Python per fornire funzioni di temporizzazione. Ora "GPIO.setmode" e "GPIO.setup" sono usati per dire al Pi che il pin 14 è un output e che si desidera utilizzare "Broadcom Pin Numbering" (maggiori informazioni su BCM).

Questa linea si connette al tuo account Gmail. Crea un oggetto chiamato "g" e chiama il metodo di accesso del modulo Gmail importato in precedenza. Non dimenticare di inserire la tua email e password Gmail.

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

Ora recupera tutti i messaggi non letti e li memorizza in una variabile chiamata "messaggi non letti":

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

Nota come "unread = True" viene passato come parametro - puoi cambiarlo per recuperare messaggi basati su parametri diversi, come mittente o soggetto. Consulta la documentazione sull'API (Application Programming Interface) per molte altre informazioni.

Successivamente, viene utilizzato un ciclo for per eseguire il loop su ogni messaggio:

 for message in unread_messages: total_messages += 1 

I loop sono molto utili. Ripetono un blocco di codice più volte, spesso con un valore leggermente diverso ogni volta. Questo ciclo for passa sopra ogni messaggio in unread_messages e incrementa la variabile "total_messages".

Infine, vengono usate alcune semplici istruzioni "se". Se ci sono messaggi non letti, accendi il LED, altrimenti si spegne se spento.

Ricorda che Python fa distinzione tra maiuscole e minuscole e utilizza la spaziatura bianca. Se hai problemi nel far funzionare il codice, prova questo sito web. Incolla il tuo Python e premi il pulsante "convalida sopra il codice Python". Questo dovrebbe quindi dirti quali (se ci sono) errori sono presenti nel tuo Python.

Passa al terminale ed esegui il tuo script:

 python check_messages.py 

Questo comando eseguirà il tuo script. Prova a modificare manualmente alcune e-mail nella posta in arrivo in stato non letto e rieseguire lo script di nuovo: dovresti vedere il LED accendere o spegnere per riflettere la tua casella di posta.

Cron Setup

Ora che lo script funziona è ora di automatizzarlo. Il modo più semplice per farlo è attraverso un cron job. I lavori Cron vengono utilizzati per pianificare attività e script, come i backup automatici. Apri Crontab (elenco delle attività pianificate):

 crontab -e 

Se non ci sono già attività programmate già installate, questo file sarà vuoto (potrebbe contenere documentazione o commenti, preceduto da un "#"). Se hai già delle voci qui, inserisci semplicemente il tuo nuovo comando su una nuova riga:

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

Le cinque "stelle" ("* * * * *") specificano la frequenza con cui eseguire l'attività (qui puoi essere davvero fantasioso, ad esempio ogni secondo mercoledì alle 2.00). Queste cinque stelle specificano che l'attività deve essere eseguita ogni minuto. Questo è il più piccolo intervallo consentito (ulteriori informazioni sulla pianificazione cronjob Come pianificare le attività in Linux con Cron e Crontab Come pianificare le attività in Linux con Cron e Crontab La possibilità di automatizzare le attività è una di quelle tecnologie futuristiche che è già qui. l'utente può beneficiare del sistema di pianificazione e delle attività dell'utente, grazie a cron, un servizio in background di facile utilizzo. Successivamente, "python" dice allo scheduler di eseguire lo script come un file python. Infine, "~ / pi / Documents / gmail_python / check_messages.py" è il percorso assoluto del file per il tuo script - un percorso relativo non funzionerà.

Ora dovresti avere la tua spia di notifica di Gmail! Sarebbe abbastanza semplice modificarlo per cercare messaggi basati su un diverso requisito o filtro (scopri come utilizzare i filtri qui 10 Problemi di posta elettronica che puoi risolvere con i filtri Gmail 10 Problemi di posta elettronica che puoi risolvere con i filtri Gmail Una casella di posta che trabocca ti fa impazzire Vuoi passare attraverso la tua casella di posta più veloce che mai? Prova alcuni di questi fantastici filtri Gmail per vedere la differenza. Leggi di più) o esegui una parte di codice diversa - potresti creare un bot di Twitter che tweets basati su e-mail (scopri come costruire un Bot Twitter di Pi Come costruire un Bot di Twitter Raspberry Pi Come costruire un Twitter Bot di Raspberry Pi Twitter è il più grande repository mondiale di brevi messaggi di persone che non hanno nulla da dire - e ora anche tu puoi contribuire a quel progetto epico con un bot automatizzato di Twitter, alimentato dal tuo Raspberry ... Leggi di più).

Comunque finisci per scrivere la tua casella di notifica, mi piacerebbe sapere come va nei commenti!

In this article