選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

在應用程式和服務中使用影子

焦點模式
在應用程式和服務中使用影子 - AWS IoT Core

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本節說明應用程式或服務如何與 AWS IoT Device Shadow 服務互動。此範例假設應用程式或服務只透過影子與影子與該裝置互動。此範例不包含任何管理動作,例如建立或刪除影子。

此範例使用 AWS IoT Device Shadow 服務的 REST API 與陰影互動。與 中使用的範例不同在裝置中使用影子,它使用 REST 的publish/subscribe communications model, this example uses the request/response通訊模型API。這表示應用程式或服務必須先提出請求,才能收到 的回應 AWS IoT。不過,此模型的缺點是它不支援通知。如果您的應用程式或服務需要裝置狀態變更的及時通知,請考慮MQTT支援發佈/訂閱通訊模型的 MQTT或 WSS 通訊協定,如 中所述在裝置中使用影子

重要

請確定您的應用程式或服務對影子的使用與裝置中的對應實作一致,並支援這些功能。例如,請考慮如何建立、更新和刪除影子,以及如何在裝置和存取影子的應用程式或服務中處理更新。您的設計應該清楚指定裝置狀態的更新和報告方式,以及您的應用程式和服務如何與裝置及其影子互動。

具名影子APIURL的 REST 為:

https://endpoint/things/thingName/shadow?name=shadowName

和一個未命名的影子:

https://endpoint/things/thingName/shadow

其中:

端點

CLI 命令傳回的端點:

aws iot describe-endpoint --endpoint-type IOT:Data-ATS
thingName

影子所屬物件物件的名稱

shadowName

已命名影子的名稱。此參數不會與未命名影子搭配使用。

在連線至 時初始化應用程式或服務 AWS IoT

當應用程式第一次連線到 時 AWS IoT,應該傳送HTTPGET請求到其用於取得其使用之陰影的目前狀態URLs的 。這可讓它將應用程式或服務同步到影子。

應用程式或服務連線到 時,處理狀態會變更 AWS IoT

當應用程式或服務連線到 時 AWS IoT,它可以在其使用的陰影URLs的 上傳送HTTPGET請求,以定期查詢目前狀態。

當最終使用者與應用程式或服務互動以變更裝置狀態時,應用程式或服務可以將HTTPPOST請求傳送到其用來更新陰影desired狀態URLs的影子 。此請求會傳回已接受的變更,但您可能需要透過提出HTTPGET請求來輪詢影子,直到裝置以其新狀態更新影子為止。

偵測裝置已連線

若要判斷裝置目前是否連線,請在影子文件中包含connected屬性,並使用 MQTT Last Will and Testament (LWT) 訊息,在裝置因錯誤而中斷連線false時,將connected屬性設定為 。

注意

MQTT LWT AWS IoT Device Shadow 服務會忽略傳送至 AWS IoT 預留主題 (開頭為 $ 的主題) 的訊息。不過,它們是由訂閱的用戶端和 AWS IoT 規則引擎處理,因此您需要建立傳送至非預留主題LWT的訊息,以及將MQTTLWT訊息重新發佈為影子更新訊息的規則,以將其發佈至影子的預留更新主題 ShadowTopicPrefix/update

傳送訊息給 Device Shadow 服務 LWT
  1. 建立規則,以重新發佈保留主題上的MQTTLWT訊息。下列範例規則會接聽有關 my/things/myLightBulb/update 主題的訊息,並將其重新發佈至 $aws/things/myLightBulb/shadow/update

    { "rule": { "ruleDisabled": false, "sql": "SELECT * FROM 'my/things/myLightBulb/update'", "description": "Turn my/things/ into $aws/things/", "actions": [ { "republish": { "topic": "$$aws/things/myLightBulb/shadow/update", "roleArn": "arn:aws:iam:123456789012:role/aws_iot_republish" } } ] } }
  2. 當裝置連線到 時 AWS IoT,它會註冊LWT訊息到未保留的主題,以便重新發佈規則進行辨識。在此範例中,該主題是 my/things/myLightBulb/update,它會將連線的內容設定為 false

    { "state": { "reported": { "connected":"false" } } }
  3. 連線後,裝置會在其影子更新主題上發佈訊息 $aws/things/myLightBulb/shadow/update,並報告其目前狀態,其中包括將其 connected 屬性設定為 true

    { "state": { "reported": { "connected":"true" } } }
  4. 在裝置正常中斷連線之前,它會發佈其影子更新主題的訊息 $aws/things/myLightBulb/shadow/update,以報告其最新狀態,其中包括將其 connected 屬性設定為 false

    { "state": { "reported": { "connected":"false" } } }
  5. 如果裝置因錯誤而中斷連線, AWS IoT 訊息代理程式會代表裝置發佈裝置LWT的訊息。重新發佈規則會偵測到此訊息,並發佈影子更新訊息,以更新 Device Shadow 的 connected 屬性。

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。