Python / Flask - проблема с обнаружением событий RPi.GPIO - PullRequest
0 голосов
/ 31 января 2019

В настоящее время я работаю над системой сигнализации, используя Python (Flask) и Raspberry.

У меня есть первая страница с одной кнопкой: «ARM», которая перенаправляет на «/ ARM», и страница «/ DISARM»:

@app.route('/ARM')
def ARM():
    GPIO.remove_event_detect(sensor)      

    # Blue LED on
    GPIO.output(blue,1)                                  

    # detection based on motion sensor
    GPIO.add_event_detect(sensor, GPIO.RISING, callback=alert)  

    # The template with "DISARM" button
    return render_template('home_disarm.html') 


@app.route('/DISARM')
def DISARM():
    GPIO.remove_event_detect(sensor)

    # blue LED off / red LED off / buzzer off
    GPIO.output(blue,0)
    GPIO.output(red,0)
    GPIO.output(buzz,0)

    # the template with "ARM" button
    return render_template('home.html')

Когда датчик движения обнаруживает движение,выполняется функция обратного вызова «alert»:

def alert(sensor):
        GPIO.remove_event_detect(sensor)

        # Blue LED off / Red LED on / Buzzer on
        GPIO.output(blue,0)
        GPIO.output(red,1)
        GPIO.output(buzz,1)

        # wait 20s for automatic disarming
        sleep(20)
        GPIO.output(blue,1)
        GPIO.output(red,0)
        GPIO.output(buzz,0)

        # arm again
        GPIO.add_event_detect(sensor, GPIO.RISING, callback=int)

Когда система поставлена ​​на охрану (но не запущена), она может быть снята с охраны, но проблема заключается в дезактивации системы после обнаружения (период 20 с).Когда я пытаюсь снять его с охраны в этот период, он работает какое-то время, но через 20 секунд сервер не работает.У вас есть предложения?

...