将本地设备阴影与同步 Amazon IoT Core - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将本地设备阴影与同步 Amazon IoT Core

通过影子管理器组件Amazon IoT Greengrass,可以将本地设备影子状态与同步Amazon IoT Core。您必须修改影子管理器组件的配置以包含synchronization配置参数,并为您的设备指定Amazon IoT事物名称以及要同步的阴影。

将阴影管理器配置为同步阴影时,它会同步指定阴影的所有状态更改,无论更改发生在本地卷影文档还是云影文档中。

您还可以指定阴影管理器组件是实时同步阴影还是定期同步阴影。默认情况下,影子管理器组件会实时同步阴影,因此每次更新发生Amazon IoT Core时,核心设备都会发送和接收影子更新。您可以配置定期间隔以减少带宽使用量和费用。

先决条件

要与本地阴影同步Amazon IoT Core,必须将 Greengrass 核心设备的策略配置为允许以下影Amazon IoT子策略操作。Amazon IoT Core

  • iot:GetThingShadow

  • iot:UpdateThingShadow

  • iot:DeleteThingShadow

有关更多信息,请参阅下列内容:

配置影子管理器组件

影子管理器需要一个阴影名称映射列表,才能将本地卷影文档中的阴影状态信息同步到中的Amazon IoT Core云影文档。

要同步影子状态,请创建一个包含该aws.greengrass.ShadowManager组件的部署,并在部署的影子管理器synchronize配置的配置参数中指定要同步的阴影。

注意

要使核心设备能够与客户端设备影子进行交互,您还必须配置和部署 MQTT 桥接组件。有关更多信息,请参阅启用影子管理器以与客户端设备通信

以下示例配置更新指示影子管理器组件将以下阴影与Amazon IoT Core同步:

  • 核心设备的经典影子

  • MyCoreShadow为核心设备命名的

  • 名为物联网的经典影子 MyDevice2

  • 命名的阴影MyShadowAMyShadowB对于一个名为 IoT 的物联网事物 MyDevice1

此配置更新指定与阴影实时Amazon IoT Core同步。如果您使用影子管理器 v2.1.0 或更高版本,则可以将影子管理器组件配置为定期同步阴影。要配置此功能,请将同步策略更改为periodic,然后为间隔指定delay以秒为单位。有关更多信息,请参阅影子管理器组件的策略配置参数

此配置更新指定在Amazon IoT Core和核心设备之间双向同步阴影。如果您使用阴影管理器 v2.2.0 或更高版本,则可以将阴影管理器组件配置为仅在一个方向上同步阴影。要配置此功能,请将同步更改directiondeviceToCloudcloudToDevice。有关更多信息,请参阅影子管理器组件的方向配置参数

{ "strategy": { "type": "realTime" }, "synchronize": { "coreThing": { "classic": true, "namedShadows": [ "MyCoreShadow" ] }, "shadowDocuments": [ { "thingName": "MyDevice1", "classic": false, "namedShadows": [ "MyShadowA", "MyShadowB" ] }, { "thingName": "MyDevice2", "classic": true, "namedShadows": [ ] } ], "direction": "betweenDeviceAndCloud" } }

同步局部阴影

当 Greengrass 核心设备连接到Amazon IoT云端时,影子管理器会对您在组件配置中指定的阴影执行以下任务。行为取决于您指定的阴影同步方向配置选项。默认情况下,阴影管理器使用该betweenDeviceAndCloud选项来同步双向阴影。如果您使用阴影管理器 v2.2.0 或更高版本,则可以将核心设备配置为仅在一个方向上同步阴影,可以是cloudToDevice或。deviceToCloud

  • 如果阴影同步方向配置为betweenDeviceAndCloudcloudToDevice,则影子管理器将从中的云影文档中Amazon IoT Core检索报告的状态信息。然后,它会更新本地存储的影子文档以同步设备状态。

  • 如果阴影同步方向配置为betweenDeviceAndClouddeviceToCloud,则影子管理器会将设备的当前状态发布到云影文档。

影子合并冲突行为

在某些情况下,例如当核心设备与互联网断开连接时,在影子管理器同步更改之前,本地影子服务和Amazon IoT云中的影子可能会发生变化。因此,本地影子服务和Amazon IoT云之间的期望状态和报告的状态会有所不同

当影子管理器同步阴影时,它会根据以下行为合并更改:

  • 如果您使用低于 v2.2.0 的卷影管理器版本,或者指定了betweenDeviceAndCloud阴影同步方向,则以下行为适用:

    • 当卷影的所需状态下存在合并冲突时,影子管理器会用来自Amazon IoT云的值覆盖本地卷影文档的冲突部分。

    • 当阴影的报告状态下存在合并冲突时,影子管理器会使用本地卷影文档中的值覆盖Amazon IoT云中阴影的冲突部分。

  • 当您指定deviceToCloud阴影同步方向时,阴影管理器会使用本地阴影文档中的值覆盖Amazon IoT云中阴影的冲突部分。

  • 当您指定cloudToDevice阴影同步方向时,阴影管理器会使用来自Amazon IoT云的值覆盖本地卷影文档中冲突的部分。