В настоящее время я работаю над системой сигнализации, используя 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 секунд сервер не работает.У вас есть предложения?