外部源使用UpdateTwin发送desiredProperty更改命令。
另一个来源的同一属性已经有另一条更改消息。此挂起的更改尚未从设备报告。
是否存在一种方法,IoT Hub阻止新的更改命令,直到从设备报告第一个desiredProperty命令?
同样在UpdateTwin中,如何使用可选参数ModuleId?
编辑:我的语法在这句话中不正确“直到从设备报告第一个DesiredProperty命令”我的意思是,直到设备通过ReportedProperties确认所需属性的挂起更改。
答案 0 :(得分:0)
设备双胞胎代表两端之间的状态,例如云后端和真实设备。这两个端部通过互联网上的分布式可断开连接,通过面向设备和面向服务的端点相互连接。
设备双胞胎有一个内置的通用支持,用于同步这两个端点以获得设备双胞胎的最终状态,例如所需(面向服务的一面)属性和报告的(面向设备的一面)属性,包括其元数据和孪生变化通知。
基于上述设备,双胞胎属性及其更改通知可以在后端和设备之间构建任何状态机,以便在分布式可断开通信模型中运行。
设备双方的每一方都有责任进行有效的状态传输。在无效或处于暂挂状态的情况下,必须使用状态代码拒绝该请求,直到它为下一次/新传输做好准备。
我建议阅读this文档,其中描述了设备双胞胎中更改状态的实现。
答案 1 :(得分:0)
关于ModuleId参数的问题,在使用Azure IoT Edge设备上运行的模块时将使用此问题。 IoT Edge设备的每个模块都有自己的Module Twin,使用托管模块和ModuleId的Edge设备的Device Id进行寻址。
答案 2 :(得分:0)
Cloud2Device消息具有TTL(TimeToLive)功能。这可能是该任务的一种解决方法。请参阅Message expiration文档。