我正在寻找一种方法来查看哪个设备已在Azure中发送了哪条消息。 通过" IoT-hub"我们可以获得设备列表,但我似乎无法找到将消息与设备关联的方法。
人们有什么想法吗? 提前谢谢。此致
答案 0 :(得分:1)
当邮件到达IoT Hub时,集线器会在邮件中添加许多系统属性,包括发送邮件的设备的 deviceid - 有关邮件属性的详细信息,请参阅{ {3}}
如果您使用C#阅读邮件,请参阅此类的 ConnectionDeviceId 属性:https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-messages-construct
答案 1 :(得分:1)
查看this文档,了解有关邮件格式的更多详细信息。 设备ID是IoT Hub消息系统属性的一部分,例如 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}");
// ...
}
答案 2 :(得分:0)
您可以尝试Azure IoT Toolkit扩展VS代码来监控发送到Azure IoT Hub的所有邮件。您可以看到哪个设备已向Azure IoT Hub发送了哪些消息。
您还可以参考此blog post,了解有关如何使用此扩展程序监控邮件的更多详细信息。