制作Raspberry Pi Gmail通知灯

在这个快速,简单的Raspberry Pi项目中,您将学习如何使Gmail电子邮件通知灯亮起。如果您有未读的电子邮件,则Python脚本会打开LED。该项目需要很少的零件,并且可以在一个小时内完成!当然,您可以按照自己喜欢的任何方式来装饰LED,例如MineCraft红石块或其他以透明塑料3D打印的物体。最终结果如下:

您需要什么

  • 1 x Raspberry Pi
  • 1 x面包板
  • 1 x 220欧姆电阻
  • 1 x 5mm LED
  • 1 x Gmail帐户
  • 公对母连接线
  • 任何Raspberry Pi均可用于该项目-甚至Pi零!只需要一个GPIO引脚即可,它对CPU的占用不是特别大。如果您拥有Pi入门套件,那么您将拥有足够的零件来完成此任务。

    构建计划

    硬件

    Pi设置

    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,尽管此推文总结了我对此的看法:

    —我是Devloper(@iamdevloper),2014年2月17日

    开玩笑,请检查两者之间的比较以得到完整的细分。

    CTRL + X 退出Nano并返回到终端。

    Python设置

    切换回命令行并再次打开脚本(如果按向上键,则可以滚动浏览先前输入的命令):

    sudo nano check_messages.py

    请注意这是怎么回事用于创建文件的命令-如果文件已存在,则将其打开,否则将创建该文件。这是Python:

    import gmail, RPi.GPIO as GPIO, time # import modulesGPIO.setwarnings(False)GPIO.setmode(GPIO.BCM) # tell the Pi what headers to useGPIO.setup(14, GPIO.OUT) # tell the Pi this pin is an outputg = gmail.login('[email protected]', 'YOUR PASSWORD')unread_messages = g.inbox().mail(unread=True)total_messages = 0for message in unread_messages:	total_messages += 1if 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)

    注意如何“未读" “ 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通知灯!修改此代码以根据不同的要求或过滤器查找消息非常简单(在此处了解如何使用过滤器)。

    但是无论如何最终要对通知框编码很想知道评论中的内容!

    标签: Gmail Raspberry Pi