與用戶端裝置影子互動和同步 - 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