我试图编写一个脚本来监控来自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语句一次运行?当我运行程序时,传感器语句运行,但激活交换机有一些问题,即“叮咚”和“叮咚”。有时候不会激活。
答案 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()