RaspberryPi

라즈베리파이에서 Firebase 활용해보기 예제 (Python)

섭섭입니다 2020. 7. 21. 21:09

라즈베리파이에서 python 언어를 이용하여서  FIrebase를 활용해 쓰기 , 읽기를 한 번 해봤습니다.

 

우선 CPU의 온도를 체크하여 Firebase에 온도를 저장하고, 그것을 다시 읽어 라즈베리파이 터미널 창에 띄워보는 것을 해 보았습니다.

 

아래의 블로그를 참고하여 시도해 보았습니다.

 

https://m.blog.naver.com/PostView.nhn?blogId=cosmosjs&logNo=221521309659&referrerCode=0&searchKeyword=Firebase

 

 

우선 Firebase 콘솔에 프로젝트가 생성되어 있어야 합니다.

 

저는 이전에 안드로이드 푸시알림을 해보기위해 만들어 둔 프로젝트를 이용하였습니다. 

 

 

 

 

우선 Firebase 콘솔 홈페이지에 접속하시고 자신이 만들어 둔 프로젝트의 설정으로 들어갑니다

 

 

 

프로젝트 설정  >> 서비스 계정 >> python 선택 >> 새 비공개 키 생성 

 

 

여기서 [새 비공개 키 생성] 버튼을 누르게 되면 .json 파일이 하나 다운로드 될 텐데 그것을 라즈베리파이에 넣어주어야 한다.

 

저같은 경우에는 VNC Viewer를 사용해 빠르게 파일 전송을 할 수 있었습니다.

 

 

 

 

위의 빨간색 모양의 것을 클릭하면  Send files 를 눌러 내가 원하는 파일을 간편하게 가져올 수 있습니다.

 

 

 

그 다음 Firebase 콘솔에 데이터베이스에서 값을 입력해 줄 건데, 

 

 

Database에 들어가서 문서 추가를 해 줄 건데 아래와 같이 입력하여 저장하면 됩니다.

 

 

 

 

파일을 가져 왔으면 이제 라즈베리파이에서 python으로 코드를 작성해 볼 텐데 아래와 같이 작성하면 됩니다.

 

 

< 파일이름.py >

#-*-coding:utf-8 -*-

import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore

cred = credentials.Certificate("다운받은 파일명.json")
firebase_admin.initialize_app(cred)
db = firestore.client()

doc_ref = db.collection(u'자신이 설정한 Firebase에서 컬렉션이름').document(u'문서의 이름')
doc_ref.set({
    u'CPUTemp' : 200
})

 

 

여기서 중요한 게  한글로 적어놓은 부분을 자신이 Firebase에서 설정한 것들의 이름 들을 각각 넣어주어야 합니다.

 

위와 같은 코드를 입력하여 실행한뒤에 Firebase를 들어가보면 0으로 입력했던 CPUTemp의 값이 200으로 바꾸어져 있는 걸 볼 수 있습니다.

 

 

 

 

Firebase에 쓰기를 해보았고 이제 읽기를 해볼 것인데 아래와 같이 코딩하면 됩니다.

 

 

< 파일이름.py > 이런식으로 파일을 만들어 저장.

#-*-coding:utf-8 -*-

import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore

cred = credentials.Certificate("자신이 다운받은 파일명.json")
firebase_admin.initialize_app(cred)
db = firestore.client()

doc_ref = db.collection(u'Test_01').document(u'RaspberryPi')
doc_ref.set({
    u'CPUTemp' : 200
})

try:
    doc = doc_ref.get()
    print(u'Document data: {}'.format(doc.to_dict()))
except google.cloud.exceptions.NotFound:
    print(u'No such document!')

 

그러면 이런식으로 읽어 오는 것을 볼 수 있습니다.

.

 

 

 

다음 이제 실제 CPU의 온도를 한 번 측정하고 읽고 써 볼 것 입니다. 아래와 같이 코딩.

 

 

< 파일명.py >

#-*-coding:utf-8 -*-

import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
import subprocess

#라즈베리파이 CPU 온도 구하기
temp = subprocess.check_output(["/opt/vc/bin/vcgencmd measure_temp | cut -c6-9"], shell=True)[:-1]

cred = credentials.Certificate("자신이 받은 파일명.json")
firebase_admin.initialize_app(cred)
db = firestore.client()

doc_ref = db.collection(u'Test_01').document(u'RaspberryPi')
doc_ref.set({
    u'CPUTemp' : float(temp)
})

try:
    doc = doc_ref.get()
    print(u'Document data: {}'.format(doc.to_dict()))
except google.cloud.exceptions.NotFound:
    print(u'No such document!')

 

 

이런식으로 한 뒤 터미널에서 실행 하면 Firebase에 데이터를 입력한 뒤 그것을 읽어 실제의 온도를 가져옵니다.

 

 

 

이것으로 라즈베리파이에서 Python을 이용하여 firebase를 한 번 활용한 예제를 해 보았습니다.

 

 

 

 

 

 

 

아래의 블로그를 참고하여 블로그를 작성하였습니다.

 

https://m.blog.naver.com/PostView.nhn?blogId=cosmosjs&logNo=221521309659&referrerCode=0&searchKeyword=Firebase