从RaspberryPi按钮将数据添加到Firebase

时间:2019-11-01 16:47:03

标签: python-3.x google-cloud-firestore raspberry-pi

正如标题所述,我正在尝试通过使用Python从树莓派pi按钮单击器中单击按钮,将数据添加到云Firestore中。我设法使其正常工作,但是如果我多次单击按钮,除非再次运行脚本,否则不会将数据再次添加到数据库中。这意味着如果我单击一次按钮,它将添加到数据库中,但是如果再次单击它,则不会添加任何内容,但会出现“添加”。

new_doc = db.collection(u'report').document()

#YELLOW 
greenBtn = Button(17) #Using gpiozero library
greenLED = LED(13)


def add():
    greenLED.on()
    try:
        new_doc.set({u'name': u'report two'})
        print("add")
    except:
        print("fail")

greenBtn.when_pressed = add
greenBtn.when_released = greenLED.off

1 个答案:

答案 0 :(得分:1)

您是在脚本第一次运行时创建一个新文档。然后,当用户按下按钮时,您将继续更新同一文档。因此,尽管每次单击按钮都会导致写入,但您不会看到后续写入,因为您一直在向同一文档写入相同的值。

两种解决方案:

  1. 每次都写一个不同的值
  2. 每次都写入不同的文档。

由于您似乎希望获得一个新文档,因此我将说明如何做到这一点:

#YELLOW 
greenBtn = Button(17) #Using gpiozero library
greenLED = LED(13)


def add():
    greenLED.on()
    new_doc = db.collection(u'report').document()

    try:
        new_doc.set({u'name': u'report two'})

因此,每次用户按下按钮时,都会创建新文档。