微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何在条件完成时不断检查一个值并打破一个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 举报,一经查实,本站将立刻删除。