翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
MQTT を使用した OTA 更新の前提条件
重要
これは、FreeRTOS リリース 202012.00 で使用する FreeRTOS ユーザーガイドのアーカイブ版です。このドキュメントの最新バージョンについては、FreeRTOS ユーザーガイドを参照してください。
このセクションでは、MQTT を使用して Over-the-air (OTA) による更新を実行するための一般的な要件について説明します。
アクセス権限を付与するにはユーザー、グループ、またはロールにアクセス許可を追加します。
-
以下のユーザーとグループ AWS IAM Identity Center:
アクセス許可セットを作成します。「AWS IAM Identity Center ユーザーガイド」の「権限設定を作成する」の手順に従ってください。
-
IAM 内で、ID プロバイダーによって管理されているユーザー:
ID フェデレーションのロールを作成します。詳細については「IAM ユーザーガイド」の「サードパーティー ID プロバイダー (フェデレーション) 用のロールを作成する」を参照してください。
-
IAM ユーザー:
-
ユーザーが担当できるロールを作成します。手順については「IAM ユーザーガイド」の「IAM ユーザーのロールの作成」を参照してください。
-
(お奨めできない方法) ポリシーをユーザーに直接アタッチするか、ユーザーをユーザーグループに追加します。詳細については「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
Core ポリシーアクションとAWS IoT Core アクションリソースを参照してください。
{ "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:Subscribe
および アクセスiot:Publish
許可により、接続されたデバイスはジョブ通知とジョブドキュメントを受信し、ジョブ実行の完了状態を発行できます。 -
OTA ストリーム (
.../streams/*
) AWS IoT のトピックに対するiot:Subscribe
および アクセスiot:Publish
許可により、接続されたデバイスは OTA 更新データを取得できます AWS IoT。これらのアクセス許可は、MQTT を介してファームウェア更新を実行するために必要です。 -
アクセス
iot:Receive
許可により、 AWS IoT Core はそれらのトピックに関するメッセージを接続されたデバイスに発行できます。このアクセス許可は、MQTT メッセージの配信ごとにチェックされます。このアクセス許可を使用して、トピックに現在サブスクライブしているクライアントへのアクセスを取り消すことができます。