本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
與用戶端裝置影子互動和同步
您可以使用影子管理員元件來管理本機影子,包括用戶端裝置影子。您可以使用影子管理員來執行下列動作:
-
在 Greengrass 元件中與用戶端裝置陰影互動。
-
與 同步用戶端裝置影子 AWS IoT Core。
注意
根據 AWS IoT Core 預設,陰影管理員元件不會與 同步陰影。您必須設定影子管理員元件,以指定要同步的用戶端裝置影子。
先決條件
若要與用戶端裝置影子互動並同步用戶端裝置影子 AWS IoT Core,核心裝置必須符合下列要求:
-
除了用戶端裝置支援的 Greengrass 元件之外,核心裝置還必須執行下列元件:
-
Greengrass nucleus 2.6.0 版或更新版本
-
Shadow Manager 2.2.0 版或更新版本
-
MQTT 橋接器 2.2.0 版或更新版本
-
啟用影子管理員以與用戶端裝置通訊
根據預設,影子管理員元件不會管理用戶端裝置影子。若要啟用此功能,您必須在用戶端裝置和影子管理員元件之間轉送 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。