непрерывная запись в firebase с использованием time.sleep () - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть база данных firebase, я единственный пользователь. Я читаю значение, которое с устройства, запускаемого по UDP, я запускаю это устройство каждые 5 секунд, используя функцию time.sleep, а затем хочу записывать измеренное значение в свою базу данных каждый раз, когда обновляется time.sleep. «Время» - это мой документ, а «ценность» - моя коллекция. Однако мой код обновляет базу данных только при первом запуске кода Python. Я хочу, чтобы он обновлял базу данных FireBase каждый раз, когда time.sleep () обновляется. Куда я иду не так?

import firebase_admin

from firebase_admin import credentials
from firebase_admin import firestore

import datetime
import time
import socket
import csv
import datetime
from decimal import Decimal

now = datetime.datetime.now()
Time = str(now)
topsenspan = 50
mA = 16
appname = int(0)

cred = credentials.Certificate('/myfirebase certificate.json')
default_app = firebase_admin.initialize_app(cred)

while True:



ctu = True

if ctu == True:
    appname = appname + 1

num = str(appname)
actappname = str("actapp" + num)
cred = credentials.Certificate('/myfirebase certificate.json')
other_app = firebase_admin.initialize_app(cred, name=actappname)

db = firestore.client()

ctu = False

def some_job(val):
    now = datetime.datetime.now()

    UDP_IP = "169.254.84.122"
    UDP_PORT = 1025
    MESSAGE = "#010\r"

    sock = socket.socket(socket.AF_INET, # Internet
                      socket.SOCK_DGRAM) # UDP

    sock.sendto(MESSAGE.encode(encoding='utf-8'), (UDP_IP, UDP_PORT))


    data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
    # print ("received message:", str(data))


    actdata = str(data)
    renddata = float(actdata[5:13])-4
    scaledval = (topsenspan/mA)*renddata
    output = round(scaledval,2)

    finval = (output, now.strftime("%Y-%m-%d %H:%M"))
    val = finval
    return (finval)

data = some_job(1)

value = str(data)
u = value
#date = (finval[1])
#t = unicode(value, "utf-8")

doc_ref = db.collection(u'iot sens').document(Time)
doc_ref.set({
    u'value': u,

})
print(value+" successfully written to database")





time.sleep(5)
...