本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
与客户端设备影子交互并同步
您可以使用影子管理器组件来管理局部阴影,包括客户端设备阴影。您可以使用影子管理器执行以下操作:
-
在 Greengrass 组件中与客户端设备阴影进行交互。
-
将客户端设备影子同步Amazon IoT Core.
阴影管理器组件不会将阴影与Amazon IoT Core默认情况下。您必须配置影子管理器组件,以指定要同步的客户端设备影子。
先决条件
与客户端设备影子交互并将客户端设备影子同步到Amazon IoT Core,Core Device 必须满足以下要求:
-
核心设备必须运行以下组件,除了支持客户端设备的 Greengrass 组件:
-
Greengrass 核v2.2.2.2.2.2.0 或后续版本
-
影子管理器v2.2.2.2.2.2.0 或后续版本
-
MQTT bridv2.2.2.2.2.2.0 或后续版本
-
-
这些区域有:客户端设备身份验证必须将组件配置为允许客户端设备在上进行通信Device Shadow.
启用影子管理器与客户端设备通信
默认情况下,影子管理器组件不管理客户端设备影子。要启用此功能,必须在客户端设备和影子管理器组件之间中继 MQTT 消息。客户端设备使用 MQTT 消息来接收和发送设备影子更新。影子管理器组件订阅本地 Greengrass 发布/订阅界面,因此您可以配置MQTT 桥组件中继 MQTT 消息Device Shadow.
MQTT 桥组件使用一个主题映射列表,每个主题映射都指定消息源和消息目标。要使影子管理器组件能够管理客户端设备影子,请部署 MQTT 桥组件,并为客户端设备影子指定影子主题。您必须将网桥配置为在本地 MQTT 和本地发布/订阅之间双向中继消息。
要将 MQTT 桥组件部署到核心设备或核心设备组,创建部署包括aws.greengrass.clientdevices.mqtt.Bridge
组件。指定主题映射,mqttTopicMapping
,位于部署的 MQTT 桥组件配置中。
使用以下示例配置 MQTT 桥组件,以启用客户端设备与影子管理器组件之间的通信。
您可以在Amazon IoT Greengrass控制台。如果您将Amazon IoT GreengrassAPI,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" } } }
与组件中的客户端设备影子进行交互
您可以开发使用本地 shadow 服务读取和修改客户端设备的本地影子文档的自定义组件。有关更多信息,请参阅 与组件中的阴影进行交互。
将客户端设备影子同步Amazon IoT Core
您可以将卷影管理器组件配置为将本地客户端设备的影子状态与Amazon IoT Core. 有关更多信息,请参阅将本地设备影子同步Amazon IoT Core。