我正在使用Azure作为IoT DeviceTwin功能。在调用startDeviceTwin()
时,我只在TwinPropertyCallBack
中接收一次报告的和所需的属性。
但是,在发送的Property
中,我只能获得‘根节点’的version
,而不是子属性或TwinCollection
的(它们都是null
)。在Azure Portal上,我可以清楚地看到,在JSON的元数据部分,它们都有自己的版本。示例:
...
"properties": {
"desired": {
"Broadcast": {
"0": {
"Scene": 2,
"Brightness": 13
}
},
"$metadata": {
"$lastUpdated": "2020-12-01T07:53:53.0372127Z",
"$lastUpdatedVersion": 17,
"Broadcast": {
"0": {
"$lastUpdated": "2020-12-01T07:53:53.0372127Z",
"$lastUpdatedVersion": 17,
"Scene": {
"$lastUpdated": "2020-12-01T07:53:53.0372127Z",
"$lastUpdatedVersion": 17
},
"Brightness": {
"$lastUpdated": "2020-12-01T07:28:08.5730028Z",
"$lastUpdatedVersion": 15
}
},
"$lastUpdated": "2020-12-01T07:53:53.0372127Z",
"$lastUpdatedVersion": 17
}
},
"$version": 17
},
...
如何接收嵌套TwinCollection
的这些版本?它是某种配置,还是只是目前不支持?
在上面的例子中,我想防止亮度值的再处理,因为我的本地状态已经在'Version 15‘了。
发布于 2020-12-09 00:37:50
相关的Github问题发布于:azure/azure-iot java/一期
下面是来自MicrosoftTeam的响应。
服务不会通过设计将元数据发送到设备。它只适用于为设备的孪生设备请求服务的客户端。通常,您需要依赖文档的整体版本来保护并发性。
如果您在这件事上需要进一步帮助,请在下面评论。
发布于 2020-12-02 17:22:26
根据Azure 文档,您应该获得每个属性的lastUpdatedVersion。我能够获得整个metaData对象,包括NodeJS中的lastUpdatedVersion,所以类似的功能也应该在NodeJS中工作。
https://stackoverflow.com/questions/65105208
复制相似问题