本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 MQTT 進行 OTA 更新的先決條件
本節描述使用 MQTT 執行無線 (OTA) 更新的一般需求。
最低需求
-
裝置韌體必須包含必要的 FreeRTOS 程式庫 (coreMQTT Agent、OTA 更新及其相依性)。
-
需要 FreeRTOS 1.4.0 版或更新版本。不過,我們建議您儘可能使用最新版本。
組態
從 201912.00 版開始,FreeRTOS OTA 可以使用 HTTP 或 MQTT 通訊協定,將韌體更新映像從 傳輸 AWS IoT 到 裝置。如果您在 FreeRTOS 中建立 OTA 更新時指定這兩個通訊協定,則每個裝置都會決定用於傳輸映像的通訊協定。如需更多資訊,請參閱使用 HTTP 進行 OTA 更新的先決條件。
根據預設, 中的 OTA 通訊協定組態ota_config.h
裝置特定的組態
無。
記憶體用量
當 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
許可允許您的裝置 AWS IoT 透過 MQTT 連線至 。 -
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 訊息時,都會檢查此許可。您可以使用此許可來撤銷目前訂閱主題之用戶端的存取權。