Azure IoT - 如果服务器和客户端都在更改设备孪生属性怎么办?
Azure IoT - What if both server and client are changing device twin properties?
我有一个使用远程监控加速器的 Azure IoT 解决方案。服务器(远程监控网络)和客户端(设备)都在更改设备孪生属性。有时这些属性会进入 "syncing" 状态并且似乎无法摆脱它。
那么谁有权更改设备孪生属性以及何时更改的规则是什么?
我使用 IoTHubDeviceClient_LL_SendReportedState() 函数从设备端更改属性,顺便说一句。
Azure IoT Device Twin 代表可断开连接的分布式 ends 的轻量级通用数据(状态)模型,例如 device-facing end 面向服务端。 Device Twin 支持以转换方式在这些端点之间创建 "shadow copy"。基本上,每个 end 都拥有写入(或更新)其 属性 的所有权,另一个 end 会收到此更改的通知。
基于此通知、版本控制和设备孪生元数据,状态可以以可靠的方式从一个 end 转移到另一个。请注意,轻量级状态机必须在每一端实现,例如由通知更改触发的设备和后端。
上图来自文献Device twins,里面对这个模型有详细的描述。
更新:
以下屏幕片段是使用设备孪生属性在设备和后端之间转换状态的序列图示例:
在上面的例子中,这个分布式状态机处理一个来自inprocess,ack,done,null Device和Back-end之间的传输状态。可以创建类似的转换,例如:inprocess、nack、null、后端和设备之间、断开设备等。
此示例使用了额外的 属性,例如 status 来指示 属性 Config在过渡状态,但可以添加更多,例如原始值,版本等,它们有助于恢复状态等
我有一个使用远程监控加速器的 Azure IoT 解决方案。服务器(远程监控网络)和客户端(设备)都在更改设备孪生属性。有时这些属性会进入 "syncing" 状态并且似乎无法摆脱它。
那么谁有权更改设备孪生属性以及何时更改的规则是什么?
我使用 IoTHubDeviceClient_LL_SendReportedState() 函数从设备端更改属性,顺便说一句。
Azure IoT Device Twin 代表可断开连接的分布式 ends 的轻量级通用数据(状态)模型,例如 device-facing end 面向服务端。 Device Twin 支持以转换方式在这些端点之间创建 "shadow copy"。基本上,每个 end 都拥有写入(或更新)其 属性 的所有权,另一个 end 会收到此更改的通知。
基于此通知、版本控制和设备孪生元数据,状态可以以可靠的方式从一个 end 转移到另一个。请注意,轻量级状态机必须在每一端实现,例如由通知更改触发的设备和后端。
上图来自文献Device twins,里面对这个模型有详细的描述。
更新:
以下屏幕片段是使用设备孪生属性在设备和后端之间转换状态的序列图示例:
在上面的例子中,这个分布式状态机处理一个来自inprocess,ack,done,null Device和Back-end之间的传输状态。可以创建类似的转换,例如:inprocess、nack、null、后端和设备之间、断开设备等。
此示例使用了额外的 属性,例如 status 来指示 属性 Config在过渡状态,但可以添加更多,例如原始值,版本等,它们有助于恢复状态等