获取物联网设备发送的消息列表

Get a list of messages sent by IoT device

我正在寻找一种方法来查看哪个设备在 Azure 中发送了哪条消息。 通过 "IoT-hub" 我们可以获得设备列表,但我似乎找不到将消息与设备相关联的方法。

有人知道吗? 提前致谢。

此致

当消息到达 IoT 中心时,该中心会向消息添加一些系统属性,包括发送消息的设备的 deviceid - 有关更多信息消息属性,请参阅 https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-messages-construct

如果您使用 C# 阅读消息,请参阅此 class 的 ConnectionDeviceId 属性:https://docs.microsoft.com/en-us/dotnet/api/microsoft.azure.devices.messagesystempropertynames?view=azure-dotnet

查看 this 文档以了解有关消息格式的更多详细信息。 设备 ID 是 IoT 中心消息系统属性的一部分,例如 ConnectionDeviceId

以下示例显示了 ASA 作业的查询。您可以看到如何通过流管道从遥测消息中获取设备 ID:

WITH subquery as (
  SELECT 
    System.Timestamp as time,
    counter,
    temperature, 
    humidity,
    EventProcessedUtcTime,
    IoTHub.ConnectionDeviceId as deviceId,
    IoTHub.MessageId as messageId
  FROM iot Timestamp by time
)

SELECT
    *
INTO
    outBlob
FROM
    subquery

另一个例子是 Azure EventHubTrigger 函数 (AF)。来自流管道(事件端点)的遥测消息被序列化为 EventData 对象并推送到 AF:

  public static async Task Run(EventData ed, TraceWriter log)
  {  
     log.Info($"Label = {ed.SystemProperties["iothub-message-source"]} -{ed.SystemProperties["iothub-connection-device-id"]}/{ed.SequenceNumber}");

     // ...
  }

您可以尝试 Azure IoT Toolkit VS Code 扩展来监控发送到 Azure IoT 中心的所有消息。您可以看到哪个设备向 Azure IoT 中心发送了什么消息。

您还可以参考此 blog post 以了解有关如何使用此扩展程序监视消息的更多详细信息。