PlatformUpdated 2025-04-01
BLE Provisioning & OTA 설계 가이드
BLE Provisioning / OTA를 **IoT SaaS + MCU + 모바일 앱 구조** 기준 정리
ESP32-S3PlatformIOFreeRTOS
1️⃣ BLE Provisioning 이란?
Provisioning = 디바이스 최초 설정 과정
즉,
WiFi SSID / Password / MQTT Broker / Device ID 등을 스마트폰에서 BLE로 MCU에 전달하는 과정
📌 왜 BLE를 쓰는가?
| 방식 | 문제점 |
|---|---|
| AP 모드 | UX 불편 |
| USB 시리얼 | 현장 불편 |
| BLE | ✔ 스마트폰 앱으로 간편 설정 |
👉 요즘 IoT는 BLE Provisioning이 표준
2️⃣ 전체 구조
[Mobile App]
↓ (BLE)
[ESP32]
↓ (WiFi)
[MQTT Broker]
↓
[Cloud Backend]
Provisioning 완료 → WiFi 연결 → MQTT 접속
3️⃣ BLE Provisioning 흐름
① ESP32 초기 부팅
- WiFi 설정 없음
- BLE Advertising 시작
② 모바일 앱
- 주변 BLE 스캔
- 특정 UUID 가진 디바이스 검색
③ GATT Write
앱 → 디바이스
JSON
④ ESP32
- NVS 저장
- WiFi 연결 시도
- 성공 시 BLE 종료
4️⃣ ESP32 BLE Provisioning 구조 (C++)
사용 라이브러리
- ESP-IDF BLE 또는
- Arduino BLE + Preferences
간단 구조 예시 (Arduino)
C++
BLE characteristic write callback에서 JSON 파싱 후 저장
5️⃣ 보안 설계 (중요)
BLE Provisioning 시 반드시:
✔ 1. 암호화
- BLE Secure pairing
- 또는 AES 암호화 JSON
✔ 2. 1회성 토큰
- 서버에서 발급한 provisioning token 필요
✔ 3. 제조사 등록 방식
Device Serial → 서버 등록 → 토큰 발급
6️⃣ OTA (Over The Air) 업데이트
WiFi 통해 펌웨어 업데이트
OTA 전체 구조
[Backend]
↓
Firmware.bin (S3 or Server)
↓
[ESP32]
7️⃣ OTA 방식 종류
| 방식 | 설명 |
|---|---|
| HTTP OTA | 가장 단순 |
| HTTPS OTA | 보안 권장 |
| MQTT OTA | 고급 방식 |
실무에서는:
👉 HTTPS + S3 방식 가장 안정적
8️⃣ ESP32 OTA 기본 코드
C++
9️⃣ OTA 안정성 설계 (실무 중요)
ESP32는 Dual Partition 구조 사용해야 합니다.
Factory
OTA_0
OTA_1
업데이트 시:
- 사용 중이 아닌 파티션에 write
- 성공 시 boot partition 변경
🔟 OTA SaaS 설계 (IoT 플랫폼 기준)
DB 테이블 예시
firmware
| id | version | file_url | checksum | force_update |
|---|
device
| device_id | current_version | group |
OTA 흐름
- 디바이스 MQTT 접속
- 서버 → version 비교
- 필요 시 OTA 명령 publish
JSON
11️⃣ BLE + OTA 통합 설계 전략
| 단계 | 기능 |
|---|---|
| 1 | BLE Provisioning |
| 2 | WiFi 연결 |
| 3 | MQTT 등록 |
| 4 | 서버 인증 |
| 5 | OTA 정책 적용 |
12️⃣ 산업용 IoT에서 반드시 고려할 것
✔ 전원 차단 대응
- OTA 중 전원 꺼짐 → 이전 파티션 복구
✔ 점진적 배포 (Rollout)
- 10% → 30% → 100%
✔ 디바이스 그룹 관리
- 테스트 그룹
- 고객사 그룹
- 지역 그룹
13️⃣ SaaS 확장 구조 (당신 플랫폼 기준)
현재 구상 중인:
AI Edge 제어 플랫폼 + 산업 자동제어 SaaS 구조에서는
Provisioning + OTA는 반드시:
- 멀티테넌트 구조
- 고객사별 firmware 버전 관리
- 롤백 기능
까지 설계해야 합니다.
🚀 추천 기술 스택 (2026 기준)
| 기능 | 추천 |
|---|---|
| BLE Provisioning | ESP-IDF |
| OTA | HTTPS + S3 |
| 인증 | JWT + Device Key |
| 통신 | MQTT (TLS) |
| Backend | FastAPI |
| Dashboard | Next.js |