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

idversionfile_urlchecksumforce_update

device

| device_id | current_version | group |


OTA 흐름

  1. 디바이스 MQTT 접속
  2. 서버 → version 비교
  3. 필요 시 OTA 명령 publish
JSON

11️⃣ BLE + OTA 통합 설계 전략

단계기능
1BLE Provisioning
2WiFi 연결
3MQTT 등록
4서버 인증
5OTA 정책 적용

12️⃣ 산업용 IoT에서 반드시 고려할 것

✔ 전원 차단 대응

  • OTA 중 전원 꺼짐 → 이전 파티션 복구

✔ 점진적 배포 (Rollout)

  • 10% → 30% → 100%

✔ 디바이스 그룹 관리

  • 테스트 그룹
  • 고객사 그룹
  • 지역 그룹

13️⃣ SaaS 확장 구조 (당신 플랫폼 기준)

현재 구상 중인:

AI Edge 제어 플랫폼 + 산업 자동제어 SaaS 구조에서는

Provisioning + OTA는 반드시:

  • 멀티테넌트 구조
  • 고객사별 firmware 버전 관리
  • 롤백 기능

까지 설계해야 합니다.


🚀 추천 기술 스택 (2026 기준)

기능추천
BLE ProvisioningESP-IDF
OTAHTTPS + S3
인증JWT + Device Key
통신MQTT (TLS)
BackendFastAPI
DashboardNext.js