장비 관리 및 OTA 시스템 개요
1. 시스템 개요
이 시스템은 각 IoT 장치(예: 센서, 컨트롤러 등)와 중앙 서버 간의 실시간 통신을 지원합니다. 이 통신은 MQTT라는 프로토콜을 통해 이루어지며, 장치는 정기적으로 상태 정보를 보고하고, 서버는 필요 시 장치에 명령을 전달할 수 있습니다.
2. 주요 개념 및 용어
- MQTT: 장치와 서버 간 통신을 위한 가볍고 빠른 메시징 프로토콜입니다.
- link_id: 장비를 식별하기 위한 고유 ID입니다.
- 토픽(Topic): 메시지를 전달할 때 사용하는 주소 체계입니다.
3. MQTT 토픽 계층 구조
l/{link_id}/h
: 하트비트 (Heartbeat)l/{link_id}/s/{sensor_id}
: 센서 데이터 보고l/{link_id}/s/{status_type}
: 장치 상태 정보 보고l/{link_id}/e/{event_id}
: 이벤트 보고l/{link_id}/c/{command_id}/req
: 서버 → 장치 명령 요청l/{link_id}/c/{command_id}/res
: 장치 → 서버 명령 응답
4. 하트비트 (Heartbeat)
장치가 정상 작동 중임을 주기적으로 서버에 알립니다.
-
형식:
l/{link_id}/h
-
페이로드:
{ "uptime": 1234567 }
uptime
: 시스템이 부팅된 이후 경과 시간 (밀리초 단위)
5. 센서 데이터 보고
센서에서 측정한 데이터를 서버에 전송합니다.
-
형식:
l/{link_id}/s/{sensor_id}
-
페이로드 예시:
-
숫자:
23.5
-
JSON:
{ "value": 23.5, "unit": "C", "timestamp": 1621234567890 }
-
6. 상태 정보 보고
장치의 동작 상태나 설정 상태를 서버에 보고합니다.
- 형식:
l/{link_id}/s/{status_type}
- 예시: 현재 모드, 작동 여부 등
7. 이벤트 보고
장치에서 발생한 특정 이벤트를 서버에 전송합니다.
- 형식:
l/{link_id}/e/{event_id}
- 예시: 버튼 누름, 경고 발생, 센서 이상 등
8. 명령 요청 및 응답
8.1 명령 요청 (서버 → 장치)
- 형식:
l/{link_id}/c/{command_id}/req
- 예시: 설정 변경 요청, 장치 재시작 요청 등
8.2 명령 응답 (장치 → 서버)
-
형식:
l/{link_id}/c/{command_id}/res
-
페이로드 형식:
{responseStatus}|{body}
-
예시:
OK|{"message": "완료됨"}
-
8.3 가능한 응답 상태
OK
: 명령 정상 처리됨UNPROCESSABLE
: 알 수 없는 명령어ERROR
: 처리 중 오류 발생TIMEOUT
: 시간 초과UNKNOWN
: 기타 알 수 없는 오류
Last updated on