Как поддерживать работу датчика движения PIR для электронной почты при загрузке, пока система не будет надежно отключена? - PullRequest
0 голосов
/ 26 сентября 2019

У меня Raspberry Pi Zero W под управлением Raspberian Buster Lite.В настоящее время я работаю без устройства и настраиваю его, как описано в https://desertbot.io/blog/headless-pi-zero-w-wifi-setup-windows.. Я использую этот код для создания электронного письма каждый раз, когда ИК-датчик движения запускается из bartv в https://www.raspberrypi.org/forums/viewtopic.php?t=85088. (Пусккода присутствует ниже).

В настоящее время у меня есть код Python для запуска при загрузке через .baschrc, как описано в методе два на https://www.dexterindustries.com/howto/run-a-program-on-your-raspberry-pi-at-startup/.

Когда я вхожу в Pi с помощью Putty, программа автоматически запускается.Однако, когда я заканчиваю сеанс ssh, он просто автоматически прекращает выполнение кода.Если я оставлю сеанс ssh включенным и просто закрою свой ноутбук, через час датчик перестанет работать и отобразит эту ошибку:

Traceback (most recent call last): 
  File "sensor-email.py", line 68, in <module>
    server.sendmail(gmail_sender, [TO], BODY)
  File "/usr/lib/python2.7/smtplib.py", line 736, in sendmail
     self.rset()
  File "/usr/lib/python2.7/smtplib.py", line 470, in rset
    return self.docmd("rset")
  File "/usr/lib/python2.7/smtplib.py", line 395, in docmd
    return self.getreply()
  File "usr/lib/python2.7/smtplib.py", line 369, in getreply
    raise SMTPServerDisconnected ("Connection unexpectedly closed")
smtplib.SMTPServer Disconnected: Connection unexpectedly closed

Насколько я могу прочитать, существует проблема со строкой 68 и вsmtplib.py ...

Таким образом, я хотел бы знать, есть ли проблема с используемым кодом Python или как программа была настроена для запуска при загрузке, которая может вызывать проблему.

Для запуска при загрузке я попытался crontab -e, отредактировав rc.local, каталог init.d и systemd, как описано в https://www.dexterindustries.com/howto/run-a-program-on-your-raspberry-pi-at-startup/, но безрезультатно.

#Import required Python libraries
import RPi.GPIO as GPIO
import time
import smtplib

#GMAIL mail setup
TO = 'yourmail@gmail.com'
SUBJECT = 'PIR'
TEXT = 'Motion is detected'

#GMAIL user setup
gmail_sender = 'mymail@gmail.com'
gmail_passwd = 'mypwd'

#GMAIL stuff to login
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.ehlo
server.login(gmail_sender, gmail_passwd)
...