public static async Task SendEvent(DeviceClient deviceClient, SimulatedSensor sensor) { var serializer = new DataContractJsonSerializer(typeof(CustomTelemetryMessage)); var curIteration = 0; var getRandomSensorReading = CreateGetRandomSensorReading(sensor.DataType.ToString(), curIteration); var telemetryMessage = new CustomTelemetryMessage() { SensorValue = getRandomSensorReading(), }; using (var stream = new MemoryStream()) { serializer.WriteObject(stream, telemetryMessage); var byteArray = stream.ToArray(); Message eventMessage = new Message(byteArray); eventMessage.Properties.Add("DigitalTwins-Telemetry", "1.0"); eventMessage.Properties.Add("DigitalTwins-SensorHardwareId", $"{sensor.HardwareId}"); eventMessage.Properties.Add("CreationTimeUtc", DateTime.UtcNow.ToString("o")); eventMessage.Properties.Add("x-ms-client-request-id", Guid.NewGuid().ToString()); await FeedbackHelper.Channel.SendMessageAsync( $"\t{DateTime.UtcNow.ToLocalTime()}> Sending message: {Encoding.UTF8.GetString(eventMessage.GetBytes())} " + $"Properties: {{ {eventMessage.Properties.Aggregate(new StringBuilder(), (sb, x) => sb.Append($"'{x.Key}': '{x.Value}',"), sb => sb.ToString())} }}" , MessageType.Info); await deviceClient.SendEventAsync(eventMessage); } }
static async Task SendEvent(DeviceClient deviceClient) { var serializer = new DataContractJsonSerializer(typeof(CustomTelemetryMessage)); var sensors = settings.GetSection("Sensors").Get <Sensor[]>(); var delayPerMessageSend = int.Parse(settings["MessageIntervalInSeconds"]); var countOfSendsPerIteration = sensors.Length; var maxSecondsToRun = 15 * 60; var maxIterations = maxSecondsToRun / countOfSendsPerIteration / delayPerMessageSend; var curIteration = 0; do { foreach (var sensor in sensors) { var getRandomSensorReading = CreateGetRandomSensorReading(sensor.DataType, curIteration); var telemetryMessage = new CustomTelemetryMessage() { SensorValue = getRandomSensorReading(), }; using (var stream = new MemoryStream()) { serializer.WriteObject(stream, telemetryMessage); var byteArray = stream.ToArray(); Message eventMessage = new Message(byteArray); eventMessage.Properties.Add("DigitalTwins-Telemetry", "1.0"); eventMessage.Properties.Add("DigitalTwins-SensorHardwareId", $"{sensor.HardwareId}"); eventMessage.Properties.Add("CreationTimeUtc", DateTime.UtcNow.ToString("o")); eventMessage.Properties.Add("x-ms-client-request-id", Guid.NewGuid().ToString()); Console.WriteLine($"\t{DateTime.UtcNow.ToLocalTime()}> Sending message: {Encoding.UTF8.GetString(eventMessage.GetBytes())} Properties: {{ {eventMessage.Properties.Aggregate(new StringBuilder(), (sb, x) => sb.Append($"'{x.Key}': '{x.Value}',"), sb => sb.ToString())} }}"); await deviceClient.SendEventAsync(eventMessage); } await Task.Delay(TimeSpan.FromSeconds(delayPerMessageSend)); } await Task.Delay(TimeSpan.FromSeconds(delayPerMessageSend)); } while (++curIteration < maxIterations); Console.WriteLine($"Finished sending {curIteration} events (per sensor type)"); }