翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
HTTP を使用した OTA 更新の前提条件
このセクションでは、HTTP を使用して無線 (OTA) による更新を実行するための一般的な要件について説明します。バージョン 201912.00 以降、FreeRTOS OTA は HTTP プロトコルまたは MQTT プロトコルを使用して、 からデバイスにファームウェア更新イメージ AWS IoT を転送できます。
注記
-
ファームウェアイメージの転送には HTTP プロトコルを使用する場合がありますが、 coreMQTT との他のやり取りではジョブ実行通知、ジョブドキュメント、実行ステータスの更新の送受信など、coreMQTT エージェントライブラリ AWS IoT Core を使用するため、coreMQTT エージェントライブラリは引き続き必要です。
-
OTA 更新ジョブに MQTT プロトコルと HTTP プロトコルの両方を指定すると、各デバイスの OTA エージェントソフトウェアの設定によって、ファームウェアイメージの転送に使用するプロトコルが決定されます。OTA エージェントをデフォルトの MQTT プロトコルメソッドから HTTP プロトコルに変更するには、デバイスの FreeRTOS ソースコードのコンパイルに使用するヘッダーファイルを変更します。
最小要件
-
デバイスファームウェアに必要な FreeRTOS ライブラリ (coreMQTT 、HTTP、OTA エージェント、その依存関係) が含まれている必要があります。
-
FreeRTOS バージョン 201912.00 以降では、HTTP 経由の OTA データ転送を有効にするために OTA プロトコルの設定を変更する必要があります。
設定
\vendors\boards\
board
\aws_demos\config_files\ota_config.h
HTTP 経由で OTA データの転送を有効にするには
-
configENABLED_DATA_PROTOCOLS
をOTA_DATA_OVER_HTTP
に変更します。 -
OTA が更新されると、MQTT または HTTP のプロトコルのいずれかを使用できるように、両方のプロトコルを指定できます。
configOTA_PRIMARY_DATA_PROTOCOL
をOTA_DATA_OVER_HTTP
に変更することで、デバイスが使用するプライマリプロトコルを HTTP に設定できます。
注記
HTTP は、OTA データオペレーションに対してのみサポートされます。制御オペレーションには MQTT を使用する必要があります。
デバイス固有の設定
- ESP32
-
RAM の容量が限られているため、OTA データプロトコルとして HTTP を有効にする場合は、BLE をオフにする必要があります。
vendors/espressif/boards/esp32/aws_demos/config_files/aws_iot_network_config.h
ファイルで、 AWSIOT_NETWORK_TYPE_WIFI
をconfigENABLED_NETWORKS
のみに変更します。/** * @brief Configuration flag which is used to enable one or more network interfaces for a board. * * The configuration can be changed any time to keep one or more network enabled or disabled. * More than one network interfaces can be enabled by using 'OR' operation with flags for * each network types supported. Flags for all supported network types can be found * in "aws_iot_network.h" * */ #define configENABLED_NETWORKS ( AWSIOT_NETWORK_TYPE_WIFI )
メモリ使用量
MQTT をデータ転送に使用する場合、MQTT 接続は制御オペレーションとデータオペレーションの間で共有されるため、追加のヒープメモリは必要ありません。ただし、HTTP 経由でデータを有効化するには、追加のヒープメモリが必要です。以下は、FreeRTOS xPortGetFreeHeapSize
API を使用して計算された、サポートされているすべてのプラットフォームのヒープメモリの使用状況のデータです。OTA ライブラリを使用するのに十分な RAM があることを確認する必要があります。
- Texas Instruments CC3220SF-LAUNCHXL
-
制御オペレーション (MQTT): 12 KB
データオペレーション (HTTP): 10 KB
注記
TI はハードウェアで SSL を行うため、使用する RAM は大幅に少なくなります。そのため、mbedtls ライブラリを使用しません。
- Microchip Curiosity PIC32MZEF
-
制御オペレーション (MQTT): 65 KB
データオペレーション (HTTP): 43 KB
- Espressif ESP32
-
制御オペレーション (MQTT): 65 KB
データオペレーション (HTTP): 45 KB
注記
ESP32 の BLE では、約 87 KB の RAM を使用します。上記のデバイス固有の設定で説明されているように、すべての設定を有効にするのに十分な RAM がありません。
- Windows simulator
-
制御オペレーション (MQTT): 82 KB
データオペレーション (HTTP): 63 KB
- Nordic nrf52840-dk
-
HTTP はサポートされていません。
デバイスポリシー
このポリシーでは、OTA アップデートに MQTT または HTTP を使用できます。
HTTP を使用して 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}/jobs/*" ] }, { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "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
許可により、接続されたデバイスはジョブ通知とジョブドキュメントを受信し、ジョブ実行の完了状態を発行できます。 -
アクセス
iot:Receive
許可により、 AWS IoT Core はそれらのトピックに関するメッセージを現在接続されているデバイスに発行できます。このアクセス許可は、MQTT メッセージの配信ごとにチェックされます。このアクセス許可を使用して、トピックに現在サブスクライブしているクライアントへのアクセスを取り消すことができます。