【问题标题】:IoT Hub message payload - how to define Application Properties and Body?IoT 中心消息负载 - 如何定义应用程序属性和正文?
【发布时间】:2019-05-09 10:53:37
【问题描述】:

在发送到 IoT 中心的消息中定义/创建应用程序属性需要什么?

我有一个演示设备,我使用 C 客户端 SDK 创建消息,一切正常。这些传入消息可以根据 Application Property 值进行路由,并且 EventData 参数在 Azure Function 中正确设置,该函数在 IoT Hub 上进行侦听。

另一台设备也在向同一个 IoT 中心发送数据。在此设备上运行的代码是由我的客户直接开发的,但我怀疑他们是否使用了 SDK。相反,我假设他们自己创建了整个有效载荷。

在我看来,传入的 JSON 看起来基本相同,就像使用 SDK 构建的那样。它包含 applicationProperties 部分和 body 部分。

{
  "applicationProperties": {
    "type": "telemetry",
    "version": "1.0"
  },
  "body": {
    "device_id": "sensor1",
    "datetime": "2019-05-09T10:44:04Z",
    "channels": {
      "T": 24.42,
      "H": 44.87,
      "C": 1234
    }
  }
}

但事实证明,消息作为一个整体被视为正文

那么为什么这条消息的行为不同呢?需要做什么,告诉 IoT Hub 什么是应用程序属性,什么是不使用 SDK 时的真实主体?

【问题讨论】:

标签: azure-iot-hub


【解决方案1】:

在直接使用MQTT协议的情况下,应用程序和系统属性是主题的一部分,见以下示例:

devices/Device1/messages/events/location=abcd&$.to=deviceABC

Visual Studio 2019 Cloud Explorer 收到的输出遥测消息:

[Monitor D2C Message] [5/9/2019 7:54:40 AM] Message received on partition 2:{"counter":17,"time":"2019-05-09T14:54:40.1984163Z","deviceId":"Device1","windSpeed":9.1991,"temperature":14.88,"humidity":81.66}
Application properties:
  location: abcd
System properties:
  iothub-connection-device-id: Device1
  iothub-connection-auth-method: {"scope":"device","type":"sas","issuer":"iothub","acceptingIpFilterRule":null}
  iothub-connection-auth-generation-id: 636550937738557556
  iothub-enqueuedtime: 5/9/2019 2:54:38 PM
  iothub-message-source: Telemetry
  x-opt-sequence-number: 13069
  x-opt-offset: 5989280
  x-opt-enqueued-time: 5/9/2019 2:54:38 PM
  EnqueuedTimeUtc: 5/9/2019 2:54:38 PM
  SequenceNumber: 13069
  Offset: 5989280
  to: deviceABC

在使用 Https 等无连接协议的情况下,应用程序和系统属性是 headers 的一部分。以下示例显示了 MQTT 协议的上述属性:

iothub-app-location:abcd
iothub-to:deviceABC

【讨论】:

  • 感谢您的回答。事实证明,客户使用 Node Red 进行设备实施。但显然物联网中心的节点不支持应用程序属性。我接受了你的回答,因为它引导我进入了正确的方向。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-18
  • 1970-01-01
相关资源
最近更新 更多