如何更新和订阅Shadows?

0

【以下的问题经过翻译处理】 我正在尝试在Shadow中设置数据值,并让我的自定义组件在核心设备上获取该值。但是我遇到了组件无法获取该值的问题。在排除故障时,我认为新的Shadow值根本不会到达组件。我回退并查看了ShadowManager和云同步来排除每个步骤的问题。

我的ShadowManager配置如下:

{
	"strategy": {
		"type": "realTime"
	},
	"synchronize": {
		"coreThing": {
			"classic": true
		},
		"namedShadows": [
			"test",
			"dsvvefvfq"
		],
		"direction": "betweenDeviceAndCloud"
	}
}

我理解这个配置是,如果classic shadow或两个命名shadow(test和dsvvefvfq)在核心设备或云端(云->核心)或(核心->云)上更改,则立即进行同步。

然后,我在thing中找到中编辑名为“dsvvefvfq”的shadow。当我观察日志文件时,我立即看到:

2022-09-27T16:56:55.626Z [INFO] (pool-2-thread-145) com.aws.greengrass.shadowmanager.ShadowManagerDAOImpl: Updating sync info. {thing name=SliceOfPi, shadow name=dsvvefvfq, cloud-version=14, local-version=9}
2022-09-27T16:56:55.630Z [INFO] (pool-2-thread-145) com.aws.greengrass.shadowmanager.sync.strategy.BaseSyncStrategy: sync. Executing sync request. {Type=CloudUpdateSyncRequest, thing name=SliceOfPi, shadow name=dsvvefvfq}

奇怪的是,直到我再次编辑shadow,我才收到“ Successfully updated shadow”的消息。我期望看到一系列遵循此模式的日志条目:

profile picture
专家
已提问 6 个月前3 查看次数
1 回答
0

【以下的回答经过翻译处理】 通常来说,云端会使用“desired”属性来修改shadow。设备会看到“desired”属性,将其应用于设备上,然后更新“reported”属性。如果设备自己改变了状态,那么它只会改变“reported”属性。

profile picture
专家
已回答 6 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则