與用戶端裝置陰影互動並同步 - AWS IoT Greengrass

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

與用戶端裝置陰影互動並同步

您可以使用陰影管理員元件來管理本機陰影,包括用戶端裝置陰影。您可以使用陰影管理員執行下列作業:

  • 與 Greengrass 組件中的客戶端設備陰影進行交互。

  • 與用戶端裝置陰影同步AWS IoT Core。

注意

根AWS IoT Core據預設,陰影管理員組件不會與陰影同步。您必須設定陰影管理員元件,以指定要同步的用戶端裝置陰影。

必要條件

若要與用戶端裝置陰影互動並將用戶端裝置陰影與之同步AWS IoT Core,核心裝置必須符合下列需求:

啟用陰影管理員與用戶端裝置通訊

根據預設,陰影管理員元件不會管理用戶端裝置的陰影。若要啟用此功能,您必須在用戶端裝置和陰影管理員元件之間轉送 MQTT 訊息。用戶端裝置會使用 MQTT 訊息來接收和傳送裝置陰影更新。陰影管理員元件會訂閱本機 Greengrass 發佈/訂閱介面,因此您可以將 MQTT 橋接元件設定為轉送裝置陰影主題上的 MQTT 訊息。

MQTT 橋接器元件會使用主題對應清單,每個主題對應都會指定訊息來源和訊息目的地。若要讓陰影管理員元件管理用戶端裝置陰影,請部署 MQTT 橋接器元件,並指定用戶端裝置陰影的陰影主題。您必須將橋接器設定為在本機 MQTT 與本機發佈/訂閱之間雙向轉送訊息。

若要將 MQTT 橋接元件部署到核心裝置或核心裝置群組,請建立包含元件的部署aws.greengrass.clientdevices.mqtt.Bridge在部署的 MQTT 橋接器元件組態中指定主題對應。mqttTopicMapping

使用下列範例來設定 MQTT 橋接器元件,以啟用用戶端裝置與陰影管理員元件之間的通訊。

注意

您可以在AWS IoT Greengrass主控台中使用這些設定範例。如果您使用 AWS IoT Greengrass API,merge組態更新需要序列化的 JSON 物件,因此您必須將下列 JSON 物件序列化為字串。如需詳細資訊,請參閱 更新零組件組態

範例:管理所有用戶端裝置陰影

下列 MQTT 橋接器設定範例可讓陰影管理員管理所有用戶端裝置的所有陰影。

{ "mqttTopicMapping": { "ShadowsLocalMqttToPubsub": { "topic": "$aws/things/+/shadow/#", "source": "LocalMqtt", "target": "Pubsub" }, "ShadowsPubsubToLocalMqtt": { "topic": "$aws/things/+/shadow/#", "source": "Pubsub", "target": "LocalMqtt" } } }
範例:管理用戶端裝置的陰影

下列 MQTT 橋接器設定範例可讓陰影管理員管理名為的用戶端裝置的所有陰影。MyClientDevice

{ "mqttTopicMapping": { "ShadowsLocalMqttToPubsub": { "topic": "$aws/things/MyClientDevice/shadow/#", "source": "LocalMqtt", "target": "Pubsub" }, "ShadowsPubsubToLocalMqtt": { "topic": "$aws/things/MyClientDevice/shadow/#", "source": "Pubsub", "target": "LocalMqtt" } } }
範例:管理所有用戶端裝置的已命名陰影

下列 MQTT 橋接器組態範例可讓陰影管理員管理DeviceConfiguration為所有用戶端裝置命名的陰影。

{ "mqttTopicMapping": { "ShadowsLocalMqttToPubsub": { "topic": "$aws/things/+/shadow/name/DeviceConfiguration/#", "source": "LocalMqtt", "target": "Pubsub" }, "ShadowsPubsubToLocalMqtt": { "topic": "$aws/things/+/shadow/name/DeviceConfiguration/#", "source": "Pubsub", "target": "LocalMqtt" } } }
範例:管理所有用戶端裝置的未命名陰影

下列 MQTT 橋接器組態範例可讓陰影管理員管理所有用戶端裝置的未命名陰影,但未命名陰影。

{ "mqttTopicMapping": { "DeleteShadowLocalMqttToPubsub": { "topic": "$aws/things/+/shadow/delete", "source": "LocalMqtt", "target": "Pubsub" }, "DeleteShadowPubsubToLocalMqtt": { "topic": "$aws/things/+/shadow/delete/#", "source": "Pubsub", "target": "LocalMqtt" }, "GetShadowLocalMqttToPubsub": { "topic": "$aws/things/+/shadow/get", "source": "LocalMqtt", "target": "Pubsub" }, "GetShadowPubsubToLocalMqtt": { "topic": "$aws/things/+/shadow/get/#", "source": "Pubsub", "target": "LocalMqtt" }, "UpdateShadowLocalMqttToPubsub": { "topic": "$aws/things/+/shadow/update", "source": "LocalMqtt", "target": "Pubsub" }, "UpdateShadowPubsubToLocalMqtt": { "topic": "$aws/things/+/shadow/update/#", "source": "Pubsub", "target": "LocalMqtt" } } }

與元件中的用戶端裝置陰影互動

您可以開發使用本機陰影服務來讀取和修改用戶端裝置的本機陰影文件的自訂元件。如需詳細資訊,請參閱 與組件中的陰影互動

同步用戶端裝置陰影 AWS IoT Core

您可以將陰影管理員元件設定為與同步處理本機用戶端裝置陰影狀態AWS IoT Core。如需更多詳細資訊,請參閱 同步本地設備陰影 AWS IoT Core