在这个快速而简单的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(‘YOUREMAIL@gmail.com’, ‘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(‘YOUREMAIL@gmail.com’, ‘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文章
23175浏览量
658821 -
树莓派
+关注
关注
116文章
1701浏览量
105563
发布评论请先 登录
相关推荐
评论