【发布时间】:2020-11-27 01:57:35
【问题描述】:
我能够通过 Mqtt 连接到 IOT Cental,并将只读属性从设备更新到服务器,将可写属性从服务器更新到设备。
我想知道是否可以将可写属性从设备更新到服务器,以及有效负载的外观如何?
【问题讨论】:
-
应该非常相似,如果不完全相同的话。您是否尝试在云发送更新后从设备更新值?如果是这样,您需要在响应时包含版本和状态代码。 docs 有一个示例,但不是没有 SDK。
我能够通过 Mqtt 连接到 IOT Cental,并将只读属性从设备更新到服务器,将可写属性从服务器更新到设备。
我想知道是否可以将可写属性从设备更新到服务器,以及有效负载的外观如何?
【问题讨论】:
IoT Plug and Play device developer guide 详细描述了如何处理设备模型中的遥测、属性和命令。最简单的情况是您的模型只有一个默认组件。
以下示例显示了按设备更新可写属性的主要步骤。
设备abba带有这个模板和它的视图模式:
使用我的Azure IoT Hub Tester模拟设备abba:
请注意,这些版本是经过几个测试属性然后重置为 null 的。
按设备更新两个属性,例如 Reported(只读属性)和 Desired(可写属性):
在设备端显示设备孪生:
IoT Central 应用程序视图面板:
正如您在上面的屏幕 sn-p 中看到的,只读属性立即显示值,但可写属性显示待处理的提示文本。此时,Desired 属性正在等待接受该值。基本上有两种制作方法,比如:
一个。输入从原始数据中获取的值或
b.使用 REST PUT 请求调用,请参阅以下屏幕 sn-p:
IoT Central 应用程序视图面板(更新):
请注意,当该值被接受时,必须手动刷新页面。
我确实建议使用数据导出功能订阅 devicePropertyDesiredChange 主题以接收更改通知,请参阅服务总线队列中收到的消息示例:
更新:
在你的设备模型中使用多个组件的情况下(至少在默认组件后面一个),下面的例子展示了如何按设备更新组件中的可写属性:
使用组件abc创建新版本:
模式视图的新版本:
模拟设备 abba2 在组件 abc 处发送了可写属性 Desired 的更新:
IoT Central 应用显示待处理状态:
云后端服务在队列中收到通知消息:
云后端服务将为此可写属性发送一个接受的请求,注意,url 地址显示特定组件的路径:
IoT Central App 在 ComponentA 的视图 Pattern 中显示一个新接受的 Desired 值,例如 abc:
就是这样。使用上述步骤,可以从设备端更新在多个组件中声明的任何只读和/或可写属性。请注意,默认组件之外的遥测数据处理方式不同。
【讨论】: