Skip to main content

IOT-Firebase-Python

Connecting raspberry with the firebase using the python. I will code here how to upload the images or some data to firesebase using python.
Sample code to upload images and data to firebase is there in github : https://github.com/yuvaraj119/IOT-Firebase-Python 

First install pyrebase from https://pypi.org/project/Pyrebase/

Now we are good to go with code.

import pyrebase
import uuid
from uuid import getnode as get_mac
import getpass
import datetime
import os

config = {
    "apiKey":"", #get api key from firebase
    "authDomain":"", #firebase app auth url 
    "databaseURL": "", #add yout db url from firebase where your data is gonna store 
    "storageBucket": "" #storage bucket url from firebase storage 
}

firebase = pyrebase.initialize_app(config)
db = firebase.database()
storage = firebase.storage()

is_session=False

#creating unique name for session and device

uid_str = uuid.uuid5(uuid.NAMESPACE_DNS,'python.org')  
session = str(uid_str)+"PI"+str(uuid.uuid4())

mac_addr = get_mac()
pi_username = getpass.getuser()
name = str(mac_addr)+pi_username

#firebase storage path will be created base on this
storage_path = "pi-images/"+name+"/"+session+"/"

#saving the data and image url in firebase db. 
db.child("users").child(name)

data = {"created_date_time":str(datetime.datetime.now()),
        "image_url":"https:google.com/images"}

def pushData(data):
    db.child(session).push(data)
    
def setData(data):
    db.child(session).set(data)

def updateData(data):
    db.child(session).update(data)

def removeData():
    db.child(session).remove()

def uploadImage():
    file=os.path.basename('image1.jpg') #image1.jpg is local storage image
    storage.child(storage_path+"image1.jpg").put(file)
    image_url= storage.child(storage_path+"image1.jpg").get_url(1)
    print(image_url)
    data = {"created_date_time":str(datetime.datetime.now()),
        "image_url":image_url}
    pushData(data)


#this will upload the image to firebase and push data will upload in firebase db.
uploadImage()


Comments