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

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

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

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

최소 요구 사항

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

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

Configurations

버전 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/*" ] } ] }
주의
  • iot:Connect 권한을 사용하면 MQTT를 통해 디바이스를 AWS IoT에 연결할 수 있습니다.

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

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

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