我正在尝试更新边缘设备的双模块。我现在可以检索模块的设备孪生兄弟,但无法将更新后的所需属性保存回物联网中心。
var moduleTwin = await registryManager.GetTwinAsync("DeviceId", "ModuleId"); moduleTwin.Properties.Desired["key"] = "value"; var updatedTwin = await registryManager.UpdateTwinAsync("DeviceId", moduleTwin, moduleTwin.ETag)
当这个运行时,我得到以下异常
其中“DeviceId”是用红色模糊的值。
我试过使用设备的ETag,但这只是更新了设备的twin,我试过使用ModuleId,而不是DeviceId,这会引发一个DeviceNotFoundException。
如何在这里更新ModuleTwin?
看来 registryManager.UpdateTwinAsync 只能更新设备twin。所以当你用边缘设备双Etag代替 moduleTwin.ETag ,操作将成功。您可以检查您的边缘设备,所需更新的属性在设备孪生而不是模块孪生下。
registryManager.UpdateTwinAsync
moduleTwin.ETag
通过Azure门户更新模块twin似乎也不起作用。
这是一个 similar issue 关于这一点,在Azure IOT SDK for C上,你可以监控它的更新。