我想开始涉及arduino和电子邮件通知的项目。我不确定以前做过这样的事情,但我猜它有某种形式。让我解释。基本上我想用一些压电传感器或kinect设置arduino,以便当执行动作(或感测到压力)时,将自动发送电子邮件(或推文)。我确信这可以做到,但我不知道从哪里开始,我想知道是否有人有想法?提前致谢。
我没有测试下面的代码,但这是你尝试做的最基本的结构。
在Arduino上,设置代码以在要发送电子邮件时在串行线上输出内容(“arduino output”)。然后在计算机上等待该事件。
Linux非常简单,因为串行端口可以像读取文件一样对待。
#!/usr/bin/perl
use open ':std';
use MIME::Lite;
#Open the COM port for reading
#just like a file
open FILE, "<", "/dev/usbTTY0" or die $!;
#setup e-mail message
$msg = MIME::Lite->new(
From => '"FirstName LastName" <[email protected]>',
To => "[email protected]",
Subject => "subject",
Type => "text/plain"
);
#loop forever (until closed w/ ctrl+c)
while (1){
while (<FILE>){
# if there is output from the arduino (ie: Serial.write(...))
# then the e-mail will be sent
if ($_ == "arduino_output"){
MIME::Lite->send('smtp','mailrelay.corp.advancestores.com',Timeout=>60);
$msg->send();
}
}
}
祝你的项目好运。
我建议使用Pyserial
然后从arduino你只需要发送数据到python
void setup(){
Serial.begin(9600);
}
void loop(){
if (EVENT BECOME TRUE /* sensor value or whatever */){
Serial.write("Send mail");
}
}
然后形成python {安装pyserial后}
import serial
import smtplib
def sendMail(receiver,message):
try:
s=smtplib.SMTP_SSL()
s.connect("smtp.gmail.com",465)
s.login("[email protected]", "Password")
s.sendmail("[email protected]", receiver, message)#write the destination at receiver parameter
except Exception,R:
print R
ser = serial.Serial('/dev/tty.usbserial', 9600)# or in windows you could write port name
while 1:
receive = ser.readline()
if receive == "send mail":sendMail("[email protected]","YOU got mail from arduino!")
你可以根据你的MAIL主机更改smtp,在我的情况下我使用了gmail,祝你的项目好运:D
用arduino检查邮件非常简单!
我在这里写了一篇文章http://www.albertopasca.it/whiletrue/arduino-mail-notifier-with-c/ 在Windows上使用C#来检查Gmail邮件。
您可以调整代码以在您想要的每个操作系统上使用它。
希望这可以帮助。