用 Arduino 搭建 Gmail 自动邮件提醒器

发布于: 27 January, 2014
分享:

Geek 基本原理

本 Geek 作品原理,是通过运行在 Linux 电脑上的 Bash 脚本,定时执行 curl 命令,获取 Gmail 的 ATOM 服务返回的数值,当返回数值大于 0 时,向 Arduino 所在窗口发送数值,进而控制 RGB 亮灭。

操作耗时

10 ~ 20 分钟

注意事项

  1. 因为 Gmail 已被墙掉,确保可以连接到 Gmail,可以在浏览器地址栏输入 https://mail.google.com/mail/feed/atom ,在弹出窗口中输入用户名和密码,检查是否能够看到 XML Feed,如果不能,需要使用 VPN 翻墙。
  2. Bash 脚本中的用户名和密码均为明文传输,如担心安全问题,可注册新的 Gmail 帐户来测试。

Bash 脚本

进入 Linux 命令行,通过 nano 命令在用户文件夹下创建一个 Bash 脚本文件: $sudo nano ~/GmailNotifier.sh   进入 nano 编辑器界面后,复制以下代码,并根据实际情况和代码备注提示进行修改   #!/bin/bash #SCRIPT_NAME="Arduino Gmail Checker" #SCRIPT_VERSION="0.1" #figlet $SCRIPT_NAME $SCRIPT_VERSION

输入 Gmail 用户名和密码 警告:密码为明文,有泄漏的危险:

USERID=用户名 PASSWORD=密码

设置扫瞄新邮件时间间隔,默认30秒:

WAIT=30

#########################################################################################

#循环 while [ "1" -eq "1" ]; do

   # 通过命令行命令 curl 获取 Gmail Feed:    MAILCOUNTER=curl -u $USERID:$PASSWORD --silent "https://mail.google.com/mail/feed/atom" | sed -n 's|\(.*\)|\1|p'

   if [[ "$MAILCOUNTER" = "" ]]; then        echo "ERROR: The program coulndn't fetch the account for user "$USERID"."        echo "- Are you connected to the Internet?"        echo -e "- Is the userid and password correct for "$USERID"?\n"        echo 111 > /dev/tty.usbmodem1d1131 #点亮 RGB 红色 注意这里要把 tty.usbmodem1d1131 替换成你的 Arduino 端口号    elif [[ "$MAILCOUNTER" -eq "0" ]]; then        echo "* There is 0 new email for user $USERID."        echo 000 > /dev/tty.usbmodem1d1131 #熄灭 LED 注意这里要把 tty.usbmodem1d1131 替换成你的 Arduino 端口号    elif [[ "$MAILCOUNTER" -gt "0" ]]; then        echo "* There is $MAILCOUNTER new email for user $USERID."        echo 232 > /dev/tty.usbmodem1d1131 #点亮 LED 注意这里要把 tty.usbmodem1d1131 替换成你的 Arduino 端口号    fi

   echo "* Waiting $WAIT seconds before checking for emails again."    echo "* (^C 退出)"    sleep 300

done   将 GmailNotifier.sh 权限改为可执行文件 $sudo chmod a+x ~/GmailNotifier.sh 运行 Bash 脚本 $sudo sh ~/GmailNotifier.sh  

常见问题

遇到以下提示的解决办法: ERROR: The program coulndn't fetch the account for user "xxx@gmail.com".

  • Are you connected to the Internet? -e - Is the userid and password correct for "xxx@gmail.com"? 检查是否连接网络,检查是否需要开启 VPN,检查 Gmail 帐户名称和密码是否正确  

    Arduino 代码

    /* @Author: TONYLABS @连接 PuzzleKit 中的 RGB LED 模块 @根据串口读数结果控制LED 0: 全部熄灭 1: 红色开启 2: 绿色开启 3: 蓝色开启 */

int redLed = 11; int greenLed = 10; int blueLed = 9;

void setup() {  Serial.begin(9600);  pinMode(redLed, OUTPUT);  pinMode(greenLed, OUTPUT);  pinMode(blueLed, OUTPUT); }

void loop () {  int value = Serial.read();

 if (value == '0') {    digitalWrite(redLed,LOW);    digitalWrite(greenLed,LOW);    digitalWrite(blueLed,LOW);  }

 if (value == '1') {    digitalWrite(redLed,HIGH);    digitalWrite(greenLed,LOW);    digitalWrite(blueLed,LOW);  }

 if (value == '2') {    digitalWrite(redLed,LOW);    digitalWrite(greenLed,HIGH);    digitalWrite(blueLed,LOW);  }

 if (value == '3') {    digitalWrite(redLed,LOW);    digitalWrite(greenLed,LOW);    digitalWrite(blueLed,HIGH);  }

 delay(1000); } /* @end */  

分享:

0 留言

留言

您的留言将被人工审核,请勿发表色情、反动言论。