如何在条件完成时不断检查一个值并打破一个bucle?

问题描述

我正在使用 PIR 传感器、Firebase、MITappInvetor 和我的树莓做一个 DIY 警报系统。 但是我在处理 bucles 之类的东西时遇到了麻烦。

我想通过更改 firebase 中的值来使用 MITapp 来打开和关闭警报,但我被困在了可以关闭警报但无法再次打开它的地方,反之亦然。

from gpiozero import MotionSensor,Buzzer
import board
import neopixel
from time import sleep
import pyrebase
import json
config = {
    "apiKey": "LOL","authDomain": "LOL","databaseURL": "LOL","projectId": "LOL","storageBucket": "LOL","messagingSenderId": "LOL","appId": "LOL"
      }
firebase = pyrebase.initialize_app(config)
db=firebase.database()
pixels = neopixel.NeoPixel(board.D21,1)
pirs = MotionSensor(4)
buzzer = Buzzer(16)
buzzeron = Buzzer(20)
buzzeron.on()                                                                                                      

def DET(): #When it detects something it does this.
   
    pixels[0] = (255,0)
    print("MOVIMIENTO")
    data = "DET"
    db.child("ALARM").set(data)
    buzzer.beep()
   
def NODET(): #When it does not detect something it does this.
   
    pixels[0] = (0,255,0)
    print("NADA")
    data = "NODET"
    db.child("ALARM").set(data)
    buzzer.off()

check = db.child("SISUFV").child("CHECK").get()
pr = (check.val())
print (pr) #this is for the database value,it can be ON or OFF

on = ('"ON"')
off = ('"OFF"')
while True:
    while True:
        if pr == off : 
            sleep(1)
        if pr == on :
            print('"ON"')
            pirs.wait_for_motion()
            DET()
            pirs.wait_for_no_motion()
            NODET()
            check = db.child("SISUFV").child("CHECK").get()
            pr = (check.val())
            print (pr)
            if pr == off :
                break

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)