我有一个使用远程监控加速器的 Azure IoT 解决方案。服务器(远程监控网络)和客户端(设备)都在更改设备孪生属性。有时,这些属性会进入“同步”状态,并且似乎无法退出。
那么谁有权更改设备孪生属性以及何时更改的规则是什么?
我使用 IoTHubDeviceClient_LL_SendReportedState() 函数从设备端更改属性,顺便说一句。
最佳答案
Azure IoT 设备孪生代表了可断开分布式端的轻量级通用数据(状态)模型,例如面向设备的端和面向服务的端。设备孪生支持以转换方式在这些端部之间创建“影子副本”。基本上,每个端都拥有写入(或更新)其属性的所有权,另一端会收到有关此更改的通知。
基于此通知、版本控制和设备孪生元数据,状态可以以可靠的方式从一端转换到另一端。请注意,轻量级状态机必须在通知更改触发的设备和后端等每一端实现。
上图来自文档Device twins ,其中详细描述了该模型。
更新:
以下屏幕片段是使用设备孪生属性在设备和后端之间转换状态的序列图示例:
在上面的示例中,这个分布式状态机处理设备和后端之间的传输状态:inprocess、ack、done、null。可以创建类似的转换,例如:inprocess、nack、null、后端和设备之间、断开连接的设备等。
此示例使用了附加属性,例如 status 来指示属性 Config 处于过渡状态,但可以添加更多属性,例如原始值、版本等,它们有助于恢复状态等。
关于Azure IoT - 如果服务器和客户端都更改设备孪生属性怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57288383/