如何获取子属性/TwinCollection 的元数据/版本?
How to get Metadata / versions for sub-properties / TwinCollection?
我正在使用 Azure IoT SDK 实现 Java DeviceTwin 功能。在调用 startDeviceTwin()
时,我在 TwinPropertyCallBack
.
中收到一次报告的和所需的属性
但是,在发送的Property
里面,我只能得到'root node'的version
,对于子属性或者TwinCollection
s(他们都是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'。
根据 Azure documentation,您应该获得每个 属性 的 lastUpdatedVersion。我能够在 NodeJS 中获取包括 lastUpdatedVersion 在内的整个元数据对象,因此类似的功能也应该在 Java 中工作。
相关 Github 问题发布于:Azure/azure-iot-sdk-java/issue
以下是 MicrosoftTeam 的回复。
The service does not send that metadata to devices by design. It is
only available to service clients who request for a device's twin. In
general, you will need to rely on the overall version of the document
for concurrency protection.
如果您在这件事上需要进一步的帮助,请在下面发表评论。
我正在使用 Azure IoT SDK 实现 Java DeviceTwin 功能。在调用 startDeviceTwin()
时,我在 TwinPropertyCallBack
.
但是,在发送的Property
里面,我只能得到'root node'的version
,对于子属性或者TwinCollection
s(他们都是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'。
根据 Azure documentation,您应该获得每个 属性 的 lastUpdatedVersion。我能够在 NodeJS 中获取包括 lastUpdatedVersion 在内的整个元数据对象,因此类似的功能也应该在 Java 中工作。
相关 Github 问题发布于:Azure/azure-iot-sdk-java/issue
以下是 MicrosoftTeam 的回复。
The service does not send that metadata to devices by design. It is only available to service clients who request for a device's twin. In general, you will need to rely on the overall version of the document for concurrency protection.
如果您在这件事上需要进一步的帮助,请在下面发表评论。