기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
MQTT를 사용한 OTA 업데이트 사전 조건
중요
이 문서는 FreeRTOS 릴리스 202012.00에서 사용하기 위한 FreeRTOS 사용 설명서의 보관 버전입니다. 이 문서의 최신 버전은 FreeRTOS 사용 설명서를 참조하세요.
이 단원에서는 MQTT를 사용하여 무선 업데이트(OTA)를 수행하기 위한 일반적인 요구 사항에 대해 설명합니다.
액세스 권한을 제공하려면 사용자, 그룹 또는 역할에 권한을 추가하세요:
-
의 사용자 및 그룹 AWS IAM Identity Center:
권한 세트를 생성합니다. AWS IAM Identity Center 사용 설명서의 권한 세트 생성의 지침을 따릅니다.
-
보안 인증 공급자를 통해 IAM에서 관리되는 사용자:
ID 페더레이션을 위한 역할을 생성합니다. IAM 사용 설명서의 Create a role for a third-party identity provider (federation)의 지침을 따릅니다.
-
IAM 사용자:
-
사용자가 맡을 수 있는 역할을 생성합니다. IAM 사용 설명서에서 Create a role for an IAM user의 지침을 따릅니다.
-
(권장되지 않음)정책을 사용자에게 직접 연결하거나 사용자를 사용자 그룹에 추가합니다. IAM 사용 설명서에서 사용자(콘솔)에 권한 추가의 지침을 따르세요.
-
최소 요구 사항
-
디바이스 펌웨어에는 필요한 FreeRTOS 라이브러리(coreMQTT, OTA 에이전트 및 해당 종속성)가 포함되어 있어야 합니다.
-
FreeRTOS 버전 1.4.0 이상이 필요합니다. 하지만 가능한 경우 최신 버전을 사용하는 것이 좋습니다.
구성
버전 201912.00부터 FreeRTOS OTA는 HTTP 또는 MQTT 프로토콜을 사용하여 펌웨어 업데이트 이미지를에서 디바이스 AWS IoT 로 전송할 수 있습니다. FreeRTOS에서 OTA 업데이트를 생성할 때 두 프로토콜을 모두 지정하면 각 디바이스에서 이미지를 전송하는 데 사용되는 프로토콜을 결정합니다. 자세한 정보는 HTTP를 사용한 OTA 업데이트 사전 조건을 참조하세요.
기본적으로 aws_ota_agent_config.h
의 OTA 프로토콜은 MQTT 프로토콜을 사용하도록 구성되어 있습니다.
/** * @brief The protocol selected for OTA control operations. * This configuration parameter sets the default protocol for all the OTA control * operations like requesting OTA job, updating the job status etc. * * Note - Only MQTT is supported at this time for control operations. */ #define configENABLED_CONTROL_PROTOCOL ( OTA_CONTROL_OVER_MQTT ) /** * @brief The protocol selected for OTA data operations. * This configuration parameter sets the protocols selected for the data operations * like requesting file blocks from the service. * * Note - Both MQTT and HTTP are supported for data transfer. This configuration parameter * can be set to the following - * Enable data over MQTT - ( OTA_DATA_OVER_MQTT ) * Enable data over HTTP - ( OTA_DATA_OVER_HTTP) * Enable data over both MQTT & HTTP ( OTA_DATA_OVER_MQTT | OTA_DATA_OVER_HTTP ) */ #define configENABLED_DATA_PROTOCOLS ( OTA_DATA_OVER_MQTT ) /** * @brief The preferred protocol selected for OTA data operations. * * Primary data protocol will be the protocol used for downloading files if more than * one protocol is selected while creating OTA job. Default primary data protocol is MQTT * and the following update here switches to HTTP as primary. * * Note - use OTA_DATA_OVER_HTTP for HTTP as primary data protocol. */ #define configOTA_PRIMARY_DATA_PROTOCOL ( OTA_DATA_OVER_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:Subscribe
및iot:Publish
권한(.../jobs/*
)을 사용하면 연결된 디바이스가 작업 알림 및 작업 문서를 수신하고 작업 실행의 완료 상태를 게시할 수 있습니다. -
AWS IoT OTA 스트림(
.../streams/*
) 주제에 대한iot:Subscribe
및iot:Publish
권한을 통해 연결된 디바이스는 OTA 업데이트 데이터를 가져올 수 있습니다 AWS IoT. MQTT를 통해 펌웨어 업데이트를 수행하려면 이러한 권한이 필요합니다. -
iot:Receive
권한을 통해 AWS IoT Core 는 연결된 디바이스에 해당 주제에 대한 메시지를 게시할 수 있습니다. MQTT 메시지를 전송할 때마다 이 권한을 확인합니다. 이 권한을 사용하면 주제를 현재 구독 중인 클라이언트에 대한 액세스 권한을 취소할 수 있습니다.