MQTT를 사용한 OTA 업데이트 사전 조건 - FreeRTOS

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

MQTT를 사용한 OTA 업데이트 사전 조건

이 단원에서는 MQTT를 사용하여 무선 업데이트(OTA)를 수행하기 위한 일반적인 요구 사항에 대해 설명합니다.

최소 요구 사항

  • 디바이스 펌웨어에는 필요한 FreeRTOS 라이브러리(coreMQTT 에이전트, OTA 업데이트 및 해당 종속성)가 포함되어 있어야 합니다.

  • FreeRTOS 버전 1.4.0 이상이 필요합니다. 하지만 가능한 경우 최신 버전을 사용하는 것이 좋습니다.

구성

버전 201912.00부터 FreeRTOS OTA는 HTTP 또는 MQTT 프로토콜을 사용하여 펌웨어 업데이트 이미지를에서 디바이스 AWS IoT 로 전송할 수 있습니다. FreeRTOS에서 OTA 업데이트를 생성할 때 두 프로토콜을 모두 지정하면 각 디바이스에서 이미지를 전송하는 데 사용되는 프로토콜을 결정합니다. 자세한 내용은 HTTP를 사용한 OTA 업데이트 사전 조건 섹션을 참조하세요.

기본적으로 ota_config.h의 OTA 프로토콜은 MQTT 프로토콜을 사용하도록 구성되어 있습니다.

디바이스별 구성

없음.

메모리 사용량

MQTT를 데이터 전송에 사용하는 경우, 제어 작업과 데이터 작업 간에 공유되므로 MQTT 연결을 위한 추가 힙 메모리가 필요하지 않습니다.

디바이스 정책

MQTT를 사용하여 OTA 업데이트를 수신하는 각 디바이스는에 사물로 등록해야 하며 AWS IoT 사물에는 여기에 나열된 것과 같은 연결된 정책이 있어야 합니다. "Action""Resource" 객체의 항목에 대한 자세한 내용은 AWS IoT 핵심 정책 작업AWS IoT 핵심 작업 리소스에서 확인할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Connect", "Resource": "arn:partition:iot:region:account:client/${iot:Connection.Thing.ThingName}" }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": [ "arn:partition:iot:region:account:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/streams/*", "arn:partition:iot:region:account:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/jobs/*" ] }, { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:partition:iot:region:account:topic/$aws/things/${iot:Connection.Thing.ThingName}/streams/*", "arn:partition:iot:region:account:topic/$aws/things/${iot:Connection.Thing.ThingName}/jobs/*" ] } ] }
Notes
  • iot:Connect 권한을 통해 디바이스가 MQTT를 AWS IoT 통해에 연결할 수 있습니다.

  • AWS IoT 작업 주제에 대한 iot:Subscribeiot:Publish 권한(.../jobs/*)을 사용하면 연결된 디바이스가 작업 알림 및 작업 문서를 수신하고 작업 실행의 완료 상태를 게시할 수 있습니다.

  • AWS IoT OTA 스트림(.../streams/*) 주제에 대한 iot:Subscribeiot:Publish 권한을 통해 연결된 디바이스가 OTA 업데이트 데이터를 가져올 수 있습니다 AWS IoT. MQTT를 통해 펌웨어 업데이트를 수행하려면 이러한 권한이 필요합니다.

  • iot:Receive 권한을 통해 AWS IoT Core 는 연결된 디바이스에 해당 주제에 대한 메시지를 게시할 수 있습니다. MQTT 메시지를 전송할 때마다 이 권한을 확인합니다. 이 권한을 사용하면 주제를 현재 구독 중인 클라이언트에 대한 액세스 권한을 취소할 수 있습니다.