Raspberry Pi 2 b Запустите и остановите питона с помощью переключателя GPIO 24 и Groung - PullRequest
0 голосов
/ 31 декабря 2018

Я пытаюсь построить домофон, используя Twinkle на Raspberry Pi и Asterisk, теперь у меня есть малиновый GPIO PIN 10 и заземление с помощью пускового переключателя, и мне нужна помощь со скриптом, который остановит / запустит этот код Python, когдапереключатель нажимной.Большое спасибо заранее.

botton.py

import RPi.GPIO as GPIO
import time
import subprocess, os
import signal

GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO_switch = 24 # select pin to connect button
GPIO.setup(GPIO_switch, GPIO.IN, pull_up_down=GPIO.PUD_UP)

try:

run = 0
while True:
    if GPIO.input(GPIO_switch)==0 and run == 0:
        rpistr = "python3 /home/pi/call.py"
        p=subprocess.Popen(rpistr, shell=True, preexec_fn=os.setsid)
        run=1
        while GPIO.input(GPIO_switch)==0:
            time.sleep(0.01)
    if GPIO.input(GPIO_switch)==0 and run == 1:
        run = 0
        os.killpg(p.pid, signal.SIGTERM)
        while GPIO.input(GPIO_switch)==0:
            time.sleep(0.01)


except KeyboardInterrupt:

GPIO.cleanup()

call.py

import sys
from subprocess import Popen, PIPE

proc = Popen(["twinkle", "-c"], stdin=PIPE, stdout=PIPE, bufsize=1)

for line in iter(proc.stdout.readline, b''):
print line
if (line.find("registration succeeded") > 0):
    proc.stdin.write("call 1000\n")
if (line.find("far end answered call") > 0):
    proc.stdin.write("bye\n")
    proc.stdin.write("quit\n")
proc.communicate()

Мне нужна помощь с скриптом для запуска при загрузке, который будет ждатьчтобы нажимной переключатель был нажат, а затем запустил и остановил скрипт в файле call.py

...