Мы работаем над проектом для школы, и у нас есть 2 PIR датчики движения, работающие на микроконтроллере Arduino. Мы можем просматривать выходные данные последовательного порта как в Ardunio IDE, так и в Python IDLE .
Что мы хотим сделать дальше, это после того, как примерно через 30 секунд обнаружения движения отправим оповещение по электронной почте, видя, что на данный момент у нас нет возможности Ethernet, мы решили, что самым простым способом было бы захватить электронную почту через Python.
Как этого добиться?
Обновление:
На данный момент мы можем отправить электронное письмо из Python, мы можем прочитать последовательный порт Arduino в Python, но у нас просто есть проблема, соединяющая все это вместе.
Вот так выглядит наш код на Python, в то время как 1: где происходит путаница:
import smtplib,serial
ser = serial.Serial(port=2, baudrate=9200)
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email import Encoders
import os
gmail_user = "usr@gmail.com"
gmail_pwd = "pw"
def mail(to, subject, text, attach):
msg = MIMEMultipart()
msg['From'] = gmail_user
msg['To'] = to
msg['Subject'] = subject
msg.attach(MIMEText(text))
part = MIMEBase('application', 'octet-stream')
part.set_payload(open(attach, 'rb').read())
Encoders.encode_base64(part)
part.add_header('Content-Disposition',
'attachment; filename="%s"' % os.path.basename(attach))
msg.attach(part)
mailServer = smtplib.SMTP("smtp.gmail.com", 587)
mailServer.ehlo()
mailServer.starttls()
mailServer.ehlo()
mailServer.login(gmail_user, gmail_pwd)
mailServer.sendmail(gmail_user, to, msg.as_string())
# Should be mailServer.quit(), but that crashes...
mailServer.close()
while 1: **// CONFUSION HAPPENS HERE //** <----------------------
ser.readline()
if ser.readline() = "motion"
do this mail sequence?
mail("usr2@gmail.com",
"Alarm Alert!",
"Both Motion Sensor A & B have been active for over # seconds",
"stor_fight.jpg")
Любые советы приветствуются.