当CPU达到或超过45摄氏度时,我设置了pi设置为通过谷歌帐户发送电话(XXXXXXXX@vtext.com)。我希望能够回复该帐户并让pi根据邮件内容执行各种脚本。例如,我可以输入“将风扇置于高位”。它将执行一个提高风扇速度的脚本。或者如果风扇已经处于高位,我希望能够输入“关机”。并关闭了pi。我有pi通过POP检查帐户,唯一的问题是无论我输入什么,它每次都会关闭,我无法想出这个。这超出了我的python知识。
我必须在某些时候搞错其他东西,因为它现在没有运行,这是错误:
Traceback (most recent call last):
File "readTest.py", line 14, in <module>
rebootMessage = [parser.Parser().parsestr(Reboot) for Reboot in messages]
File "/usr/lib/python2.7/email/parser.py", line 82, in parsestr
return self.parse(StringIO(text), headersonly=headersonly)
TypeError: expected read buffer, tuple found
这是代码:
import poplib
import os
from email import parser
pop_conn = poplib.POP3_SSL('pop.gmail.com')
pop_conn.user('XXXXXXXXXX')
pop_conn.pass_('XXXXXXXXXX')
#Get messages from server:
messages = [pop_conn.retr(i) for i in range(1, len(pop_conn.list()[1]) + 1)]
# Concat message pieces:
rebootMessage = ["\n".join(Reboot[1]) for Reboot in messages]
fanMessage = ["\n".join(PutFanOnHigh[1]) for PutFanOnHigh in messages]
#Parse message intom an email object:
rebootMessage = [parser.Parser().parsestr(Reboot) for Reboot in messages]
fanMessage = [parser.Parser().parsestr(PutFanOnHigh) for PutFanOnHigh in messages]
#If parsestr returns True for the current element (i.e. it's the string you're looking for)
for rebootMessage in messages:
#os.system('sudo /storage/SKYNET/remoteReboot.sh')
print rebootMessage
print fanMessage
#If parsestr returns True for the current element (i.e. it's the string you're looking for)
for fanMessage in messages:
#os.system('sudo /storage/SKYNET/fanSpeedHigh.py')
print rebootMessage
print fanMessage
pop_conn.quit()