2017-03-16 9 views
0

私は、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'は時にはアクティブ化されません。

+0

質問がありますか? [質問] – Julien

+0

が編集されました。私は自分の悪いことを忘れていた。 –

答えて

1

multiprocessing pythonのモジュールを使用すると、2つのコードを同時に実行するとパフォーマンスが向上する場合があります。

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() 
+0

ねえ、これはよさそうだね。ありがとう。私はできる時にそれを試してみます。 –

関連する問題