本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将本地设备阴影与同步 AWS IoT Core
通过影子管理器组件AWS IoT Greengrass,可以将本地设备影子状态与同步AWS IoT Core。您必须修改影子管理器组件的配置以包含synchronization
配置参数,并为您的设备指定AWS IoT事物名称以及要同步的阴影。
将阴影管理器配置为同步阴影时,它会同步指定阴影的所有状态更改,无论更改发生在本地卷影文档还是云影文档中。
您还可以指定阴影管理器组件是实时同步阴影还是定期同步阴影。默认情况下,影子管理器组件会实时同步阴影,因此每次更新发生AWS IoT Core时,核心设备都会发送和接收影子更新。您可以配置定期间隔以减少带宽使用量和费用。
先决条件
要与本地阴影同步AWS IoT Core,必须将 Greengrass 核心设备的策略配置为允许以下影AWS IoT子策略操作。AWS IoT Core
-
iot:GetThingShadow
-
iot:UpdateThingShadow
-
iot:DeleteThingShadow
有关更多信息,请参阅下列内容:
-
AWS IoT Core《AWS IoT开发者指南》中的@@ 策略操作
配置影子管理器组件
影子管理器需要一个阴影名称映射列表,才能将本地卷影文档中的阴影状态信息同步到中的AWS IoT Core云影文档。
要同步影子状态,请创建一个包含该aws.greengrass.ShadowManager组件的部署,并在部署的影子管理器synchronize
配置的配置参数中指定要同步的阴影。
注意
要使核心设备能够与客户端设备影子进行交互,您还必须配置和部署 MQTT 桥接组件。有关更多信息,请参阅启用影子管理器以与客户端设备通信。
以下示例配置更新指示影子管理器组件将以下阴影与AWS IoT Core同步:
-
核心设备的经典影子
-
MyCoreShadow
为核心设备命名的 -
名为物联网的经典影子
MyDevice2
-
命名的阴影
MyShadowA
,MyShadowB
对于一个名为 IoT 的物联网事物MyDevice1
此配置更新指定与阴影实时AWS IoT Core同步。如果您使用影子管理器 v2.1.0 或更高版本,则可以将影子管理器组件配置为定期同步阴影。要配置此功能,请将同步策略更改为periodic
,然后为间隔指定delay
以秒为单位。有关更多信息,请参阅影子管理器组件的策略配置参数。
此配置更新指定在AWS IoT Core和核心设备之间双向同步阴影。如果您使用阴影管理器 v2.2.0 或更高版本,则可以将阴影管理器组件配置为仅在一个方向上同步阴影。要配置此功能,请将同步更改direction
为deviceToCloud
或cloudToDevice
。有关更多信息,请参阅影子管理器组件的方向配置参数。
{ "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 核心设备连接到AWS IoT云端时,影子管理器会对您在组件配置中指定的阴影执行以下任务。行为取决于您指定的阴影同步方向配置选项。默认情况下,阴影管理器使用该betweenDeviceAndCloud
选项来同步双向阴影。如果您使用阴影管理器 v2.2.0 或更高版本,则可以将核心设备配置为仅在一个方向上同步阴影,可以是cloudToDevice
或。deviceToCloud
-
如果阴影同步方向配置为
betweenDeviceAndCloud
或cloudToDevice
,则影子管理器将从中的云影文档中AWS IoT Core检索报告的状态信息。然后,它会更新本地存储的影子文档以同步设备状态。 -
如果阴影同步方向配置为
betweenDeviceAndCloud
或deviceToCloud
,则影子管理器会将设备的当前状态发布到云影文档。
影子合并冲突行为
在某些情况下,例如当核心设备与互联网断开连接时,在影子管理器同步更改之前,本地影子服务和AWS IoT云中的影子可能会发生变化。因此,本地影子服务和AWS IoT云之间的期望状态和报告的状态会有所不同
当影子管理器同步阴影时,它会根据以下行为合并更改:
-
如果您使用低于 v2.2.0 的卷影管理器版本,或者指定了
betweenDeviceAndCloud
阴影同步方向,则以下行为适用:-
当卷影的所需状态下存在合并冲突时,影子管理器会用来自AWS IoT云的值覆盖本地卷影文档的冲突部分。
-
当阴影的报告状态下存在合并冲突时,影子管理器会使用本地卷影文档中的值覆盖AWS IoT云中阴影的冲突部分。
-
-
当您指定
deviceToCloud
阴影同步方向时,阴影管理器会使用本地阴影文档中的值覆盖AWS IoT云中阴影的冲突部分。 -
当您指定
cloudToDevice
阴影同步方向时,阴影管理器会使用来自AWS IoT云的值覆盖本地卷影文档中冲突的部分。