Kotlin 如何获取子属性/TwinCollection的元数据/版本?
我正在使用Azure IoT SDK实现Java DeviceTwin功能。调用Kotlin 如何获取子属性/TwinCollection的元数据/版本?,kotlin,azure-iot-sdk,Kotlin,Azure Iot Sdk,我正在使用Azure IoT SDK实现Java DeviceTwin功能。调用startDeviceTwin()时,我会在TwinPropertyCallBack中收到一次报告的和所需的属性 但是,在发送的属性中,我只能获取“根节点”的版本,而不能获取子属性或TwinCollection的版本(它们都是null)。在Azure Portal上,我可以清楚地看到,在JSON的元数据部分中,所有这些文件都有自己的版本。例如: ... "properties": {
startDeviceTwin()
时,我会在TwinPropertyCallBack
中收到一次报告的和所需的属性
但是,在发送的属性
中,我只能获取“根节点”的版本
,而不能获取子属性或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
s的这些版本?它是某种配置还是目前不受支持
在上面的示例中,我希望阻止亮度值的重新处理,因为我的本地状态已经是“版本15”。根据Azure,您应该获得每个属性的最新更新版本。我能够在NodeJS中获得整个元数据对象,包括lastUpdatedVersion,因此类似的功能也可以在Java中使用。相关Github问题发布在: 以下是微软团队的回应 该服务不会按设计将该元数据发送到设备。它是 仅适用于请求设备孪生兄弟的服务客户。在里面 一般来说,您需要依赖文档的整体版本 用于并发保护 如果您在这件事上需要进一步的帮助,请在下面发表评论