【问题标题】:Updating a writable property in IOT Central via mqtt from device通过 mqtt 从设备更新 IOT Central 中的可写属性
【发布时间】:2020-11-27 01:57:35
【问题描述】:

我能够通过 Mqtt 连接到 IOT Cental,并将只读属性从设备更新到服务器,将可写属性从服务器更新到设备。

我想知道是否可以将可写属性从设备更新到服务器,以及有效负载的外观如何?

enter image description here

【问题讨论】:

  • 应该非常相似,如果不完全相同的话。您是否尝试在云发送更新后从设备更新值?如果是这样,您需要在响应时包含版本和状态代码。 docs 有一个示例,但不是没有 SDK。

标签: mqtt azure-iot-central


【解决方案1】:

IoT Plug and Play device developer guide 详细描述了如何处理设备模型中的遥测、属性和命令。最简单的情况是您的模型只有一个默认组件。

以下示例显示了按设备更新可写属性的主要步骤。

  1. 使用默认组件创建设备模板abba

  2. 设备abba带有这个模板和它的视图模式

  3. 使用我的Azure IoT Hub Tester模拟设备abba

    请注意,这些版本是经过几个测试属性然后重置为 null 的。

  4. 按设备更新两个属性,例如 Reported(只读属性)和 Desired(可写属性):

  5. 在设备端显示设备孪生:

  6. IoT Central 应用程序视图面板:

    正如您在上面的屏幕 sn-p 中看到的,只读属性立即显示值,但可写属性显示待处理的提示文本。此时,Desired 属性正在等待接受该值。基本上有两种制作方法,比如:

    一个。输入从原始数据中获取的值或

    b.使用 REST PUT 请求调用,请参阅以下屏幕 sn-p:

  7. IoT Central 应用程序视图面板(更新):

    请注意,当该值被接受时,必须手动刷新页面。

我确实建议使用数据导出功能订阅 devicePropertyDesiredChange 主题以接收更改通知,请参阅服务总线队列中收到的消息示例:

更新:

在你的设备模型中使用多个组件的情况下(至少在默认组件后面一个),下面的例子展示了如何按设备更新组件中的可写属性:

  1. 使用组件abc创建新版本:

  2. 模式视图的新版本:

  3. 模拟设备 abba2 在组件 abc 处发送了可写属性 Desired 的更新:

  4. IoT Central 应用显示待处理状态:

  5. 云后端服务在队列中收到通知消息:

  6. 云后端服务将为此可写属性发送一个接受的请求,注意,url 地址显示特定组件的路径:

  7. IoT Central App 在 ComponentA 的视图 Pattern 中显示一个新接受的 Desired 值,例如 abc

就是这样。使用上述步骤,可以从设备端更新在多个组件中声明的任何只读和/或可写属性。请注意,默认组件之外的遥测数据处理方式不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-11
    相关资源
    最近更新 更多