在這個快速而簡單的Raspberry Pi項目中,您將學習如何使Gmail電子郵件通知指示燈亮起。如果您有未讀的電子郵件,則Python腳本會打開LED。該項目需要很少的零件,并且可以在一個小時內完成!當然,您可以按照自己喜歡的任何方式來裝飾LED,例如MineCraft紅石塊或其他以透明塑料3D打印的物體。最終結果如下:
您需要什么
1 x Raspberry Pi
1 x面包板
1 x 220 ohm電阻器
1 x 5mm LED
1 x Gmail帳戶
公對母連接線
任何Raspberry Pi將適用于該項目-甚至Pi Zero!只需要一個GPIO引腳即可,它對CPU的占用不是特別大。如果您擁有Pi入門套件,那么您將擁有足夠多的零件來完成此任務。
構建計劃
這是一個非常簡單的項目。發光二極管(LED)連接到Pi上的GPIO(通用輸入輸出)引腳。一個非常簡單的Python腳本將定期運行,以檢查未讀的電子郵件并相應地打開或關閉LED。
硬件
LED的陽極(長腳)連接到電阻,然后連接到GPIO引腳14。您可以使用任何GPIO引腳,但是請先看一下引腳排列,因為它們在型號之間略有不同。將負極(具有平坦邊緣的短腿)接地。
Pi設置
提供您的Pi已安裝操作系統(OS)不需要很多設置(不確定您需要什么嗎?了解如何在此處安裝)。在Pi上打開一個新終端(左上》 菜單》 附件》 終端)(簽出這些快捷方式可以讓您成為編碼忍者)。您需要創建一個新文件夾來存儲Python腳本。輸入以下命令:
pwd
這代表“打印工作目錄”,并將顯示您所在的文件夾(默認情況下為“/home/pi” )。導航到documents文件夾并創建一個名為“ 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,盡管此推文總結了我對此的看法:
我已經使用Vim大約2多年以來,主要是因為我不知道如何退出。
—我是Devloper(@iamdevloper),2014年2月17日
開玩笑,檢查一下
按 CTRL + X 退出Nano并返回到終端。
Python設置strong》
現在已經設置好Pi,是時候編寫代碼了。此項目需要由Charlie Guo制作的出色的Gmail Python庫。從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插件的完整源代碼。如果您不滿意這樣做(或者您使用的是雙重身份驗證),則需要使用OAuth2連接到Gmail。本教程涉及到一些內容,但是Google提供了出色的入門指南。
讓我們分解一下代碼。首先,導入一些模塊。 Python中的模塊是為特定目的而編寫的一小段代碼(類似于Arduino IDE中的庫)。 RPi.GPIO是Pi專用的模塊,用于訪問GPIO,gmail是您先前下載的模塊,time是Python內置的模塊,用于提供計時功能。現在,“ GPIO.setmode”和“ GPIO.setup”用于告訴Pi引腳14是輸出,并且您要使用“ Broadcom引腳編號”(有關BCM的更多信息)。
這條線連接到您的Gmail帳戶。它創建一個名為“ g”的對象,并調用先前導入的gmail模塊的login方法。不要忘記輸入您的Gmail電子郵件和密碼。
g = gmail.login(‘[email protected]’, ‘YOUR PASSWORD’)
現在,檢索所有未讀郵件并將其存儲在名為“未讀郵件”的變量中:
unread_messages = g.inbox().mail(unread=True)
注意如何將“ unread = True”作為參數傳遞-您可以更改此參數以根據不同的參數(例如發件人或主題)檢索郵件。查看應用程序編程接口(API)文檔以獲取更多信息。
接下來,使用for循環遍歷每條消息:
for message in unread_messages:
total_messages += 1
for循環非常有用。他們重復執行幾次代碼塊,每次值通常略有不同。此for循環遍歷unread_messages中的每條消息,并增加“ total_messages”變量。
最后,使用一些簡單的“ if”語句。如果有未讀消息,請打開LED指示燈,否則請關閉LED指示燈。
請記住,Python區分大小寫,并使用白色間距。如果您在運行代碼時遇到問題,請嘗試訪問該網站。將您的Python粘貼并點擊“在python代碼上方驗證”按鈕。然后應該可以告訴您Python中存在什么錯誤(如果有)。
切換到終端并運行腳本:
python check_messages.py
此命令將運行您的腳本。嘗試手動將收件箱中的某些電子郵件更改為未讀狀態并再次運行腳本-您應該看到LED亮起或熄滅以反映您的收件箱。
Cron設置
現在,該腳本有效,是時候將其自動化。最簡單的方法是通過cron工作。 Cron作業用于安排任務和腳本,例如自動備份。打開Crontab(計劃任務的列表):
crontab -e
如果尚未設置任何計劃任務,則此文件為空(可能包含文檔或注釋,前面帶有一種 ”#”)。如果您已經在此處輸入了條目,只需在新行上輸入新命令即可:
* * * * * python ~/pi/Documents/gmail_python/check_messages.py
五個“星號”(“ * * * * *”)指定了通常會執行任務(您可以在這里獲得真正的贊譽,例如,每第二個星期三2.00)。這五顆星表示該任務應每分鐘運行一次。這是允許的最小間隔(了解有關cronjob調度的更多信息)。接下來,“ python”告訴調度程序將腳本作為python文件執行。最后,“?/pi/Documents/gmail_python/check_messages.py”是腳本的絕對文件路徑-相對路徑將不起作用。
您現在應該擁有自己的Gmail通知燈!修改此代碼以根據不同的要求或過濾器查找消息(在這里學習如何使用過濾器),或者執行不同的代碼段,將非常簡單—也許您可以創建一個基于電子郵件推特的Twitter機器人(學習
責任編輯:wv
-
led
+關注
關注
242文章
23840瀏覽量
673961 -
樹莓派
+關注
關注
121文章
2005瀏覽量
107445
發布評論請先 登錄
樹莓派6 傳聞:發布日期與規格!

樹莓派小技巧:無需鍵盤或顯示器,如何通過WiFi設置樹莓派?

用樹莓派“揪出”家里的耗電怪獸!

樹莓派“吉尼斯世界記錄”:將樹莓派的性能發揮到極致的項目!

超酷的樹莓派智能鏡項目,快來了解!

評論