Azure IoT - 如果服务器和客户端都更改设备孪生属性怎么办?

标签 azure azure-iot-hub azure-iot-sdk

我有一个使用远程监控加速器的 Azure IoT 解决方案。服务器(远程监控网络)和客户端(设备)都在更改设备孪生属性。有时,这些属性会进入“同步”状态,并且似乎无法退出。

那么谁有权更改设备孪生属性以及何时更改的规则是什么?

我使用 IoTHubDeviceClient_LL_SendReportedState() 函数从设备端更改属性,顺便说一句。

最佳答案

Azure IoT 设备孪生代表了可断开分布式的轻量级通用数据(状态)模型,例如面向设备的端面向服务的端。设备孪生支持以转换方式在这些端部之间创建“影子副本”。基本上,每个都拥有写入(或更新)其属性的所有权,另一会收到有关此更改的通知。

enter image description here

基于此通知、版本控制和设备孪生元数据,状态可以以可靠的方式从一端转换到另一端。请注意,轻量级状态机必须在通知更改触发的设备和后端等每一端实现。

上图来自文档Device twins ,其中详细描述了该模型。

更新:

以下屏幕片段是使用设备孪生属性在设备和后端之间转换状态的序列图示例:

enter image description here

在上面的示例中,这个分布式状态机处理设备和后端之间的传输状态:inprocess、ack、done、null。可以创建类似的转换,例如:inprocess、nack、null、后端和设备之间、断开连接的设备等。

此示例使用了附加属性,例如 status 来指示属性 Config 处于过渡状态,但可以添加更多属性,例如原始值、版本等,它们有助于恢复状态等。

关于Azure IoT - 如果服务器和客户端都更改设备孪生属性怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57288383/

相关文章:

azure - Azure 函数中的服务总线连接字符串被拒绝

azure - 使用 ARM 模板从私有(private) Github 存储库部署网站

azure - az 存储上传文件未按预期工作

azure - 将 mongorestore 恢复到 cosmosDB

c# - Azure SDK UnauthorizedException : Put token failed. 状态代码 : 401, 状态描述:未经授权:当 KeyName 为空时,资源 URI 必须

azure - 流分析作业不接收输入

c - Azure IoT SDK - 检查设备是否已注册

azure - Terraform 在未指定的情况下强制将值设置为 null

Azure 流分析作业对于小数据来说昂贵吗?

azure - 使用 Azure 流分析保留最后的值