DesiredProperty更改等待

时间:2017-12-14 10:24:47

标签: azure-iot-hub

外部源使用UpdateTwin发送desiredProperty更改命令。

另一个来源的同一属性已经有另一条更改消息。此挂起的更改尚未从设备报告。

是否存在一种方法,IoT Hub阻止新的更改命令,直到从设备报告第一个desiredProperty命令?

同样在UpdateTwin中,如何使用可选参数ModuleId?

编辑:我的语法在这句话中不正确“直到从设备报告第一个DesiredProperty命令”我的意思是,直到设备通过ReportedProperties确认所需属性的挂起更改。

3 个答案:

答案 0 :(得分:0)

设备双胞胎代表两端之间的状态,例如云后端和真实设备。这两个端部通过互联网上的分布式可断开连接,通过面向设备和面向服务的端点相互连接。

设备双胞胎有一个内置的通用支持,用于同步这两个端点以获得设备双胞胎的最终状态,例如所需(面向服务的一面)属性和报告的(面向设备的一面)属性,包括其元数据和孪生变化通知。

基于上述设备,双胞胎属性及其更改通知可以在后端和设备之间构建任何状态机,以便在分布式可断开通信模型中运行。

设备双方的每一方都有责任进行有效的状态传输。在无效或处于暂挂状态的情况下,必须使用状态代码拒绝该请求,直到它为下一次/新传输做好准备。

我建议阅读this文档,其中描述了设备双胞胎中更改状态的实现。

答案 1 :(得分:0)

@Roman Kiss在他的回答中很好地描述了Device Twins。我还是想补充一下他的回答。 正如您从罗马的答案和他指出的文档中所理解的那样,设备双胞胎的本质是没有开箱即用的方法来取消待处理的设备双变更请求。 在我看来,你正在尝试为设备排队状态更改,而双胞胎并非设计或意图。 同样在您的问题" ... 直到从设备报告第一个desiredProperty命令 ...",此语句不正确,因为设备未报告所需的属性,它们会收到他们。他们报告报告的属性。 实现与您要实现的目标接近的一种方法可能是让设备使用报告属性更新其Twin,这将指示它已切换到所需状态,并且在通过所需属性设置新状态之前,您将检查最新报告的财产及其更新时间,以确保设备确实已收到该财产。 您还可以查看Jobs作为管理IoT Hub任务的方法。

关于ModuleId参数的问题,在使用Azure IoT Edge设备上运行的模块时将使用此问题。 IoT Edge设备的每个模块都有自己的Module Twin,使用托管模块和ModuleId的Edge设备的Device Id进行寻址。

答案 2 :(得分:0)

Cloud2Device消息具有TTL(TimeToLive)功能。这可能是该任务的一种解决方法。请参阅Message expiration文档。