根据Arduino向serial p发送的通知向gmail发送电子邮件

2024-10-03 15:34:38 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我试图做一个工厂监控环境项目,我有arduino/嵌入式侧工作。这个想法是当它在传感器中低于某个阈值时,嵌入式端通过蓝牙模块向这个python脚本正在监听的串行端口发送一个字符串。如果脚本检测到端口上的某个字符串,它会向输入的电子邮件发送电子邮件消息。 然而,就目前的情况来看,它似乎没有发送电子邮件给用户输入的电子邮件,我不确定问题是在我的发送电子邮件方法或在主循环本身,但在填写了所有的用户输入值,它只是循环永远不做什么,甚至不打印没有电子邮件发送的情况下,我目前不知道为什么。此外,还有一些问题与getpass3功能和扰乱终端的密码,所以暂时我已经切换到原始输入一旦我得到电子邮件发送功能,我计划切换回getpass3和修复它之前所做的一切是显示提示输入密码,然后挂起在那一点。你知道吗

这是我用python编写的第二个程序,所以我完全有可能误解了其中一些方法是如何调用或传递的,但从我在文档中看到的情况来看,这方面我没有发现任何错误。我已经让adruino发送信息通过串行端口之前,但可能有一个问题与蓝牙设备配对,我已经注意到以前发生的参考模块是HC-05,我已经让它发送信息通过TeraTerm之前。你知道吗

import time
import serial
import smtplib
import colorama
import getpass3

useremail = raw_input("Enter your email ")
# getpass3.set_echo = '#'
# userpass = getpass3.getpass("Enter your password: ")
userpass = raw_input("Enter your password ")
usercom = raw_input("Please Enter COMPORT: ").upper()
print usercom

TO = useremail
GMAIL_USER = useremail
GMAIL_PASS = userpass #plaintext need to get getpass3 working i hate this way

SUBJECT = 'Plant Environment Needs Attention'
TEXT1 = 'Low Light Levels Detected in the Enclosure'
TEXT2 = 'Low Mositure in the Soil Detected in the Enclosure'
TEXT3 = 'Temperature Outside of Safe Range in Enclosure'
TEXT4 = 'Humidity Outside of Safe Range in Enclosure'

ser = serial.Serial(usercom, 9600) #seems to always be COM9 on my PC can adjust as needed

def send_email(TEXT):
    print("Sending Email")
    #SMTP server setup
    smtpserver = smtplib.SMTP("smtp.gmail.com",587)
    smtpserver.ehlo()
    smtpserver.starttls()
    smtpserver.ehlo()
    #login to gmail can potentially add diff email client if wanted
    smtpserver.login(GMAIL_USER, GMAIL_PASS)
    header = 'To:' + TO + '\n' + 'From: ' + GMAIL_USER
    header = header + '\n' + 'Subject:' + SUBJECT + '\n'
    # #form the diff cases here based off if its temp hum ect
    print header
    msg = header + '\n' + TEXT + ' \n\n'
    #send email and close server for security reasons
    smtpserver.sendmail(GMAIL_USER, TO, msg)
    smtpserver.close()

# just do it forever
while True:
    message = ser.readline()
    print(message)
    #big brained implamentation
    #L = light
    if message[0] == 'L' :
        send_email(TEXT1)
        print("Email Sent")
    #S = Soil Moisutre
    if message[0] == 'S' :
        send_email(TEXT2)
        print("Email Sent")
    #T = temp
    if message[0] == 'T' :
        send_email(TEXT3)
        print("Email Sent")
    #H = Humidity
    if message[0] == 'H' :
        print("Email Sent")
        send_email(TEXT4)
    else:
        print("No Email Sent")
    time.sleep(0.5)

Tags: inimportsendmessageif电子邮件emailgmail