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. 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 di cui hai bisogno
- 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
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
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
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 Risparmia 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 , qui ci sono 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 rappresenta “Stampa la directory di lavoro”, e ti mostrerà in quale cartella ti trovi (di default questo è “/ Home / pi”). Passare nella cartella dei documenti e creare una nuova directory (cartella) chiamata “gmail_python”:
cd Documenti / sudo mkdir gmail_python
Il “mkdir” comando 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.
stampa CTRL + X per uscire da Nano e tornare al terminal.
Installazione di Python
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. Dentro ci dovrebbe essere 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 come GPIO, moduli # time import GPIO.setwarnings (False) GPIO.setmode (GPIO.BCM) # indica al Pi quali intestazioni usare GPIO.setup (14, GPIO.OUT) # dillo al Pi pin è un output g = gmail.login ('[email protected] ',' TUA PASSWORD ') unread_messages = g.inbox (). mail (unread = True) total_messages = 0 per messaggio in unread_messages: total_messages + = 1 se total_messages> 0: # ci sono e-mail non lette, accendi la luce su GPIO.output (14, True) altro: # non ci sono e-mail non lette, spegni la luce 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. Adesso “GPIO.setmode” e “GPIO.setup” sono usati per dire al Pi che il pin 14 è un output e che vuoi usare “Numerazione pin Broadcom” (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] ',' LA TUA 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 “non letto = 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:
per messaggio 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 il valore “total_messages” variabile.
Finalmente, alcuni semplici “Se” dichiarazioni sono usate. 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 tasto “convalidare sopra il codice Python” pulsante. 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 a eseguire nuovamente lo script: 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 a “#”). Se hai già delle voci qui, inserisci semplicemente il tuo nuovo comando su una nuova riga:
* * * * * python ~ / pi / Documents / gmail_python / check_messages.py
I cinque “stelle” (“* * * * *”) specifica la frequenza con cui eseguire l'attività (puoi diventare davvero fantasioso qui, 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. Il prossimo, “pitone” dice allo scheduler di eseguire lo script come un file python. Finalmente, “~ / PI / Documents / gmail_python / check_messages.py” è il percorso file assoluto 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!
Scopri di più su: Gmail, Raspberry Pi.