라즈베리파이에서 python 언어를 이용하여서 FIrebase를 활용해 쓰기 , 읽기를 한 번 해봤습니다.
우선 CPU의 온도를 체크하여 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를 한 번 활용한 예제를 해 보았습니다.
아래의 블로그를 참고하여 블로그를 작성하였습니다.