Herramientas de usuario

Herramientas del sitio


proyectos:monitorclima_firebase

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:

proyectos/monitorclima_firebase.txt · Última modificación: por manuel.floresv