Homewrecker
Homewrecker

Reputation: 1106

Get a list of messages sent by IoT device

I am looking for a way to see which device has sent which message in Azure. Via "IoT-hub" we can get a list of the devices but I cannot seem to find a way to correlate the messages to the devices.

Doe anyone have any idea? Thanks in advance.

Regards

Upvotes: 0

Views: 1508

Answers (2)

Roman Kiss
Roman Kiss

Reputation: 8265

Have a look at this document for more details about the message format. The device id is a part of the IoT Hub message system properties such as ConnectionDeviceId.

The following example shows a query of the ASA job. You can see how to get the device id from the telemetry message via the stream pipeline:

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

another example is for Azure EventHubTrigger Function (AF). The telemetry message from the stream pipeline (events endpoint) is serialized into the EventData object and pushed to the 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}");

     // ...
  }

Upvotes: 1

Dominic Betts
Dominic Betts

Reputation: 2331

When a message arrives in IoT Hub, the hub adds a number of system properties to the message, including the deviceid of the device that sent the message - for more information about message properties, see https://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-messages-construct

If you're using C# to read the messages, see the ConnectionDeviceId property of this class: https://learn.microsoft.com/en-us/dotnet/api/microsoft.azure.devices.messagesystempropertynames?view=azure-dotnet

Upvotes: 0

Related Questions