public async Task SimulateTemperatureSensor(int messageDelay, int n) { var deviceSimulator = DeviceTelemetryFactory.CreateTemperatureSimulator("none", "", true); int messageCount = 0; foreach (var temperature in deviceSimulator.Measure()) { var dataPoint = new { Temperature = temperature }; var messageString = JsonSerializer.Serialize(dataPoint); await Send(messageString, null); if (n > 0) { messageCount = messageCount + 1; if (messageCount >= n) { Console.WriteLine("All messages sent"); break; } } await Task.Delay(messageDelay); } await Task.CompletedTask; }
public async Task SimulateTemperatureSensor(int messageDelay, int n, string pattern, string patternPeriod) { var deviceSimulator = DeviceTelemetryFactory.CreateTemperatureSimulator(pattern.ToLower(), patternPeriod, true); DeviceClient dc = CreateDeviceClient(TransportType.Mqtt); int messageCount = 0; foreach (var temperature in deviceSimulator.Measure()) { var dataPoint = new { Temperature = temperature }; var messageString = JsonSerializer.Serialize(dataPoint); await Device2CloudMessage(messageString, dc, "UTF-8", "application/json"); if (n > 0) { messageCount = messageCount + 1; if (messageCount >= n) { Console.WriteLine("All messages sent"); break; } } await Task.Delay(messageDelay); } await Task.CompletedTask; }
public async Task SimulateTemperatureSensorPair(int messageDelay, int n) { var deviceSimulator = DeviceTelemetryFactory.CreateTemperatureSimulator("none", "", true); var tempEnumerator = deviceSimulator.Measure().GetEnumerator(); DeviceClient dc = CreateDeviceClient(TransportType.Mqtt); int messageCount = 0; while (true) { var messageString = CreateSimulatedSensorPairDataPoint(tempEnumerator); await Device2CloudMessage(messageString, dc, "UTF-8", "application/json"); if (n > 0) { messageCount = messageCount + 1; if (messageCount >= n) { Console.WriteLine("All messages sent"); break; } } await Task.Delay(messageDelay); } await Task.CompletedTask; }
public async Task SimulateTemperatureBattery(int messageDelay, int n, string deviceName, int batteryPeriod = 100) { var deviceSimulator = DeviceTelemetryFactory.CreateTemperatureSimulator("none", "", true); int messageCount = 0; int batteryPercent = 100; int batteryCount = 0; foreach (var temperature in deviceSimulator.Measure()) { var dataPoint = new { DeviceId = deviceName, Temperature = temperature }; batteryCount = batteryCount + 1; IDictionary <string, object> properties = null; if (batteryCount % batteryPeriod == 0) { properties = new Dictionary <string, object>(); properties.Add("MessageType", "battery"); var batteryPoint = new { DeviceId = deviceName, Battery = batteryPercent }; var batteryMessageString = JsonSerializer.Serialize(batteryPoint); await Send(batteryMessageString, null, properties); batteryPercent = Math.Max(batteryPercent - 1, 0); if (batteryPercent == 0) { batteryPercent = 100; } } var messageString = JsonSerializer.Serialize(dataPoint); await Send(messageString, null, null); if (n > 0) { messageCount = messageCount + 1; if (messageCount >= n) { Console.WriteLine("All messages sent"); break; } } await Task.Delay(messageDelay); } await Task.CompletedTask; }
public async Task SimulateMultipleTemperatureSensors(string[] deviceContext, int messageDelay, int n, string pattern, string patternPeriod, OutputFormat of) { var deviceSimulators = new IDeviceTelemetrySimulator[deviceContext.Length]; var deviceTemperature = new IEnumerator <double> [deviceContext.Length]; var deviceClients = new DeviceClient[deviceContext.Length]; try { for (int i = 0; i < deviceContext.Length; i++) { deviceSimulators[i] = DeviceTelemetryFactory.CreateTemperatureSimulator(pattern, patternPeriod, true); deviceTemperature[i] = deviceSimulators[i].Measure().GetEnumerator(); var client = CreateDeviceClient(deviceContext[i], TransportType.Mqtt); if (client == null) { Console.WriteLine($"Device context {deviceContext[i]} not found"); return; } deviceClients[i] = client; } int messageCount = 0; if (of == OutputFormat.Csv) { Console.WriteLine("TimeStamp,Sensor,Telemetry"); } while (true) { for (int i = 0; i < deviceContext.Length; i++) { deviceTemperature[i].MoveNext(); var temperature = deviceTemperature[i].Current; var dataPoint = new { Temperature = temperature }; if (of == OutputFormat.Json) { var messageString = JsonSerializer.Serialize(dataPoint); await Device2CloudMessage(messageString, deviceClients[i], "UTF-8", "application/json", deviceContext[i]); } else if (of == OutputFormat.Csv) { var message = string.Format("{0},{1},{2}", DateTime.Now, deviceContext[i], temperature); var dc = deviceClients[i]; await Device2CloudMessage(message, deviceClients[i], "UTF-8", "application/json", null, "{1}"); } } if (n > 0) { messageCount = messageCount + 1; if (messageCount >= n) { Console.WriteLine("All messages sent"); break; } } await Task.Delay(messageDelay); } } finally { // Clean up foreach (var e in deviceTemperature) { e.Dispose(); } } await Task.CompletedTask; }