Share via


IoT Hub 데이터 평면 MQTT 5 API 참조(미리 보기)

이 문서에서는 IoT Hub 데이터 평면 API 버전 2.0(api-version: 2020-10-01-preview)에서 사용할 수 있는 작업을 정의합니다.

참고 항목

IoT Hub는 MQTT에 대한 제한된 기능 지원을 제공합니다. 솔루션에 MQTT v3.1.1 또는 v5 지원이 필요한 경우 Azure Event Grid에서 MQTT 지원을 권장합니다. 자세한 내용은 IoT Hub 및 Event Grid에서 MQTT 지원 비교를 참조 하세요.

작업

트윈 가져오기

트윈 상태 가져오기

Request

토픽 이름:$iothub/twin/get

속성: 없음

페이로드: 비어 있음

성공 응답

속성: 없음

페이로드: 트윈

대체 응답

상태 이름 설명
0100 Bad Request 작업 메시지가 잘못되어 처리할 수 없습니다.
0101 권한 없음 클라이언트는 작업을 수행할 권한이 없습니다.
0102 허용 안함 작업이 허용되지 않습니다.
0501 Throttled 요청 속도가 SKU당 너무 높음
0502 할당량 초과 현재 SKU당 일일 할당량을 초과함
0601 서버 오류 내부 서버 오류
0602 Timeout 작업이 완료되기 전에 시간 초과됨
0603 서버 작업 중 서버 사용 중

의사 코드 샘플


-> PUBLISH
    QoS: 0
    Topic: $iothub/twin/get
<- PUBLISH
    QoS: 0
    Topic: $iothub/responses

패치 트윈이 보고됨

패치 트윈 보고됨 상태

Request

토픽 이름:$iothub/twin/patch/reported

Properties:

이름 종류 필수 설명
if-version u64 아니요

페이로드: TwinState

성공 응답

Properties:

이름 종류 필수 설명
version u64 패치가 적용된 후 보고된 상태의 버전

페이로드: 비어 있음

대체 응답

상태 이름 설명
0104 Precondition Failed 사전 조건이 충족되지 않아 요청이 취소됨
0100 Bad Request 작업 메시지가 잘못되어 처리할 수 없습니다.
0101 권한 없음 클라이언트는 작업을 수행할 권한이 없습니다.
0102 허용 안함 작업이 허용되지 않습니다.
0501 Throttled 요청 속도가 SKU당 너무 높음
0502 할당량 초과 현재 SKU당 일일 할당량을 초과함
0601 서버 오류 내부 서버 오류
0602 Timeout 작업이 완료되기 전에 시간 초과됨
0603 서버 작업 중 서버 사용 중

의사 코드 샘플


-> PUBLISH
    QoS: 0
    Topic: $iothub/twin/patch/reported
    [if-version: <u64>]
<- PUBLISH
    QoS: 0
    Topic: $iothub/responses

수신 명령

명령 수신 및 처리

메시지

토픽 이름:$iothub/commands

Properties:

이름 종류 필수 설명
sequence-no u64 메시지의 시퀀스 번호
enqueued-time time 메시지가 시스템에 들어온 시점의 타임스탬프
배달 수 u32 메시지 배달을 시도한 횟수
생성 시간 time 아니요 메시지를 만든 시간의 타임스탬프(보낸 사람이 제공)
message-id string 아니요 메시지 ID(보낸 사람 제공)
user-id string 아니요 사용자 ID(보낸 사람 제공)
correlation-id string 아니요 상관 관계 ID(보낸 사람 제공)
콘텐츠 유형 string 아니요 는 페이로드의 콘텐츠 형식을 결정합니다.
content-encoding string 아니요 는 페이로드의 콘텐츠 인코딩을 결정합니다.

페이로드: 임의의 바이트 시퀀스

성공 승인

클라이언트에서 처리할 수 있는 명령이 허용되었음을 나타냅니다.

속성: 없음

페이로드: 비어 있음

대체 승인

이유 코드 상태 이름 설명
131 0603 중단 현재 명령이 처리되지 않으며 나중에 다시 배달되어야 했음을 나타냅니다.
131 0100 거부 클라이언트가 명령을 거부했으며 다시 시도해서는 안 됨을 나타냅니다.

의사 코드 샘플


-> SUBSCRIBE
    - Topic: $iothub/commands
      QoS: 1
<- PUBLISH
    QoS: 1
    Topic: $iothub/commands
    sequence-no: <u64>enqueued-time: <time>delivery-count: <u32>[creation-time: <time>][message-id: <string>][user-id: <string>][correlation-id: <string>][Content Type: <string>][content-encoding: <string>]
    Payload: ...

-> PUBACK

직접 메서드 받기

직접 메서드 호출 수신 및 처리

Request

토픽 이름:$iothub/methods/{name}

속성: 없음

페이로드: 임의의 바이트 시퀀스

성공 응답

Properties:

이름 종류 필수 설명
response-code u32

페이로드: 임의의 바이트 시퀀스

대체 응답

상태 이름 설명
06A0 사용할 수 없음 이 연결을 통해 클라이언트에 연결할 수 없음을 나타냅니다.

의사 코드 샘플


-> SUBSCRIBE
    - Topic: methods/{name}
      QoS: 0
<- SUBACK
<- PUBLISH
    QoS: 0
    Topic: $iothub/methods/{name}
-> PUBLISH
    QoS: 0
    Topic: $iothub/responses

트윈 원하는 상태 변경 받기

트윈의 원하는 상태에 대한 업데이트 받기

메시지

토픽 이름:$iothub/twin/patch/desired

Properties:

이름 종류 필수 설명
version u64 이 업데이트와 일치하는 원하는 상태의 버전

페이로드: TwinState

의사 코드 샘플


-> SUBSCRIBE
    - Topic: $iothub/twin/patch/desired
      QoS: 0
<- PUBLISH
    QoS: 0
    Topic: $iothub/twin/patch/desired
    version: <u64>
    Payload: ...

원격 분석 전송

원격 분석 채널에 메시지 게시 - 기본적으로 Event Hubs 또는 라우팅 구성을 통해 다른 엔드포인트.

메시지

토픽 이름:$iothub/telemetry

Properties:

이름 종류 필수 설명
콘텐츠 유형 string 아니요 게시된 메시지에서 content-type 시스템 속성으로 변환
content-encoding string 아니요 게시된 메시지에서 content-encoding 시스템 속성으로 변환
message-id string 아니요 게시된 메시지에서 message-id 시스템 속성으로 변환
user-id string 아니요 게시된 메시지에서 user-id 시스템 속성으로 변환
correlation-id string 아니요 게시된 메시지에서 correlation-id 시스템 속성으로 변환
생성 시간 time 아니요 게시된 메시지에서 iothub-creation-time-utc 속성으로 변환

형식 creation-time 은 표준 시간대 정보가 없는 UTC여야 합니다. 예를 들어 2021-04-21T11:30:16Z는 유효하고 2021-04-21T11:30:16-07:00은 잘못된 것입니다.

페이로드: 임의의 바이트 시퀀스

성공 승인

메시지가 원격 분석 채널에 성공적으로 게시되었습니다.

속성: 없음

페이로드: 비어 있음

대체 승인

이유 코드 상태 이름 설명
131 0100 Bad Request 작업 메시지가 잘못되어 처리할 수 없습니다.
135 0101 권한 없음 클라이언트는 작업을 수행할 권한이 없습니다.
131 0102 허용 안함 작업이 허용되지 않습니다.
131 0601 서버 오류 내부 서버 오류
151 0501 Throttled 요청 속도가 SKU당 너무 높음
151 0502 할당량 초과 현재 SKU당 일일 할당량을 초과함
131 0602 Timeout 작업이 완료되기 전에 시간 초과됨
131 0603 서버 작업 중 서버 사용 중

의사 코드 샘플

-> PUBLISH
    QoS: 1
    Topic: $iothub/telemetry
    [Content Type: <string>]
    [content-encoding: <string>]
    [message-id: <string>]
    [user-id: <string>]
    [correlation-id: <string>]
    [creation-time: <time>]

<- PUBACK

응답

Bad Request

작업 메시지가 잘못되어 처리할 수 없습니다.

이유 코드:131

상태:0100

Properties:

이름 종류 필수 설명
reason string 아니요 에는 메시지에 대해 특별히 유효하지 않은 항목에 대한 정보가 포함되어 있습니다.

페이로드: 비어 있음

충돌

작업이 진행 중인 다른 작업과 충돌합니다.

이유 코드:131

상태:0103

Properties:

이름 종류 필수 설명
trace-id string 아니요 오류에 대한 다른 진단 상관 관계에 대한 추적 ID
reason string 아니요 에는 메시지에 대해 특별히 유효하지 않은 항목에 대한 정보가 포함되어 있습니다.

페이로드: 비어 있음

허용 안함

작업이 허용되지 않습니다.

이유 코드:131

상태:0102

Properties:

이름 종류 필수 설명
reason string 아니요 에는 메시지에 대해 특별히 유효하지 않은 항목에 대한 정보가 포함되어 있습니다.

페이로드: 비어 있음

권한 없음

클라이언트는 작업을 수행할 권한이 없습니다.

이유 코드:135

상태:0101

Properties:

이름 종류 필수 설명
trace-id string 아니요 오류에 대한 다른 진단 상관 관계에 대한 추적 ID

페이로드: 비어 있음

Not Found

요청된 리소스가 없습니다.

이유 코드:131

상태:0504

Properties:

이름 종류 필수 설명
reason string 아니요 에는 메시지에 대해 특별히 유효하지 않은 항목에 대한 정보가 포함되어 있습니다.

페이로드: 비어 있음

Not Modified

제공된 사전 조건에 따라 리소스가 수정되지 않았습니다.

이유 코드:0

상태:0001

속성: 없음

페이로드: 비어 있음

Precondition Failed

사전 조건이 충족되지 않아 요청이 취소됨

이유 코드:131

상태:0104

속성: 없음

페이로드: 비어 있음

할당량 초과

현재 SKU당 일일 할당량을 초과함

이유 코드:151

상태:0502

속성: 없음

페이로드: 비어 있음

리소스가 소진됨

리소스에 작업을 완료할 수 있는 용량이 없음

이유 코드:131

상태:0503

Properties:

이름 종류 필수 설명
reason string 아니요 에는 메시지에 대해 특별히 유효하지 않은 항목에 대한 정보가 포함되어 있습니다.

페이로드: 비어 있음

서버 작업 중

서버 사용 중

이유 코드:131

상태:0603

Properties:

이름 종류 필수 설명
trace-id string 아니요 오류에 대한 다른 진단 상관 관계에 대한 추적 ID

페이로드: 비어 있음

서버 오류

내부 서버 오류

이유 코드:131

상태:0601

Properties:

이름 종류 필수 설명
trace-id string 아니요 오류에 대한 다른 진단 상관 관계에 대한 추적 ID

페이로드: 비어 있음

대상 실패

대상이 응답했지만 응답이 잘못되었거나 잘못된 형식임

이유 코드:131

상태:06A2

Properties:

이름 종류 필수 설명
reason string 아니요 에는 메시지에 대해 특별히 유효하지 않은 항목에 대한 정보가 포함되어 있습니다.

페이로드: 비어 있음

대상 시간 제한

대상이 요청을 완료할 때까지 기다리는 동안 시간 초과됨

이유 코드:131

상태:06A1

Properties:

이름 종류 필수 설명
trace-id string 아니요 오류에 대한 다른 진단 상관 관계에 대한 추적 ID
reason string 아니요 에는 메시지에 대해 특별히 유효하지 않은 항목에 대한 정보가 포함되어 있습니다.

페이로드: 비어 있음

대상을 사용할 수 없음

대상에 연결할 수 없도록 하여 요청을 완료합니다.

이유 코드:131

상태:06A0

속성: 없음

페이로드: 비어 있음

Throttled

요청 속도가 SKU당 너무 높음

이유 코드:151

상태:0501

속성: 없음

페이로드: 비어 있음

Timeout

작업이 완료되기 전에 시간 초과됨

이유 코드:131

상태:0602

Properties:

이름 종류 필수 설명
trace-id string 아니요 오류에 대한 다른 진단 상관 관계에 대한 추적 ID

페이로드: 비어 있음