Здравствуйте, у меня есть эта установка firebase, которая подключена к малине pi, которая говорит текст в соответствии с базой данных 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
Хорошо, тогда неважно :). Я бы предложил вам добавить еще одну логическую переменную в БД. НОВЫЕ (T/F). таким образом вы можете просто извлечь NEW = True, а затем сбросить его до значения false до того, как вы выполните talk_message. Что лишний, что вы не пропустите новые сообщения, если вы получите более 1 за этот промежуток в 5 секунд. если у вас есть больше контроля над инфраструктурой, вы также проверите брокера сообщений. позвольте мне задуматься о чем-то в ваших сдержанностях, и я дам ответ вместо комментария. –