树莓派获取Nodemcu温度并发送邮件预警

来源:互联网 发布:爱福窝在线设计软件 编辑:程序博客网 时间:2024/05/21 17:47

之前在“利用NodeMcu和matplotlib的温度远程实时测量显示方案”中 已经实现了如何用Nodemcu获取温度并发送,现在实现了通过邮件发送温度数据实现预警的操作。
申请一个163邮箱,然后在设置中开启smtp服务,163会让你设置一个独立密码,这样你就可以用另一个密码登录邮箱发送邮件,避免使用主密码了。
树莓派用官方的系统,自带python3.4,本实验所需的所有模块都是自带的。Nodemcu按照之前的教程设置好,就可以开始了:
树莓派代码:

import smtplibimport timefrom email.mime.text import MIMETextimport urllib.request as urdef get_data():    try:        data=ur.urlopen("nodemcu给出的ip").read()        print (data)    except Exception as err:        print (float(str(err)))        return (float(str(err)))def send_email(text,subject,_from,_to):    SMTPserver='smtp.163.com,邮件服务器,这里以163为例'    sender='用户名'    password='设置的smtp密码'    message=text    msg=MIMEText(message)    msg['Subject']=subject    msg['From']=_from    msg['To']=_to    mailserver=smtplib.SMTP(SMTPserver,25)    mailserver.login(sender,password)    mailserver.sendmail(sender,[sender],msg.as_string())    mailserver.quit()    print ('send email success')while 1:    temp=get_data()    if temp>30:#如果温度大于30,就发送数据        text='temperature is too high : {}'.format(temp)#设置内容        subject='temperature is too high : {}'.format(temp)#设置标题        _from='raspiberry'#发送者        _to='PC'#接收者        send_email(text,subject,_from,_to)    time.sleep(4)#每4秒左右检测一次温度

效果如下:
这里写图片描述
这里写图片描述
后续:如果嫌发送邮件不容易及时接收,可以在文章“阿里云市场API功能试用”中找到用利用短信发送的方法,不过是要收费的。如果能找到免费发送的其他平台就更好了。

之后研究一个发送邮件控制树莓派的方案,好处是随时随地可以控制,突破局域网控制的限制。电脑端可以发出很多命令,具体行动由树莓派自己定义,具有很强灵活性。

0 0
原创粉丝点击