如何从 Microsoft Azure IoT 中心的 TwinChangeEvents 事件中获取旧设备孪生值?
How to get old device twin value from TwinChangeEvents event in Microsoft Azure IoT Hub?
I created a route for TwinChangeEvents in Microsoft Azure portal and I can Receive device-to-cloud messages 当设备孪生发生变化时。但是消息只包含新的设备孪生值。我需要旧值进行分析,这样我就不必分析整个设备。
有什么办法可以获得旧值吗?
首先,我想指出,Azure IoT Hub 中的孪生所需更改通知和 TwinChangeEvents 的实现每次在服务为更新设备孪生状态已被调用,如果设备孪生状态保持不变(无变化)则无关紧要。此行为的结果是同一设备孪生状态的新版本号。
以下屏幕片段显示了这种情况:
更新孪生状态的REST API调用,可以多次发送:
TwinChangeEvents 消息的屏幕片段 - 版本 37:
TwinChangeEvents 消息的屏幕片段 - 版本 38:
如您所见,上面的孪生状态是相同的(没有变化)但是对于每次调用(第 1 步)我们都有一个新的版本号。
看起来这是一个错误,当双胞胎更改通知在双胞胎状态未更改的情况下起作用时。
换句话说,这种通知应该只有在设备状态发生变化时才有效。
修复此 "bug" 将简化设备中和 Azure IoT 中心路由背后的逻辑。
好吧,下面是我对如何获取旧设备孪生状态的问题的回答。
请注意,此功能目前未在 Azure IoT 中心实现,但向 Azure IoT 基础结构添加一些组件可以解决此问题。
选项 1: - 创建 TwinChangeEvents 流管道,见下图:
根据业务模型要求,ASA 作业可以 运行 在热路径或冷路径中。请注意,对于捕获和 ASA 作业实体,此选项需要额外费用(约 120 美元/月)。
选项2: - 创建TwinChangeEvents Repository(存储),见下图:
Azure 函数由双变化事件触发,负责将它们映射到 Azure Table 存储的行对象。之后可以根据值、版本、时间戳等,从table中查询到具体的孪生状态
I created a route for TwinChangeEvents in Microsoft Azure portal and I can Receive device-to-cloud messages 当设备孪生发生变化时。但是消息只包含新的设备孪生值。我需要旧值进行分析,这样我就不必分析整个设备。
有什么办法可以获得旧值吗?
首先,我想指出,Azure IoT Hub 中的孪生所需更改通知和 TwinChangeEvents 的实现每次在服务为更新设备孪生状态已被调用,如果设备孪生状态保持不变(无变化)则无关紧要。此行为的结果是同一设备孪生状态的新版本号。
以下屏幕片段显示了这种情况:
更新孪生状态的REST API调用,可以多次发送:
TwinChangeEvents 消息的屏幕片段 - 版本 37:
TwinChangeEvents 消息的屏幕片段 - 版本 38:
如您所见,上面的孪生状态是相同的(没有变化)但是对于每次调用(第 1 步)我们都有一个新的版本号。
看起来这是一个错误,当双胞胎更改通知在双胞胎状态未更改的情况下起作用时。 换句话说,这种通知应该只有在设备状态发生变化时才有效。 修复此 "bug" 将简化设备中和 Azure IoT 中心路由背后的逻辑。
好吧,下面是我对如何获取旧设备孪生状态的问题的回答。
请注意,此功能目前未在 Azure IoT 中心实现,但向 Azure IoT 基础结构添加一些组件可以解决此问题。
选项 1: - 创建 TwinChangeEvents 流管道,见下图:
选项2: - 创建TwinChangeEvents Repository(存储),见下图:
Azure 函数由双变化事件触发,负责将它们映射到 Azure Table 存储的行对象。之后可以根据值、版本、时间戳等,从table中查询到具体的孪生状态