How to do it...

We will create a simulator application to ingest messages using AMQP protocol:

  1. Create a device simulator to send a message to IoT Hub:
deviceClient = DeviceClient.CreateFromConnectionString("HostName=IoTHubCookBook.azure-devices.net;DeviceId=myFirstDevice;SharedAccessKey=XXXXXXXXXXXXX", TransportType.Amqp);

new DeviceSimulator().SendDeviceToCloudMessagesAsync(deviceClient, "myFirstDevice");
  1. Send IoT Hub messages using AMQP:
public async void SendDeviceToCloudMessagesAsync(DeviceClient deviceClient1, string deviceId) public async void SendDeviceToCloudMessagesAsync(DeviceClient deviceClient1, string deviceId)        {
double avgWindSpeed = 10; // m/s
Random rand = new Random();
double currentWindSpeed = 0;
int i = 0;
while (i<10)
{
currentWindSpeed = avgWindSpeed + rand.NextDouble() * 4 - 2;
var telemetryDataPoint = new
{
deviceId = deviceId,
windSpeed = currentWindSpeed,
highTemp = 72.3,
lowtemp = 11.2,
latitude = "17.5122560",
longitude = "70.7760470"
};
var messageString = JsonConvert.SerializeObject(telemetryDataPoint);
var message = new Message(Encoding.ASCII.GetBytes(messageString));
await deviceClient1.SendEventAsync(message);
i += 1;
await Task.Delay(1000);
}
}
  1. Process the message ingested into IoT Hub:
readonly string iotHubD2cEndpoint = "messages/events";readonly string iotHubD2cEndpoint = "messages/events";
eventHubClient = EventHubClient.CreateFromConnectionString(AzureIoTHub.GetConnectionString(), iotHubD2cEndpoint);
var d2cPartitions = eventHubClient.GetRuntimeInformation().PartitionIds;
String data = "";
foreach (string partition in d2cPartitions)
{
var result = ReceiveMessagesFromDeviceAsync(partition);
data = result.Result.ToString();
if (data != "")
return data;
}
private async static Task<String> ReceiveMessagesFromDeviceAsync(string partition)
{
var eventHubReceiver = eventHubClient.GetDefaultConsumerGroup().CreateReceiver(partition, DateTime.Now);
while (true)
{
EventData eventData = await eventHubReceiver.ReceiveAsync();
if (eventData == null) continue;
var data = Encoding.UTF8.GetString(eventData.GetBytes());
return data;
}
}
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.218.196.182