1
你好,我已經設置了這個firebase,它連接到一個根據firebase數據庫講文本的樹莓派。我有每5秒運行一次的功能,我想檢查是否有新消息。我將每條消息的時間存儲在數據庫中,我現在的方式是檢查新消息和舊消息的時間是否相同。Python如何檢查數據庫值是否相同
我的兩個問題是:
是否有檢查郵件的時間,看看消息是新的更好的辦法?
我怎樣才能解決這個代碼,所以我沒有得到一個UnboundLocalError: local variable 'the_time' referenced before assignment"
錯誤
這裏是我的代碼
import time
import subprocess
from firebase import firebase
firebase = firebase.FirebaseApplication('----', None)
message = firebase.get('/message', None)
name = firebase.get('/name', None)
the_time = firebase.get('the_time',None)
speak_message = message+" from "+ name
def showmessage():
message=firebase.get('/message',None)
name=firebase.get('/name',None)
current_time = firebase.get('/the_time',None)
speak_message=message+' from '+name
#this is to set the audio jack on raspi
subprocess.call(['amixer','cset','numid=3','1'])
if current_time == the_time:
#message is NOT new
print 'message is NOT new'
elif current_time != the_time:
#message IS new
#Shell script to run text-to-speech
subprocess.call(['/home/pi/./speech.sh',speak_message])
the_time = current_time
time.sleep(5)
while True:
showmessage()
你能寫數據庫嗎?或只讀該腳本? –
@WissamYoussef我通過網頁向它寫信,但只能從腳本中讀取。 – user2758113
好吧,別擔心,然後:)。我會建議你在DB中添加另一個布爾變量。 NEW(T/F)。這樣你可以通過NEW = True獲取,然後在speak_message之前重置爲false。如果你在5秒內得到超過1的話,你將不會錯過新消息。如果你對基礎架構有更多的控制權,那麼也要檢查一些消息代理。讓我想想你的約束內的東西,我會給出答案而不是評論。 –