Node 18 / firebase-functions v2. 4 센서의 LiveData → StatsData 자동 집계 트리거.
| Trigger | 파일 | 동작 |
|---|---|---|
/USER/LiveData/heartRate 쓰기 시 |
src/heartRateFunctions.js |
심박수 통계 (/USER/StatsData/heartRate/YYYY/MM/weekN/) 자동 계산 |
/USER/LiveData/steps 쓰기 시 |
src/stepsFunctions.js |
걸음수 (움직임) 통계 자동 계산 |
→ 화장실 / 수면 통계는 .ino 펌웨어 (loadcell.v.2.0.0.ino, Pir.v.2.0.0.ino) 가 직접 Firebase 에 쓰기 (Cloud Functions 미사용).
cd functions
npm install
firebase deploy --only functions{ "rules": { ".read": false, ".write": false } }학부 데모 단계 (학기 중) 에는 read: true, write: true 였습니다 (누구나 DB 전체 r/w 가능). GitHub push 전 false/false 로 차단했지만, 이 사실 자체를 README 의 "본인 톤" 섹션에 박제 — 학부생이 Firebase Security Rules 의 무게를 처음 깨달은 시점.
본 코드는 두 Firebase 프로젝트를 가리킵니다:
monitoring-a6b20— Android 앱 + Arduino 펌웨어 (LiveData 쓰기)wearable-e1302— Cloud Functions 가 LiveData 를 읽어 StatsData 계산
학기 중간에 프로젝트가 둘로 분리된 이유는 명확하지 않음 — 본인 톤 자산의 일부.
{
"engines": { "node": "18" },
"dependencies": {
"firebase-admin": "^12.6.0",
"firebase-functions": "^6.0.1"
}
}serviceAccountKey.json은 본 레포에 포함되지 않습니다. 로컬 에뮬레이션 시index.js가 참조하므로 Firebase 콘솔에서 다운로드 필요.- 배포 환경에서는
admin.credential.applicationDefault()사용 → IAM 권한 기반.