对于Microsoft Azure iotedge (和堆栈溢出--这是我的第一篇文章)和模块双胞胎是如何工作的,我仍然相当缺乏经验,并且对于从报告的模块孪生部分删除过时的属性有问题。
我已经将两个属性从一个设备迁移到模块双胞胎中的另一个设备上,但是无法从报告中删除这些属性,而且我理解将它们设置为null应该可以做到这一点(将它们设置为null,并在所需的删除中更新它们只从所需的孪生体中删除它们)。过时的属性也不存在于设备上的模块孪生体中。
我尝试过更新报告-使用使用C#包的Microsoft.Azure控制台应用程序将过时的属性设置为null -但这似乎也不起作用。
await registryManager.UpdateTwinAsync(deviceId, moduleId, removeProperties, eTag);
由于我的字符串removeProperties类似于以下内容(使用此路由进行所需的更新就像一种魅力一样)
{
{
"properties": {
"reported": {
"foo": {
"bar": null
}
}
}
}有谁能建议删除这些属性的方法吗?
发布于 2022-04-22 12:01:28
无法通过注册表管理器更新报告的属性。然而,它可以使用设备的标识来完成。以同样的方式编写控制台程序来用service更新双胞胎,您可以使用device (假设设备离线)进行更新。
例如,如果您有一个名为twin.json的文件
{
"foo": {
"bar": null
}
}您可以像这样更新报告的属性:
var text = await File.ReadAllTextAsync("./twin.json");
var deviceClient = DeviceClient.CreateFromConnectionString("very-secret-connection-string");
var twinCollection = new TwinCollection(text);
await deviceClient.UpdateReportedPropertiesAsync(twinCollection);https://stackoverflow.com/questions/71967347
复制相似问题