Pasos para guardar datos en firebase con python
Crear cuenta en firebase
Ir a firebase con su cuenta de google https://console.firebase.google.com y añadir un nuevo proyecto.
Como es una prueba, no se requerira ningun tipo de autenticacion (cosa no recomendada) para poder almacenar los datos. Dejar los permisos como estan en la imagen.
Luego se deberá copiar el HOST ID del proyecto para poderlo usar en nuestro programa de python, ver lo que esta encerrado en el circulo de la imagen.
Luego procederemos ha cargar la libreria de firebase para python con:
pip3 install python-firebase
Nota: Se esta instalando la libreria para python3, por lo que cuando se ejecute el interprete de python es de asegurarse que se esta llamando a la version 3 que tiene la libreria, sino mostrara un error como:
Traceback (most recent call last): File "temp_byte_firebase.py", line 18, in <module> firebase= firebase.FirebaseApplication('https://monitorinv-57616.firebaseio.com/') AttributeError: module 'firebase' has no attribute 'FirebaseApplication'
El codigo de Python quedara algo como:
#!/usr/bin/python3 import smbus import time import sys from firebase import firebase bus = smbus.SMBus(1) address = 0x04 cantidad=4 # Cantidad de bytes que voy a leer. datos=[0]*cantidad #Inicializando el arreglo donde guardare los datos #store the Host ID(provided in firebase database) in variable where you want to send the real time sensor data. firebase= firebase.FirebaseApplication('https://bla-bla-bla.firebaseio.com/') time.sleep(2) while True: for i in range(0, cantidad): datos[i]= bus.read_byte(address) # Lee byte por byte hasta que termina (en el arduino debe de mandar la misma cantidad) print (datos) #Verificamos que el array este correcto now = time.strftime("%c") # Guardamos la fecha print (" - %s" % now ) #Imprimimos la fecha cTemp=datos[0]+float(datos[1])/100 #Calculamos la temperatura en C , el primer valor son los enteros, el segundo los decimales en formato entero. humidity=datos[2]+float(datos[3])/100 # Igual que el valor de la temperatura #store the readings in variable and convert it into string and using firbase.post then data will be posted to databse of firebase #Mandamos los datos a firebase result = firebase.post('monitorinv', {'cTemp':str(cTemp), 'humidity':str(humidity),'time':str(now)}) print(result) #Imprimir los resultados enviados time.sleep(5);
Ejecutamos el codigo y veremos algo como:
[50, 46, 0, 30] - Sat Mar 30 10:00:18 2019 {'name': '-LbEK8GK73HSBYFKh8m9'}
Referencias: