티스토리 뷰
개요
google 에서 제공하는 Cloud NoSQL DB 인 Firestore 에 센서의 측정값을 올려보자.
목표
지금까지의 포스팅에서 센서의 값을 주기적으로 측정하는 부분까지 완료하였다.
이것을 Cloud 상의 NoSQL DB 인 Firestore 에 올려보겠다.
이후, 웹을 통하여 챠트로 표현하여 모니터링이 가능하게 될 것이다.
프로젝트 GitHub: https://github.com/nicewook/dustsensor_public
구현코드 링크: https://github.com/nicewook/dustsensor_public/blob/master/ds_v2_firestore.py
미세먼지 토이 프로젝트 - 센서 선정 및 라즈베리파이 연결: https://jusths.tistory.com/103 미세먼지 토이 프로젝트 - 센서 원리와 측정단위 변환법: https://jusths.tistory.com/105 미세먼지 토이 프로젝트 - 기본 테스트: https://jusths.tistory.com/109 미세먼지 토이 프로젝트 - ug/m3 와 aqi 계산: https://jusths.tistory.com/110 |
Firestore 준비
1) Project 를 생성하고
2) Database 를 만들고
3) Credential 을 얻는다.
거칠게 말하자면 이런거다.
하나의 서비스를 만든다면 그를 위한 Firebase 의 하나의 Project 를 만든다.
그 Project 에서 Database 를 생성하고, Proejct 에 접근할 수 있는 권한을 얻는다.
참고링크: credential json 얻기: https://www.cannercms.com/docs/credential-firestore
이제 하나씩 따라가보자.
1) https://firebase.google.com/ 로 가서 Add Project
|
|
2) Database 생성
- Database >> Create Database
- 세세한 모드 설정은 접근 권한 등에 대한 것임
3) Credentials 얻기
링크의 움짤을 참고하자: https://www.cannercms.com/docs/credential-firestore
Project Overview 옆의 설정 아이콘 >> Project settings >> Service accounts
- 원하는 언어를 선택하고, Private key 를 생성하면 된다.
|
import firebase_admin from firebase_admin import credentials
cred = credentials.Certificate("path/to/serviceAccountKey.json") firebase_admin.initialize_app(cred) |
센서 측정 파이썬 앱과 Firestore project 연결하기
|
1) dust-sensor-jhs2-firebase-adminsdk-livjz-71b1b15cee.json 라는 식으로 다운로드 되었음 2) firestore_dust_service.json 이름을 변경해준 후 (꼭 할 필요는 없음) 3) 라즈베리파이에는 email 을 통해서 전송후 프로젝트 폴더로 옮겨주었다. |
내용은 대략 아래와 같다. 이제 파이썬에서 이 .json 파일을 가져다가 Firestore 와 연결하는데 쓰는 것이다.
→ Git 의 .gitignore 파일에 이 파일을 추가하여, 실수로라도 GitHub 등에 공유되지 않도록 할 것
Firestore 연결 코드
참고 링크: https://firebase.google.com/docs/firestore/quickstart?hl=ko
1) 파이썬 라이브러리를 추가해준다.
pip install --upgrade firebase-admin
2) Cloud Firestore 인스턴스를 초기화 해준다.
필요한 라이브러리를 import 해준 다음
.json 파일을 이용해 Credential 을 얻고, 인스턴스를 초기화 한다.
그리고, database 의 collection 을 얻는다. 대략 데이터베이스의 테이블 정도의 개념정도로 이해하고 넘어가자.
Firestore 업로드 코드
참고 링크: https://firebase.google.com/docs/firestore/quickstart?hl=ko
참고 링크: https://firebase.google.com/docs/firestore/manage-data/add-data?hl=ko
.add(...) 와 .doc().set(…) 은 내부적으로 완전히 동일하게 동작한다.
확인해보자
앱을 실행한 다음 Firebase 로 가서 제대로 업로드 되었는지 확인해본다.
현재는 한번의 측정결과 마다 하나의 문서 (document) 를 생성해서 추가하고 있다.
'embedded' 카테고리의 다른 글
RS-485 통신의 구현 (2) | 2020.12.04 |
---|---|
Mi Pad 커스텀 롬 (4) | 2020.09.20 |
미세먼지 토이 프로젝트 - ug/m3 와 aqi 계산 (0) | 2019.04.15 |
미세먼지 토이 프로젝트 - 기본 테스트 (0) | 2019.04.11 |
미세먼지 토이 프로젝트 - 센서 원리와 측정단위 변환법 (1) | 2019.04.04 |
- Total
- Today
- Yesterday
- 독서후기
- 노션
- 잡학툰
- 독서
- clean agile
- strange
- Bug
- intellij
- golang
- OpenAI
- API
- 엉클 밥
- ChatGPT
- Gin
- folklore
- websocket
- github
- 오블완
- 인텔리제이
- 영화
- 2023
- bun
- 제이펍
- go
- 티스토리챌린지
- notion
- agile
- solid
- 체호프
- 클린 애자일
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |