私は、PIRセンサーとスイッチの両方からの入力を監視するスクリプトを作成しようとしています。この計画では、センサが動作し続けており、動きが検出された場合にのみ、添付されたウェブカメラからキャプチャを送信するという計画です。スイッチは、アクティブになっている場合にキャプチャを送信します。どちらも電子メールでキャプチャを送信します。ここにコードがあります。1つのスクリプトに2つのif文とアクションがありますか?
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。申し訳ありません、私はその質問について忘れました。それで、これを実装する別の方法がありますか?一度に2つのif文を実行していますか?私はプログラムを実行すると、センサーステートメントが実行されますが、スイッチを有効にするにはいくつかの問題があります。つまり、 'Ding dong'は時にはアクティブ化されません。
質問がありますか? [質問] – Julien
が編集されました。私は自分の悪いことを忘れていた。 –