一个脚本中有两个if语句和操作?

时间:2017-03-16 05:06:21

标签: python raspberry-pi3

我试图编写一个脚本来监控来自PIR传感器和交换机的输入。计划是传感器将继续运行,并且只有在检测到运动时才从连接的网络摄像头发送捕获。如果激活,交换机将发送捕获。两者都将通过电子邮件发送捕获。这是代码。

import RPi.GPIO as GPIO
import time
import os

GPIO.setwarnings(False)
#GPIO.setmode(GPIO.BOARD)
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.IN)         #Read output from PIR motion sensor
GPIO.setup(4, GPIO.OUT)         #LED output pin
GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_UP)



while True:

       input_state = GPIO.input(26)

       i=GPIO.input(17)

       if input_state == False:
                    print('DING DONG')
            os.system("python buzztest.py")
                    #GPIO.output(4, 0)  #Turn OFF LED
                #GPIO.output(4, 0)  #Turn ON LED
                #time.sleep(1)
                #GPIO.output(4, 0)  #Turn OFF LED
                #os.system("python doorbellpost.py")
            os.system("fswebcam -r 640x480 --no-banner /root/Desktop/codes/ringcap/ringcap.jpg")
            os.system("python mailpic.py")
                time.sleep(1)


   if i==0:                 
   #When output from motion sensor is LOW
         print "No intruders detected",i
         #GPIO.output(4, 0)  #Turn OFF LED
         time.sleep(2)
   elif i==1:               #When output from motion sensor is HIGH
         print "Intruder detected!",i
         #GPIO.output(4, 1)  #Turn ON LED
             os.system("fswebcam -r 640x480 --no-banner /root/Desktop/codes/motioncap/motcap.jpg")
         os.system("python motmail.py") 
         time.sleep(2)       


GPIO.cleanup()

该脚本还调用其他脚本,即用于门铃和运动传感器的相应捕获的单独电子邮件脚本。任何帮助是极大的赞赏。感谢。

EDIT。对不起,我忘记了这个问题。那么还有另一种实现方法吗?两个if语句一次运行?当我运行程序时,传感器语句运行,但激活交换机有一些问题,即“叮咚”和“叮咚”。有时候不会激活。

1 个答案:

答案 0 :(得分:1)

你可以使用python的multiprocessing模块来帮助同时运行两个代码,这样可以提高你的性能。

from multiprocessing import Process
import RPi.GPIO as GPIO
import time
import os

GPIO.setwarnings(False)
#GPIO.setmode(GPIO.BOARD)
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.IN)         #Read output from PIR motion sensor
GPIO.setup(4, GPIO.OUT)         #LED output pin
GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_UP)

def func1():
  while True:
        #first if statement

def func2():
   while True:
         #Second if Statement


if __name__ == '__main__':
  p1 = Process(target=func1)
  p1.start()
  p2 = Process(target=func2)
  p2.start()