Σε αυτό το γρήγορο και εύκολο πρόγραμμα Raspberry Pi, θα μάθετε πώς να κάνετε μια ειδοποίηση ηλεκτρονικού ταχυδρομείου Gmail. Αν έχετε μη αναγνωσμένα μηνύματα ηλεκτρονικού ταχυδρομείου, μια δέσμη ενεργειών Python ενεργοποιεί τη λυχνία LED. Αυτό το έργο απαιτεί πολύ λίγα μέρη και μπορεί να ολοκληρωθεί σε λιγότερο από μία ώρα! Μπορείτε φυσικά να ντύσετε τα LED σας με οποιοδήποτε τρόπο θέλετε, όπως ένα μπλοκ MineCraft redstone ή άλλο αντικείμενο 3D τυπωμένο σε καθαρό πλαστικό. Εδώ είναι το τελικό αποτέλεσμα:
Ο, τι χρειάζεσαι
- 1 x Raspberry Pi
- 1 x breadboard
- 1 x 220 ohm αντίσταση
- 1 x 5 mm LED
- 1 x λογαριασμός Gmail
- Τα αρσενικά και θηλυκά συνδέουν καλώδια
Οποιοσδήποτε Raspberry Pi θα εργαστεί για αυτό το έργο - ακόμα και το Pi Zero! Απαιτείται μόνο ένας ακροδέκτης GPIO και δεν είναι ιδιαίτερα εντατικός στην CPU. Εάν διαθέτετε ένα κιτ εκκίνησης Pi, έχετε περισσότερα από αρκετά εξαρτήματα για να ολοκληρώσετε αυτό το έργο.
Δημιουργία σχεδίου
Αυτό είναι ένα πραγματικά απλό έργο. Μια δίοδος εκπομπής φωτός (LED) είναι συνδεδεμένη με έναν ακροδέκτη GPIO (γενικής χρήσης εισόδου εξόδου) στην υποδοχή Pi. Ένα πολύ απλό script Python θα τρέχει τακτικά για να ελέγξει τα μη αναγνωσμένα μηνύματα ηλεκτρονικού ταχυδρομείου και να ανάψει ή να σβήσει τη λυχνία LED ανάλογα.
Το υλικό
Συνδέστε το θετικό ανόδιο (μακρύ πόδι) της LED στην αντίσταση και στη συνέχεια στον ακροδέκτη GPIO 14. Θα μπορούσατε να χρησιμοποιήσετε οποιαδήποτε καρφίτσα GPIO, ωστόσο κοιτάξτε το pinout πρώτα, καθώς ποικίλλουν ελαφρά μεταξύ των μοντέλων. Συνδέστε την αρνητική κάθοδο (το κοντό σκέλος με την επίπεδη άκρη) στη γείωση.
Εγκατάσταση
Παρέχοντας το Pi σας έχει εγκατασταθεί ένα λειτουργικό σύστημα (OS), δεν χρειάζεται πολλή ρύθμιση (δεν είστε σίγουροι τι χρειάζεστε; Μάθετε πώς να το εγκαταστήσετε εδώ Πώς να εγκαταστήσετε ένα λειτουργικό σύστημα στο Raspberry Pi Πώς να εγκαταστήσετε ένα λειτουργικό σύστημα στο Raspberry σας Pi Εδώ είναι πώς μπορείτε να εγκαταστήσετε και να λειτουργήσετε ένα νέο λειτουργικό σύστημα στο Pi σας και πώς να κλωνοποιήσετε την ιδανική σας εγκατάσταση για γρήγορη αποκατάσταση καταστροφών. Ανοίξτε ένα νέο τερματικό ( Αρχή προς τα αριστερά > μενού > Αξεσουάρ > Τερματικό ) στο Pi (ολοκλήρωση αυτών των συντομεύσεων για να φτιάξετε ένα ninja κωδικοποίησης) Εξοικονομήστε χρόνο στο τερματικό Linux με αυτές τις 20 Συντομεύσεις Εξοικονομήστε χρόνο στο τερματικό Linux με αυτές τις 20 συντομεύσεις. είστε ένας τερματισμός newbie ή κάποιος που πήρε το φόβο εδώ και πολύ καιρό, εδώ είναι 20 συντομεύσεις που μπορούν να σας βοηθήσουν να ξεπεράσετε κάποια αμηχανία της γραμμής εντολών. Πρέπει να δημιουργήσετε ένα νέο φάκελο για να αποθηκεύσετε το σενάριο Python. Εισαγάγετε την ακόλουθη εντολή:
pwd
Αυτό σημαίνει "Print Working Directory" και θα σας δείξει τον φάκελο στον οποίο βρίσκεστε (από προεπιλογή αυτό είναι "/ home / pi"). Μεταβείτε στον φάκελο εγγράφων και δημιουργήστε ένα νέο κατάλογο (φάκελο) που ονομάζεται "gmail_python":
cd Documents/ sudo mkdir gmail_python
Η εντολή "mkdir" σημαίνει "Make Directory". Οτιδήποτε ακολουθεί αυτό θα χρησιμοποιηθεί για το όνομα του καταλόγου. Θα πρέπει τώρα να βλέπετε τον κατάλογό σας:
ls
Αν κάνατε λάθος, μπορείτε εύκολα να καταργήσετε αυτόν τον κατάλογο:
sudo rm -r gmail_python
Τώρα περιηγηθείτε στον νέο κατάλογο:
cd gmail_python/
Δημιουργήστε ένα νέο σενάριο Python:
sudo nano check_messages.py
Αυτό θα δημιουργήσει το σενάριο και θα το ανοίξει έτοιμο για επεξεργασία στο Nano. Θα μπορούσατε φυσικά να χρησιμοποιήσετε ένα άλλο πρόγραμμα, όπως το Vim, αν και αυτό το tweet συνοψίζει τα συναισθήματά μου σχετικά με αυτό:
Έχω χρησιμοποιήσει τον Vim εδώ και 2 χρόνια, κυρίως επειδή δεν μπορώ να καταλάβω πώς να το βγάλω από το σπίτι.
- I Am Devloper (@iamdevloper) στις 17 Φεβρουαρίου 2014
Αν και το Linux έχει καταστεί αρκετά εύκολο για σχεδόν οποιονδήποτε να χρησιμοποιήσει χωρίς να χρειαστεί ποτέ να χρησιμοποιήσει τον τερματικό, υπάρχουν μερικοί από εμάς που το χρησιμοποιούν τακτικά ή είναι περίεργοι για το πώς μπορεί κανείς να ελέγξει ... Διαβάστε περισσότερα για μια πλήρη κατανομή.
Πατήστε CTRL + X για έξοδο από το Nano και επιστροφή στο τερματικό.
Ρύθμιση Python
Τώρα που το Pi είναι setup, είναι καιρός να γράψουμε τον κώδικα. Αυτό το έργο απαιτεί την εξαιρετική βιβλιοθήκη Python του Gmail από τον Charlie Guo. Κάντε λήψη της βιβλιοθήκης από το Github και εξαγάγετε το περιεχόμενο. Στο εσωτερικό θα πρέπει να υπάρχει ένας φάκελος που ονομάζεται "gmail". Αντιγράψτε ολόκληρο τον φάκελο σε "/ home / pi / Documents / gmail_python".
Γυρίστε ξανά στη γραμμή εντολών και ανοίξτε ξανά τη δέσμη ενεργειών (αν πατήσετε το πλήκτρο επάνω μπορείτε να μετακινηθείτε στις εντολές που έχετε εισάγει προηγουμένως):
sudo nano check_messages.py
Παρατηρήστε πως αυτή είναι η ίδια εντολή που χρησιμοποιήσατε για τη δημιουργία του αρχείου - εάν υπάρχει ήδη ένα αρχείο, θα ανοίξει, αλλιώς θα δημιουργηθεί. Εδώ είναι το 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)
Θα πρέπει να εισαγάγετε το όνομα χρήστη και τον κωδικό πρόσβασης για να λειτουργήσει αυτό. Μπορείτε να δείτε τον πλήρη πηγαίο κώδικα για την προσθήκη gmail, αν θέλετε. Εάν δεν αισθάνεστε άνετα να κάνετε κάτι τέτοιο (ή χρησιμοποιείτε έλεγχο ταυτότητας δύο παραγόντων), θα πρέπει να συνδεθείτε στο Gmail χρησιμοποιώντας το OAuth2. Αυτό είναι ένα κομμάτι που εμπλέκονται για αυτό το φροντιστήριο, ωστόσο το Google έχει έναν εξαιρετικό ξεκίνημα οδηγό.
Ας αναλύσουμε τον κώδικα. Αρχικά εισάγονται ορισμένες ενότητες. Οι ενότητες της Python είναι μικρά κομμάτια κώδικα γραμμένα για ένα σκοπό (παρόμοια με τις βιβλιοθήκες του IDE του Arduino). Το RPi.GPIO είναι μια ειδική ενότητα Pi για την πρόσβαση στο GPIO, το gmail είναι η ενότητα που έχετε κατεβάσει προηγουμένως και ο χρόνος είναι μια ενότητα ενσωματωμένη στην Python για την παροχή λειτουργιών χρονισμού. Τώρα χρησιμοποιούνται οι μέθοδοι "GPIO.setmode" και "GPIO.setup" για να πείτε στο Pi ότι ο ακροδέκτης 14 είναι έξοδος και ότι θέλετε να χρησιμοποιήσετε την "Αρίθμηση Pin Broadcom" (περισσότερες πληροφορίες για το BCM).
Αυτή η γραμμή συνδέεται με το λογαριασμό σας στο Gmail. Δημιουργεί ένα αντικείμενο που ονομάζεται "g" και καλεί τη μέθοδο σύνδεσης της ενότητας gmail που έχει εισαχθεί προηγουμένως. Μην ξεχάσετε να εισαγάγετε το email και τον κωδικό πρόσβασής σας στο gmail.
g = gmail.login('[email protected]', 'YOUR PASSWORD')
Τώρα ανακτήστε όλα τα μη αναγνωσμένα μηνύματα και αποθηκεύστε τα σε μια μεταβλητή που ονομάζεται "μη αναγνωσμένα μηνύματα":
unread_messages = g.inbox().mail(unread=True)
Παρατηρήστε πως η παράμετρος "unread = True" μεταβιβάζεται ως παράμετρος - μπορείτε να την αλλάξετε για να ανακτήσετε μηνύματα βάσει διαφορετικών παραμέτρων, όπως ο αποστολέας ή το θέμα. Ανατρέξτε στην τεκμηρίωση Διεπαφής Προγραμματισμού Εφαρμογών (API) για περισσότερες πληροφορίες.
Στη συνέχεια, για βρόχο χρησιμοποιείται ένας κύκλος βρόχου για κάθε μήνυμα:
for message in unread_messages: total_messages += 1
Για τους βρόχους είναι πολύ χρήσιμο. Επαναλαμβάνουν ένα μπλοκ κώδικα αρκετές φορές, συχνά με μια ελαφρώς διαφορετική τιμή κάθε φορά. Αυτό για τον βρόχο περνά κάθε μήνυμα σε unread_messages και αυξάνει τη μεταβλητή "total_messages".
Τέλος, χρησιμοποιούνται μερικές απλές δηλώσεις "if". Αν υπάρχουν μη αναγνωσμένα μηνύματα, ενεργοποιήστε τη λυχνία LED, διαφορετικά ενεργοποιήστε την ανενεργή.
Θυμηθείτε ότι η Python κάνει διάκριση πεζών-κεφαλαίων και χρησιμοποιεί λευκό διάστιχο. Εάν αντιμετωπίζετε προβλήματα κατά την εκτέλεση του κώδικα, δοκιμάστε αυτόν τον ιστότοπο. Επικολλήστε το Python και πατήστε το κουμπί "επικυρώστε τον παραπάνω κώδικα python". Αυτό θα πρέπει τότε να σας πει ποια (αν υπάρχουν) σφάλματα υπάρχουν στο Python σας.
Μεταβείτε στο Terminal και εκτελέστε το σενάριο σας:
python check_messages.py
Αυτή η εντολή θα εκτελέσει το σενάριό σας. Δοκιμάστε να αλλάξετε με μη αυτόματο τρόπο κάποια μηνύματα ηλεκτρονικού ταχυδρομείου στα εισερχόμενά σας σε μη αναγνωσμένη κατάσταση και εκ νέου εκτέλεση του σεναρίου - θα πρέπει να δείτε την ενδεικτική λυχνία ενεργοποιημένη ή απενεργοποιημένη ώστε να αντικατοπτρίζει τα εισερχόμενά σας.
Εγκατάσταση Cron
Τώρα που το σενάριο λειτουργεί είναι καιρός να αυτοματοποιηθεί. Ο ευκολότερος τρόπος για να γίνει αυτό είναι μέσω μιας εργασίας cron. Οι εργασίες Cron χρησιμοποιούνται για τον προγραμματισμό εργασιών και σεναρίων, όπως τα αυτοματοποιημένα αντίγραφα ασφαλείας. Ανοίξτε το Crontab (λίστα προγραμματισμένων εργασιών):
crontab -e
Αν δεν υπάρχουν προγραμματισμένες εργασίες που έχουν ήδη ρυθμιστεί, αυτό το αρχείο θα είναι άδειο (μπορεί να περιέχει τεκμηρίωση ή σχόλια, που προηγείται με "#"). Αν έχετε ήδη καταχωρήσεις εδώ, απλώς πληκτρολογήστε τη νέα σας εντολή σε μια νέα γραμμή:
* * * * * python ~/pi/Documents/gmail_python/check_messages.py
Τα πέντε "αστέρια" ("* * * * *") καθορίζουν πόσο συχνά θα εκτελέσετε την εργασία (μπορείτε να πάρετε πραγματικά φαντασία εδώ, π.χ. κάθε δεύτερη Τετάρτη στις 2:00). Αυτά τα πέντε αστέρια καθορίζουν ότι η εργασία πρέπει να εκτελείται κάθε λεπτό. Αυτό είναι το μικρότερο επιτρεπόμενο διάστημα (μάθετε περισσότερα για τον προγραμματισμό cronjob) Πώς να προγραμματίσετε τις εργασίες στο Linux με Cron και Crontab Πώς να προγραμματίσετε τις εργασίες στο Linux με Cron και Crontab Η δυνατότητα αυτοματοποίησης εργασιών είναι μία από τις φουτουριστικές τεχνολογίες που είναι ήδη εδώ. ο χρήστης μπορεί να επωφεληθεί από το χρονοδιάγραμμα του συστήματος και τα καθήκοντα του χρήστη, χάρη στην cron, μια εύχρηστη υπηρεσία φόντου. Διαβάστε περισσότερα). Στη συνέχεια, το "python" λέει στον προγραμματιστή να εκτελέσει τη δέσμη ενεργειών ως αρχείο python. Τέλος, το "~ / pi / Documents / gmail_python / check_messages.py" είναι η απόλυτη διαδρομή αρχείου στο σενάριο σας - μια σχετική διαδρομή δεν θα λειτουργήσει.
Θα πρέπει τώρα να έχετε το δικό σας φως ειδοποίησης Gmail! Θα ήταν πολύ απλό να τροποποιήσετε αυτό το θέμα για να αναζητήσετε μηνύματα που βασίζονται σε διαφορετική απαίτηση ή φίλτρο (μάθετε πώς μπορείτε να χρησιμοποιήσετε φίλτρα εδώ) 10 Προβλήματα ηλεκτρονικού ταχυδρομείου που μπορείτε να επιλύσετε με φίλτρα Gmail 10 Προβλήματα ηλεκτρονικού ταχυδρομείου που μπορείτε να επιλύσετε με φίλτρα Gmail Ένα υπερχειλισμένο φάκελο εισερχομένων Θέλετε να μεταφέρετε τα εισερχόμενά σας ταχύτερα από ποτέ; Δοκιμάστε μερικά από αυτά τα λαμπρά φίλτρα Gmail για να δείτε τη διαφορά. Διαβάστε περισσότερα) ή εκτελέστε ένα διαφορετικό κομμάτι κώδικα - ίσως θα μπορούσατε να δημιουργήσετε ένα bot bot Twitter που βασίζεται σε μηνύματα ηλεκτρονικού ταχυδρομείου περισσότερα για την οικοδόμηση ενός Pi Twitter bot Πώς να οικοδομήσουμε ένα Raspberry Pi Twitter Bot Πώς να οικοδομήσουμε ένα Raspberry Pi Twitter Twitter Το Twitter είναι ο μεγαλύτερος παγκόσμιος αποθετήριο σύντομων μηνυμάτων από ανθρώπους που δεν έχουν τίποτα να πουν - και τώρα και εσείς μπορεί να συμβάλει σε αυτό το επικό έργο με ένα αυτόματο Twitter bot, που τροφοδοτείται από το Raspberry σας ... Διαβάστε περισσότερα).
Εντούτοις καταλήγετε στην κωδικοποίηση του πλαισίου ειδοποιήσεων, θα ήθελα πολύ να μάθω πώς πηγαίνει στα σχόλια!